private WKWebView OnCreateWebView(WKWebView owner, WKWebViewConfiguration configuration, WKNavigationAction action, WKWindowFeatures windowFeatures) { Uri target; if (action?.TargetFrame != null) { target = action?.TargetFrame.Request?.Url?.ToUri(); } else { target = action.Request.Url.ToUri(); } var args = new WebViewNewWindowRequestedEventArgs( referrer: action.SourceFrame?.Request?.Url?.ToUri(), uri: target ); _parentWebView.OnNewWindowRequested(args); if (args.Handled) { return(null); } else { var navigationArgs = new WebViewNavigationStartingEventArgs() { Cancel = false, Uri = target }; _parentWebView.OnNavigationStarting(navigationArgs); if (!navigationArgs.Cancel) { if (UIKit.UIApplication.SharedApplication.CanOpenUrl(target)) { UIKit.UIApplication.SharedApplication.OpenUrl(target); _parentWebView.OnComplete(target, isSuccessful: true, status: WebErrorStatus.Unknown); } else { _parentWebView.OnNavigationFailed(new WebViewNavigationFailedEventArgs() { Uri = target, WebErrorStatus = WebErrorStatus.Unknown }); } } } return(null); }
internal void OnNewWindowRequested(WebViewNewWindowRequestedEventArgs args) { NewWindowRequested?.Invoke(this, args); }