protected virtual void NavigateToLocalAndWaitForFormClose(Uri relativePath, IUriToStreamResolver streamResolver) { PerformActionAndWaitForFormClose(() => { WriteLine("Navigating WebView"); WebView.NavigateToLocalStreamUri(relativePath, streamResolver); }); }
/// <summary> /// Gets called when the monitoring WebView loads an HTML file and /// </summary> /// <param name="sender">The WebView calling this method</param> /// <param name="args">The event arguments</param> /// <exception cref="NotSupportedException">Following protocol is not supported for Hybrid requests</exception> protected virtual void WebViewOnDomContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args) { if (sender != WebView) { return; } if (args.Uri == null) { throw new NotSupportedException( "NavigateToString is not supported when using WebViewHybridBridge class."); } if (args.Uri.Scheme == "ms-local-stream") { PushJavascript(); } else if (args.Uri.Scheme == @"ms-appdata") { if (CustomUriToStreamResolver == null) { CustomUriToStreamResolver = new UriToAppDataResolver(); } sender.NavigateToLocalStreamUri( sender.BuildLocalStreamUri("WebViewHybridBridge", args.Uri.PathAndQuery), BridgeResolver); } else if (args.Uri.Scheme == @"ms-appx-web") { if (CustomUriToStreamResolver == null) { CustomUriToStreamResolver = new UriToAppxResolver(); } sender.NavigateToLocalStreamUri( sender.BuildLocalStreamUri("WebViewHybridBridge", args.Uri.PathAndQuery), BridgeResolver); } else { throw new NotSupportedException( "HTTP navigation is not supported when using WebViewHybridBridge class."); } }
internal void NavigateToLocalStreamUri(Uri relativePath, IUriToStreamResolver streamResolver) { if (relativePath == null) { throw new ArgumentNullException(nameof(relativePath)); } if (relativePath.IsAbsoluteUri) { throw new ArgumentOutOfRangeException(nameof(relativePath), DesignerUI.E_WEBVIEW_INVALID_URI); } if (streamResolver == null) { throw new ArgumentNullException(nameof(streamResolver)); } Windows.Web.IUriToStreamResolver AsWindowsRuntimeUriToStreamResolver(IUriToStreamResolver streamResolverInterop) { // Check to see if the stream resolver is actually a wrapper of a WinRT stream resolver if (streamResolverInterop is Windows.Web.IUriToStreamResolver streamResolverAdapter) { return(streamResolverAdapter); } if (streamResolverInterop is GenericUriToStreamResolver genericAdapter) { return(genericAdapter); } // We have an unwrapped stream resolver return(new GenericUriToStreamResolver(streamResolver)); } var uri = BuildStream(LocalContentIdentifier, UriHelper.UriToString(relativePath)); _webViewControl?.NavigateToLocalStreamUri(uri, AsWindowsRuntimeUriToStreamResolver(streamResolver)); }
/// <inheritdoc /> public void NavigateToLocalStreamUri(Uri relativePath, IUriToStreamResolver streamResolver) => _webViewControl?.NavigateToLocalStreamUri(relativePath, streamResolver);
public GenericUriToStreamResolver(IUriToStreamResolver streamResolver) { _streamResolver = streamResolver ?? throw new ArgumentNullException(nameof(streamResolver)); }
public RootForm(IUriToStreamResolver streamResolver) { InitializeComponent(); StreamResolver = streamResolver; }
internal void NavigateToLocalStreamUri(Uri source, IUriToStreamResolver streamResolver) { _webViewControl?.NavigateToLocalStreamUri(source, streamResolver); }