private string WebErrorStatusToString(WEBVIEW2_WEB_ERROR_STATUS status) { switch (status) { case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_UNKNOWN: return("UNKNOWN"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_COMMON_NAME_IS_INCORRECT: return("CERTIFICATE_COMMON_NAME_IS_INCORRECT"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_EXPIRED: return("CERTIFICATE_EXPIRE"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CLIENT_CERTIFICATE_CONTAINS_ERRORS: return("CLIENT_CERTIFICATE_CONTAINS_ERRORS"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_REVOKED: return("CERTIFICATE_REVOKED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CERTIFICATE_IS_INVALID: return("CERTIFICATE_IS_INVALID"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_SERVER_UNREACHABLE: return("SERVER_UNREACHABLE"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_TIMEOUT: return("TIMEOUT"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_ERROR_HTTP_INVALID_SERVER_RESPONSE: return("ERROR_HTTP_INVALID_SERVER_RESPONSE"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED: return("CONNECTION_ABORTED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CONNECTION_RESET: return("STATUS_CONNECTION_RESET"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED: return("DISCONNECTED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_CANNOT_CONNECT: return("CANNOT_CONNECT"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_HOST_NAME_NOT_RESOLVED: return("HOST_NAME_NOT_RESOLVED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_OPERATION_CANCELED: return("OPERATION_CANCELED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_REDIRECT_FAILED: return("REDIRECT_FAILED"); case WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_UNEXPECTED_ERROR: return("UNEXPECTED_ERROR"); } return("ERROR"); }
private void WebView2NavigationCompleted(object sender, NavigationCompletedEventArgs e) { bool isSuccess = e.IsSuccess; WEBVIEW2_WEB_ERROR_STATUS webErrorStatus = e.WebErrorStatus; string message = "{ \"kind\": \"event\", \"name\": \"NavigationCompleted\", \"args\": {"; message += "\"isSuccess\": " + BoolToString(isSuccess) + ", " + "\"webErrorStatus\": " + EncodeQuote(WebErrorStatusToString(webErrorStatus)) + " " + "}" + WebViewPropertiesToJsonString(_eventSourceWebView2) + "}"; PostEventMessage(message); }
/// <summary> /// Register a handler for the NavigationCompleted event. /// Check whether the navigation succeeded, and if not, do something. /// Also update the Back, Forward, and Cancel buttons. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WebView2NavigationCompleted(object sender, Wrapper.NavigationCompletedEventArgs e) { if (!e.IsSuccess) { WEBVIEW2_WEB_ERROR_STATUS webErrorStatus = e.WebErrorStatus; if (webErrorStatus == WEBVIEW2_WEB_ERROR_STATUS.WEBVIEW2_WEB_ERROR_STATUS_DISCONNECTED) { // Do something here if you want to handle a specific error case. // In most cases this isn't necessary, because the WebView will // display its own error page automatically. } } _toolbar.CanGoBack = _webView2.CanGoBack; _toolbar.CanGoForward = _webView2.CanGoForward; _toolbar.CanCancel = false; }