@@ -215,6 +215,7 @@ import com.duckduckgo.browser.api.autocomplete.AutoComplete.AutoCompleteSuggesti
215
215
import com.duckduckgo.browser.api.autocomplete.AutoComplete.AutoCompleteSuggestion.AutoCompleteUrlSuggestion.AutoCompleteSwitchToTabSuggestion
216
216
import com.duckduckgo.browser.api.autocomplete.AutoCompleteSettings
217
217
import com.duckduckgo.browser.api.brokensite.BrokenSiteContext
218
+ import com.duckduckgo.browser.api.webviewcompat.WebViewCompatWrapper
218
219
import com.duckduckgo.browser.ui.omnibar.OmnibarPosition.BOTTOM
219
220
import com.duckduckgo.browser.ui.omnibar.OmnibarPosition.TOP
220
221
import com.duckduckgo.common.test.CoroutineTestRule
@@ -253,6 +254,7 @@ import com.duckduckgo.feature.toggles.api.Toggle
253
254
import com.duckduckgo.feature.toggles.api.Toggle.State
254
255
import com.duckduckgo.history.api.HistoryEntry.VisitedPage
255
256
import com.duckduckgo.history.api.NavigationHistory
257
+ import com.duckduckgo.js.messaging.api.AddDocumentStartJavaScriptPlugin
256
258
import com.duckduckgo.js.messaging.api.JsCallbackData
257
259
import com.duckduckgo.malicioussiteprotection.api.MaliciousSiteProtection.Feed
258
260
import com.duckduckgo.malicioussiteprotection.api.MaliciousSiteProtection.Feed.MALWARE
@@ -600,6 +602,12 @@ class BrowserTabViewModelTest {
600
602
601
603
private var isFullSiteAddressEnabled = true
602
604
605
+ private val mockWebViewCompatWrapper: WebViewCompatWrapper = mock()
606
+
607
+ private val mockWebView: WebView = mock()
608
+
609
+ private val fakeAddDocumentStartJavaScriptPlugins = FakeAddDocumentStartJavaScriptPluginPoint ()
610
+
603
611
@Before
604
612
fun before () =
605
613
runTest {
@@ -823,6 +831,8 @@ class BrowserTabViewModelTest {
823
831
nonHttpAppLinkChecker = nonHttpAppLinkChecker,
824
832
externalIntentProcessingState = mockExternalIntentProcessingState,
825
833
vpnMenuStateProvider = mockVpnMenuStateProvider,
834
+ webViewCompatWrapper = mockWebViewCompatWrapper,
835
+ addDocumentStartJavascriptPlugins = fakeAddDocumentStartJavaScriptPlugins,
826
836
)
827
837
828
838
testee.loadData(" abc" , null , false , false )
@@ -3594,6 +3604,7 @@ class BrowserTabViewModelTest {
3594
3604
val enabled = false
3595
3605
3596
3606
testee.requestFileDownload(
3607
+ webView = mockWebView,
3597
3608
url = blobUrl,
3598
3609
contentDisposition = null ,
3599
3610
mimeType = mime,
@@ -3614,6 +3625,7 @@ class BrowserTabViewModelTest {
3614
3625
val enabled = true
3615
3626
3616
3627
testee.requestFileDownload(
3628
+ webView = mockWebView,
3617
3629
url = blobUrl,
3618
3630
contentDisposition = null ,
3619
3631
mimeType = mime,
@@ -3630,6 +3642,7 @@ class BrowserTabViewModelTest {
3630
3642
val mime = " application/plain"
3631
3643
3632
3644
testee.requestFileDownload(
3645
+ webView = mockWebView,
3633
3646
url = normalUrl,
3634
3647
contentDisposition = null ,
3635
3648
mimeType = mime,
@@ -7425,6 +7438,15 @@ class BrowserTabViewModelTest {
7425
7438
assertNull(" SERP logo should be cleared when navigating to non-DuckDuckGo URL" , omnibarViewState().serpLogo)
7426
7439
}
7427
7440
7441
+ @Test
7442
+ fun whenConfigureWebViewThenCallAddDocumentStartJavaScript () {
7443
+ assertEquals(0 , fakeAddDocumentStartJavaScriptPlugins.plugin.countInitted)
7444
+
7445
+ testee.addDocumentStartJavaScript(mockWebView)
7446
+
7447
+ assertEquals(1 , fakeAddDocumentStartJavaScriptPlugins.plugin.countInitted)
7448
+ }
7449
+
7428
7450
private fun aCredential (): LoginCredentials = LoginCredentials (domain = null , username = null , password = null )
7429
7451
7430
7452
private fun assertShowHistoryCommandSent (expectedStackSize : Int ) {
@@ -7711,4 +7733,19 @@ class BrowserTabViewModelTest {
7711
7733
) : CustomHeadersProvider {
7712
7734
override fun getCustomHeaders (url : String ): Map <String , String > = headers
7713
7735
}
7736
+
7737
+ class FakeAddDocumentStartJavaScriptPlugin : AddDocumentStartJavaScriptPlugin {
7738
+ var countInitted = 0
7739
+ private set
7740
+
7741
+ override suspend fun addDocumentStartJavaScript (webView : WebView ) {
7742
+ countInitted++
7743
+ }
7744
+ }
7745
+
7746
+ class FakeAddDocumentStartJavaScriptPluginPoint : PluginPoint <AddDocumentStartJavaScriptPlugin > {
7747
+ val plugin = FakeAddDocumentStartJavaScriptPlugin ()
7748
+
7749
+ override fun getPlugins () = listOf (plugin)
7750
+ }
7714
7751
}
0 commit comments