Skip to content

Commit 39c06ad

Browse files
committed
Check flag before registering message listener
1 parent 287be80 commit 39c06ad

File tree

2 files changed

+9
-4
lines changed
  • content-scope-scripts/content-scope-scripts-impl/src/main/java/com/duckduckgo/contentscopescripts/impl/messaging
  • js-messaging/js-messaging-api/src/main/java/com/duckduckgo/js/messaging/api

2 files changed

+9
-4
lines changed

content-scope-scripts/content-scope-scripts-impl/src/main/java/com/duckduckgo/contentscopescripts/impl/messaging/AdsjsContentScopeMessaging.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ import android.annotation.SuppressLint
2020
import android.webkit.WebView
2121
import androidx.webkit.WebViewCompat
2222
import androidx.webkit.WebViewFeature
23+
import com.duckduckgo.common.utils.DispatcherProvider
2324
import com.duckduckgo.common.utils.plugins.PluginPoint
2425
import com.duckduckgo.contentscopescripts.api.AdsjsContentScopeJsMessageHandlersPlugin
2526
import com.duckduckgo.contentscopescripts.api.GlobalContentScopeJsMessageHandlersPlugin
27+
import com.duckduckgo.contentscopescripts.impl.AdsJsContentScopeScripts
2628
import com.duckduckgo.di.scopes.ActivityScope
2729
import com.duckduckgo.js.messaging.api.AdsjsMessaging
2830
import com.duckduckgo.js.messaging.api.JsMessage
@@ -31,6 +33,7 @@ import com.squareup.anvil.annotations.ContributesBinding
3133
import com.squareup.moshi.Moshi
3234
import javax.inject.Inject
3335
import javax.inject.Named
36+
import kotlinx.coroutines.withContext
3437
import logcat.LogPriority.ERROR
3538
import logcat.asLog
3639
import logcat.logcat
@@ -40,6 +43,8 @@ import logcat.logcat
4043
class AdsjsContentScopeMessaging @Inject constructor(
4144
private val handlers: PluginPoint<AdsjsContentScopeJsMessageHandlersPlugin>,
4245
private val globalHandlers: PluginPoint<GlobalContentScopeJsMessageHandlersPlugin>,
46+
private val adsJsContentScopeScripts: AdsJsContentScopeScripts,
47+
private val dispatcherProvider: DispatcherProvider,
4348
) : AdsjsMessaging {
4449

4550
private val moshi = Moshi.Builder().add(JSONObjectAdapter()).build()
@@ -78,9 +83,9 @@ class AdsjsContentScopeMessaging @Inject constructor(
7883
}
7984
}
8085

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
8489
if (jsMessageCallback == null) throw Exception("Callback cannot be null")
8590
this.webView = webView
8691

js-messaging/js-messaging-api/src/main/java/com/duckduckgo/js/messaging/api/AdsjsMessaging.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ interface AdsjsMessaging {
2323
/**
2424
* Method to register the JS interface to the webView instance
2525
*/
26-
fun register(webView: WebView, jsMessageCallback: JsMessageCallback?)
26+
suspend fun register(webView: WebView, jsMessageCallback: JsMessageCallback?)
2727

2828
/**
2929
* Context name

0 commit comments

Comments
 (0)