user2903089
user2903089

Reputation: 313

BlazorWebView webview2 protocol event handle not working and Iframes

I am running a client side blazor wpf hybrid with a BlazorWebView control. I need to hook into the result when I load into an iframe, technically it loads from disk a wasm that I need to inject some headers for. However, my WebView2_FetchRequestPaused event is not getting trigged at all. The setup for the event seems to work fine. Please, does anyone have any ideas how I can get it to trigger, or another way of injecting the headers. In the network of the chrome debugger pane I see loading from url's like "https://0.0.0.0/js/fieldItemsScripts.js" and I need to inject into the result of all calls to https://0.0.0.0/* and add some extra headers.

private async void OnCoreWebView2InitializationCompleted (object? sender, CoreWebView2InitializationCompletedEventArgs e)
 {
     if (sender != null && e.IsSuccess)
     {
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);   // have to have a filter
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceRequested += WebView_WebResourceRequested;
         //(sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.WebResourceResponseReceived += WebResourceResponseReceived;
         var receiver = (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.GetDevToolsProtocolEventReceiver("Fetch.requestPaused");
         receiver.DevToolsProtocolEventReceived += WebView2_FetchRequestPaused;
         await (sender as Microsoft.Web.WebView2.Wpf.WebView2).CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.enable", "{}");
     }
 }
 private async void WebView2_FetchRequestPaused(object? sender, CoreWebView2DevToolsProtocolEventReceivedEventArgs e)
 {
     if (sender != null)
     {
         var doc = JsonDocument.Parse(e.ParameterObjectAsJson);
         var id = doc.RootElement.GetProperty("requestId");
         string type = doc.RootElement.GetProperty("resourceType").ToString();
         string method = doc.RootElement.GetProperty("request").GetProperty("method").ToString();
         string payload = "{\"requestId\":\"" + id + "\"}";
         if (doc.RootElement.TryGetProperty("headers", out JsonElement headers))
         {
             //
             Console.WriteLine(headers.ToString());
         }
         await MainWebView.WebView.CoreWebView2.CallDevToolsProtocolMethodAsync("Fetch.continueRequest", payload);
     }
 }

Upvotes: 0

Views: 27

Answers (0)

Related Questions