@@ -48,7 +48,7 @@ interface WebViewCompatTestHelper {
4848 replyProxy : JavaScriptReplyProxy ,
4949 )
5050
51- suspend fun useDedicatedWebMessageListener (): Boolean
51+ suspend fun useBlobDownloadsMessageListener (): Boolean
5252
5353 suspend fun onPageStarted (webView : DuckDuckGoWebView ? )
5454 suspend fun onBrowserMenuButtonPressed (webView : DuckDuckGoWebView ? )
@@ -69,25 +69,23 @@ class RealWebViewCompatTestHelper @Inject constructor(
6969
7070 data class WebViewCompatConfig (
7171 val settings : WebViewCompatFeatureSettings ? ,
72- val dedicatedMessageListener : Boolean ,
72+ val useBlobDownloadsMessageListener : Boolean ,
7373 val replyToInitialPing : Boolean ,
7474 val jsSendsInitialPing : Boolean ,
7575 val jsRepliesToNativeMessages : Boolean ,
7676 )
7777
7878 private var cachedConfig: WebViewCompatConfig ? = null
7979
80- private suspend fun getWebViewCompatConfig (): WebViewCompatConfig ? {
80+ private suspend fun getWebViewCompatConfig (): WebViewCompatConfig {
8181 cachedConfig?.let { return it }
8282
8383 return withContext(dispatchers.io()) {
84- if (! webViewCompatFeature.self().isEnabled()) return @withContext null
85-
8684 WebViewCompatConfig (
8785 settings = webViewCompatFeature.self().getSettings()?.let {
8886 adapter.fromJson(it)
8987 },
90- dedicatedMessageListener = webViewCompatFeature.dedicatedMessageListener ().isEnabled(),
88+ useBlobDownloadsMessageListener = webViewCompatFeature.useBlobDownloadsMessageListener ().isEnabled(),
9189 replyToInitialPing = webViewCompatFeature.replyToInitialPing().isEnabled(),
9290 jsSendsInitialPing = webViewCompatFeature.jsSendsInitialPing().isEnabled(),
9391 jsRepliesToNativeMessages = webViewCompatFeature.jsRepliesToNativeMessages().isEnabled(),
@@ -98,11 +96,12 @@ class RealWebViewCompatTestHelper @Inject constructor(
9896 }
9997
10098 override suspend fun configureWebViewForWebViewCompatTest (webView : DuckDuckGoWebView , isBlobDownloadWebViewFeatureEnabled : Boolean ) {
101- val config = getWebViewCompatConfig() ? : return
99+ val config = getWebViewCompatConfig()
102100
103- val useDedicatedListener = config.dedicatedMessageListener || ! isBlobDownloadWebViewFeatureEnabled
101+ val useDedicatedListener = ! config.useBlobDownloadsMessageListener || ! isBlobDownloadWebViewFeatureEnabled
104102
105103 val script = withContext(dispatchers.io()) {
104+ if (! webViewCompatFeature.self().isEnabled()) return @withContext null
106105 webView.context.resources?.openRawResource(R .raw.webviewcompat_test_script)
107106 ?.bufferedReader().use { it?.readText() }
108107 ?.replace(delay, config.settings?.jsInitialPingDelay?.toString() ? : " 0" )
@@ -131,7 +130,7 @@ class RealWebViewCompatTestHelper @Inject constructor(
131130 @SuppressLint(" PostMessageUsage" , " RequiresFeature" )
132131 private suspend fun postMessage (string : String ) {
133132 withContext(dispatchers.main()) {
134- proxy?.postMessage(" PageStarted " )
133+ proxy?.postMessage(string )
135134 }
136135 }
137136
@@ -142,22 +141,21 @@ class RealWebViewCompatTestHelper @Inject constructor(
142141 ) {
143142 withContext(dispatchers.io()) {
144143 if (message.data?.startsWith(" webViewCompat Ping:" ) != true ) return @withContext
145- getWebViewCompatConfig()?.let { cfg ->
146- proxy = replyProxy
147- if (cfg.replyToInitialPing) {
148- cfg.settings?.initialPingDelay?.takeIf { it > 0 }?.let {
149- delay(it)
150- }
151- withContext(dispatchers.main()) {
152- replyProxy.postMessage(" Pong from Native" )
153- }
144+ val cfg = getWebViewCompatConfig()
145+ proxy = replyProxy
146+ if (cfg.replyToInitialPing) {
147+ cfg.settings?.initialPingDelay?.takeIf { it > 0 }?.let {
148+ delay(it)
149+ }
150+ withContext(dispatchers.main()) {
151+ replyProxy.postMessage(" Pong from Native" )
154152 }
155153 }
156154 }
157155 }
158156
159- override suspend fun useDedicatedWebMessageListener (): Boolean {
160- return withContext(dispatchers.io()) { getWebViewCompatConfig()?.dedicatedMessageListener ? : true }
157+ override suspend fun useBlobDownloadsMessageListener (): Boolean {
158+ return withContext(dispatchers.io()) { getWebViewCompatConfig().useBlobDownloadsMessageListener }
161159 }
162160
163161 @SuppressLint(" PostMessageUsage" , " RequiresFeature" )
0 commit comments