예제 #1
0
 protected virtual void NavigateToLocalAndWaitForFormClose(Uri relativePath, IUriToStreamResolver streamResolver)
 {
     PerformActionAndWaitForFormClose(() =>
     {
         WriteLine("Navigating WebView");
         WebView.NavigateToLocalStreamUri(relativePath, streamResolver);
     });
 }
예제 #2
0
 /// <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));
        }
예제 #4
0
 /// <inheritdoc />
 public void NavigateToLocalStreamUri(Uri relativePath, IUriToStreamResolver streamResolver) => _webViewControl?.NavigateToLocalStreamUri(relativePath, streamResolver);
 public GenericUriToStreamResolver(IUriToStreamResolver streamResolver)
 {
     _streamResolver = streamResolver ?? throw new ArgumentNullException(nameof(streamResolver));
 }
예제 #6
0
 public RootForm(IUriToStreamResolver streamResolver)
 {
     InitializeComponent();
     StreamResolver = streamResolver;
 }
예제 #7
0
 internal void NavigateToLocalStreamUri(Uri source, IUriToStreamResolver streamResolver)
 {
     _webViewControl?.NavigateToLocalStreamUri(source, streamResolver);
 }