@@ -20,9 +20,11 @@ import android.annotation.SuppressLint
20
20
import android.webkit.WebView
21
21
import androidx.webkit.WebViewCompat
22
22
import androidx.webkit.WebViewFeature
23
+ import com.duckduckgo.common.utils.DispatcherProvider
23
24
import com.duckduckgo.common.utils.plugins.PluginPoint
24
25
import com.duckduckgo.contentscopescripts.api.AdsjsContentScopeJsMessageHandlersPlugin
25
26
import com.duckduckgo.contentscopescripts.api.GlobalContentScopeJsMessageHandlersPlugin
27
+ import com.duckduckgo.contentscopescripts.impl.AdsJsContentScopeScripts
26
28
import com.duckduckgo.di.scopes.ActivityScope
27
29
import com.duckduckgo.js.messaging.api.AdsjsMessaging
28
30
import com.duckduckgo.js.messaging.api.JsMessage
@@ -31,6 +33,7 @@ import com.squareup.anvil.annotations.ContributesBinding
31
33
import com.squareup.moshi.Moshi
32
34
import javax.inject.Inject
33
35
import javax.inject.Named
36
+ import kotlinx.coroutines.withContext
34
37
import logcat.LogPriority.ERROR
35
38
import logcat.asLog
36
39
import logcat.logcat
@@ -40,6 +43,8 @@ import logcat.logcat
40
43
class AdsjsContentScopeMessaging @Inject constructor(
41
44
private val handlers : PluginPoint <AdsjsContentScopeJsMessageHandlersPlugin >,
42
45
private val globalHandlers : PluginPoint <GlobalContentScopeJsMessageHandlersPlugin >,
46
+ private val adsJsContentScopeScripts : AdsJsContentScopeScripts ,
47
+ private val dispatcherProvider : DispatcherProvider ,
43
48
) : AdsjsMessaging {
44
49
45
50
private val moshi = Moshi .Builder ().add(JSONObjectAdapter ()).build()
@@ -78,9 +83,9 @@ class AdsjsContentScopeMessaging @Inject constructor(
78
83
}
79
84
}
80
85
81
- // TODO: A/B this, don't register if the feature is not enabled
82
- @SuppressLint( " AddWebMessageListenerUsage " ) // safeAddWebMessageListener belongs to app module
83
- override fun register ( webView : WebView , jsMessageCallback : JsMessageCallback ? ) {
86
+ @SuppressLint( " AddWebMessageListenerUsage " )
87
+ override suspend fun register ( webView : WebView , jsMessageCallback : JsMessageCallback ? ) {
88
+ if (withContext(dispatcherProvider.io()) { ! adsJsContentScopeScripts.isEnabled() }) return
84
89
if (jsMessageCallback == null ) throw Exception (" Callback cannot be null" )
85
90
this .webView = webView
86
91
0 commit comments