From 09d36eb3dabaa3237a9f6ab05b638b101fe7b703 Mon Sep 17 00:00:00 2001 From: Cris Barreiro Date: Wed, 8 Oct 2025 10:37:33 +0200 Subject: [PATCH] FF updating script on protections changed --- .../app/browser/BrowserTabViewModelTest.kt | 30 +++++++++++++++++-- .../app/browser/BrowserTabViewModel.kt | 4 +++ .../AndroidBrowserConfigFeature.kt | 3 ++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt b/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt index cf77eee3da7c..21f19a0fdb5f 100644 --- a/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt +++ b/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt @@ -7005,9 +7005,10 @@ class BrowserTabViewModelTest { } @Test - fun whenPrivacyProtectionsUpdatedAndAndUpdateScriptOnPageFinishedEnabledThenAddDocumentStartJavaScript() = + fun whenPrivacyProtectionsUpdatedAndUpdateScriptOnPageFinishedEnabledAndUpdateScriptOnProtectionsChangedEnabledThenAddDocumentStartJavaScript() = runTest { fakeAndroidConfigBrowserFeature.updateScriptOnPageFinished().setRawStoredState(State(true)) + fakeAndroidConfigBrowserFeature.updateScriptOnProtectionsChanged().setRawStoredState(State(true)) testee.privacyProtectionsUpdated(mockWebView) @@ -7016,9 +7017,22 @@ class BrowserTabViewModelTest { } @Test - fun whenPrivacyProtectionsUpdatedAndAndUpdateScriptOnPageFinishedDisabledThenAddDocumentStartJavaScriptOnlyOnCSS() = + fun whenPrivacyProtectionsUpdatedAndUpdateScriptOnPageFinishedTrueAndUpdateScriptOnProtectionsChangedFalseThenNotAddDocumentStartJavaScript() = + runTest { + fakeAndroidConfigBrowserFeature.updateScriptOnPageFinished().setRawStoredState(State(true)) + fakeAndroidConfigBrowserFeature.updateScriptOnProtectionsChanged().setRawStoredState(State(false)) + + testee.privacyProtectionsUpdated(mockWebView) + + assertEquals(0, fakeAddDocumentStartJavaScriptPlugins.cssPlugin.countInitted) + assertEquals(0, fakeAddDocumentStartJavaScriptPlugins.otherPlugin.countInitted) + } + + @Test + fun whenPrivacyProtectionsUpdatedAndUpdateScriptOnPageFinishedDisabledThenAddDocumentStartJavaScriptOnlyOnCSS() = runTest { fakeAndroidConfigBrowserFeature.updateScriptOnPageFinished().setRawStoredState(State(false)) + fakeAndroidConfigBrowserFeature.updateScriptOnProtectionsChanged().setRawStoredState(State(true)) testee.privacyProtectionsUpdated(mockWebView) @@ -7026,6 +7040,18 @@ class BrowserTabViewModelTest { assertEquals(0, fakeAddDocumentStartJavaScriptPlugins.otherPlugin.countInitted) } + @Test + fun whenPrivacyProtectionsUpdatedAndUpdateScriptOnPageFinishedFalseAndUpdateScriptOnProtectionsChangedFalseThenNotAddDocumentStartJavaScript() = + runTest { + fakeAndroidConfigBrowserFeature.updateScriptOnPageFinished().setRawStoredState(State(false)) + fakeAndroidConfigBrowserFeature.updateScriptOnProtectionsChanged().setRawStoredState(State(false)) + + testee.privacyProtectionsUpdated(mockWebView) + + assertEquals(0, fakeAddDocumentStartJavaScriptPlugins.cssPlugin.countInitted) + assertEquals(0, fakeAddDocumentStartJavaScriptPlugins.otherPlugin.countInitted) + } + @Test fun whenCtaShownThenFireInContextDialogShownPixel() = runTest { diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt index 4daa44d8f5f1..1df94a6006f7 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt @@ -4257,6 +4257,10 @@ class BrowserTabViewModel @Inject constructor( } suspend fun privacyProtectionsUpdated(webView: WebView) { + if (withContext(dispatchers.io()) { !androidBrowserConfig.updateScriptOnProtectionsChanged().isEnabled() }) { + return + } + if (withContext(dispatchers.io()) { !androidBrowserConfig.updateScriptOnPageFinished().isEnabled() }) { addDocumentStartJavascriptPlugins .getPlugins() diff --git a/app/src/main/java/com/duckduckgo/app/pixels/remoteconfig/AndroidBrowserConfigFeature.kt b/app/src/main/java/com/duckduckgo/app/pixels/remoteconfig/AndroidBrowserConfigFeature.kt index b500f0b25de6..50984d7def1d 100644 --- a/app/src/main/java/com/duckduckgo/app/pixels/remoteconfig/AndroidBrowserConfigFeature.kt +++ b/app/src/main/java/com/duckduckgo/app/pixels/remoteconfig/AndroidBrowserConfigFeature.kt @@ -191,4 +191,7 @@ interface AndroidBrowserConfigFeature { @Toggle.DefaultValue(TRUE) fun updateScriptOnPageFinished(): Toggle + + @Toggle.DefaultValue(TRUE) + fun updateScriptOnProtectionsChanged(): Toggle }