From ebf0b105a3323a643866f8fe87aba445bb79dbb4 Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Wed, 8 May 2024 13:53:09 +0200 Subject: [PATCH] feat: Add ResolveServiceWorkerRequests preference (#1696) * feat: Add ResolveServiceWorkerRequests preference * Change default to true --- .../apache/cordova/engine/SystemWebViewClient.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/framework/src/org/apache/cordova/engine/SystemWebViewClient.java b/framework/src/org/apache/cordova/engine/SystemWebViewClient.java index 9f057182..fd719f09 100755 --- a/framework/src/org/apache/cordova/engine/SystemWebViewClient.java +++ b/framework/src/org/apache/cordova/engine/SystemWebViewClient.java @@ -29,6 +29,8 @@ import android.webkit.ClientCertRequest; import android.webkit.HttpAuthHandler; import android.webkit.MimeTypeMap; import android.webkit.RenderProcessGoneDetail; +import android.webkit.ServiceWorkerClient; +import android.webkit.ServiceWorkerController; import android.webkit.SslErrorHandler; import android.webkit.WebResourceRequest; import android.webkit.WebResourceResponse; @@ -116,6 +118,18 @@ public class SystemWebViewClient extends WebViewClient { }); this.assetLoader = assetLoaderBuilder.build(); + boolean setAsServiceWorkerClient = parentEngine.preferences.getBoolean("ResolveServiceWorkerRequests", true); + ServiceWorkerController controller = null; + + if (setAsServiceWorkerClient) { + controller = ServiceWorkerController.getInstance(); + controller.setServiceWorkerClient(new ServiceWorkerClient(){ + @Override + public WebResourceResponse shouldInterceptRequest(WebResourceRequest request) { + return assetLoader.shouldInterceptRequest(request.getUrl()); + } + }); + } } /**