Skip to content

Commit 4b32ad0

Browse files
authored
Update CSS JsMessageHandler signature (#6560)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1203581873609357/task/1211022776812662?focus=true ### Description Updates the signature of the JsMessageHelper.process function to receive an instance of `JsMessaging` which will allow handlers to send a response directly without going through `JsMessageCallback` ### Steps to test this PR - [x] QA optional - [x] Although no changes to the message handler implementations were made, you can verify that Subscriptions, Identity Theft Restoration, DuckPlayer and other features that use Web / Native communication are still working.
1 parent a5d2eab commit 4b32ad0

File tree

17 files changed

+39
-28
lines changed

17 files changed

+39
-28
lines changed

breakage-reporting/breakage-reporting-impl/src/main/java/com/duckduckgo/breakagereporting/impl/BreakageContentScopeJsMessageHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.duckduckgo.di.scopes.ActivityScope
2121
import com.duckduckgo.js.messaging.api.JsMessage
2222
import com.duckduckgo.js.messaging.api.JsMessageCallback
2323
import com.duckduckgo.js.messaging.api.JsMessageHandler
24+
import com.duckduckgo.js.messaging.api.JsMessaging
2425
import com.squareup.anvil.annotations.ContributesMultibinding
2526
import javax.inject.Inject
2627

@@ -30,7 +31,7 @@ class BreakageContentScopeJsMessageHandler @Inject constructor() : ContentScopeJ
3031
override fun getJsMessageHandler(): JsMessageHandler = object : JsMessageHandler {
3132
override fun process(
3233
jsMessage: JsMessage,
33-
secret: String,
34+
jsMessaging: JsMessaging,
3435
jsMessageCallback: JsMessageCallback?,
3536
) {
3637
jsMessageCallback?.process(featureName, jsMessage.method, jsMessage.id, jsMessage.params)

breakage-reporting/breakage-reporting-impl/src/test/java/com/duckduckgo/breakagereporting/impl/BreakageContentScopeJsMessageHandlerTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import kotlinx.coroutines.test.runTest
66
import org.json.JSONObject
77
import org.junit.Assert.*
88
import org.junit.Test
9+
import org.mockito.kotlin.mock
910

1011
class BreakageContentScopeJsMessageHandlerTest {
1112
private val handler = BreakageContentScopeJsMessageHandler().getJsMessageHandler()
@@ -20,7 +21,7 @@ class BreakageContentScopeJsMessageHandlerTest {
2021
params = JSONObject(),
2122
)
2223

23-
handler.process(message, "secret", callback)
24+
handler.process(message, mock(), callback)
2425

2526
assertEquals(1, callback.counter)
2627
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class ContentScopeScriptsJsMessaging @Inject constructor(
8282
handlers.getPlugins().map { it.getJsMessageHandler() }.firstOrNull {
8383
it.methods.contains(jsMessage.method) && it.featureName == jsMessage.featureName &&
8484
(it.allowedDomains.isEmpty() || it.allowedDomains.contains(domain))
85-
}?.process(jsMessage, secret, jsMessageCallback)
85+
}?.process(jsMessage, this, jsMessageCallback)
8686
}
8787
}
8888
} catch (e: Exception) {

content-scope-scripts/content-scope-scripts-impl/src/test/java/com/duckduckgo/contentscopescripts/impl/messaging/ContentScopeScriptsJsMessagingTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.duckduckgo.js.messaging.api.JsMessage
2626
import com.duckduckgo.js.messaging.api.JsMessageCallback
2727
import com.duckduckgo.js.messaging.api.JsMessageHandler
2828
import com.duckduckgo.js.messaging.api.JsMessageHelper
29+
import com.duckduckgo.js.messaging.api.JsMessaging
2930
import junit.framework.TestCase.assertEquals
3031
import kotlinx.coroutines.test.runTest
3132
import org.json.JSONObject
@@ -59,7 +60,7 @@ class ContentScopeScriptsJsMessagingTest {
5960
return object : JsMessageHandler {
6061
override fun process(
6162
jsMessage: JsMessage,
62-
secret: String,
63+
jsMessaging: JsMessaging,
6364
jsMessageCallback: JsMessageCallback?,
6465
) {
6566
jsMessageCallback?.process(jsMessage.featureName, jsMessage.method, jsMessage.id, jsMessage.params)

duckchat/duckchat-impl/src/main/java/com/duckduckgo/duckchat/impl/messaging/DuckChatContentScopeJsMessageHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ import com.duckduckgo.di.scopes.AppScope
2222
import com.duckduckgo.js.messaging.api.JsMessage
2323
import com.duckduckgo.js.messaging.api.JsMessageCallback
2424
import com.duckduckgo.js.messaging.api.JsMessageHandler
25+
import com.duckduckgo.js.messaging.api.JsMessaging
2526
import com.squareup.anvil.annotations.ContributesMultibinding
2627
import javax.inject.Inject
2728

2829
@ContributesMultibinding(AppScope::class)
2930
class DuckChatContentScopeJsMessageHandler @Inject constructor() : ContentScopeJsMessageHandlersPlugin {
3031
override fun getJsMessageHandler(): JsMessageHandler = object : JsMessageHandler {
31-
override fun process(jsMessage: JsMessage, secret: String, jsMessageCallback: JsMessageCallback?) {
32+
override fun process(jsMessage: JsMessage, jsMessaging: JsMessaging, jsMessageCallback: JsMessageCallback?) {
3233
jsMessageCallback?.process(featureName, jsMessage.method, jsMessage.id ?: "", jsMessage.params)
3334
}
3435

duckchat/duckchat-impl/src/test/kotlin/com/duckduckgo/duckchat/impl/messaging/DuckChatContentScopeJsMessageHandlerTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.duckduckgo.js.messaging.api.JsMessageCallback
55
import org.json.JSONObject
66
import org.junit.Assert.*
77
import org.junit.Test
8+
import org.mockito.kotlin.mock
89

910
class DuckChatContentScopeJsMessageHandlerTest {
1011
private val handler = DuckChatContentScopeJsMessageHandler().getJsMessageHandler()
@@ -19,7 +20,7 @@ class DuckChatContentScopeJsMessageHandlerTest {
1920
params = JSONObject(),
2021
)
2122

22-
handler.process(message, "secret", callback)
23+
handler.process(message, mock(), callback)
2324

2425
assertEquals(1, callback.counter)
2526
}

duckplayer/duckplayer-impl/src/main/java/com/duckduckgo/duckplayer/impl/DuckPlayerScriptsJsMessaging.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class DuckPlayerScriptsJsMessaging @Inject constructor(
6767
if (this.secret == secret && context == jsMessage.context && isUrlAllowed(url)) {
6868
handlers.firstOrNull {
6969
it.methods.contains(jsMessage.method) && it.featureName == jsMessage.featureName
70-
}?.process(jsMessage, secret, jsMessageCallback)
70+
}?.process(jsMessage, this, jsMessageCallback)
7171
}
7272
}
7373
} catch (e: Exception) {
@@ -116,7 +116,7 @@ class DuckPlayerScriptsJsMessaging @Inject constructor(
116116
}
117117

118118
inner class DuckPlayerPageHandler : JsMessageHandler {
119-
override fun process(jsMessage: JsMessage, secret: String, jsMessageCallback: JsMessageCallback?) {
119+
override fun process(jsMessage: JsMessage, jsMessaging: JsMessaging, jsMessageCallback: JsMessageCallback?) {
120120
jsMessageCallback?.process(featureName, jsMessage.method, jsMessage.id ?: "", jsMessage.params)
121121
}
122122

duckplayer/duckplayer-impl/src/main/java/com/duckduckgo/duckplayer/impl/messaging/DuckPlayerContentScopeJsMessageHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@ import com.duckduckgo.duckplayer.api.YOUTUBE_MOBILE_HOST
2424
import com.duckduckgo.js.messaging.api.JsMessage
2525
import com.duckduckgo.js.messaging.api.JsMessageCallback
2626
import com.duckduckgo.js.messaging.api.JsMessageHandler
27+
import com.duckduckgo.js.messaging.api.JsMessaging
2728
import com.squareup.anvil.annotations.ContributesMultibinding
2829
import javax.inject.Inject
2930

3031
@ContributesMultibinding(AppScope::class)
3132
class DuckPlayerContentScopeJsMessageHandler @Inject constructor() : ContentScopeJsMessageHandlersPlugin {
3233
override fun getJsMessageHandler(): JsMessageHandler = object : JsMessageHandler {
33-
override fun process(jsMessage: JsMessage, secret: String, jsMessageCallback: JsMessageCallback?) {
34+
override fun process(jsMessage: JsMessage, jsMessaging: JsMessaging, jsMessageCallback: JsMessageCallback?) {
3435
jsMessageCallback?.process(featureName, jsMessage.method, jsMessage.id ?: "", jsMessage.params)
3536
}
3637

duckplayer/duckplayer-impl/src/test/kotlin/com/duckduckgo/duckplayer/impl/messaging/DuckPlayerContentScopeJsMessageHandlerTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.duckduckgo.js.messaging.api.JsMessageCallback
55
import org.json.JSONObject
66
import org.junit.Assert.*
77
import org.junit.Test
8+
import org.mockito.kotlin.mock
89

910
class DuckPlayerContentScopeJsMessageHandlerTest {
1011
private val handler = DuckPlayerContentScopeJsMessageHandler().getJsMessageHandler()
@@ -19,7 +20,7 @@ class DuckPlayerContentScopeJsMessageHandlerTest {
1920
params = JSONObject(),
2021
)
2122

22-
handler.process(message, "secret", callback)
23+
handler.process(message, mock(), callback)
2324

2425
assertEquals(1, callback.counter)
2526
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ interface JsMessageHandler {
8888
* This method processes a [JsMessage] and can return a JsRequestResponse to reply to the message if needed
8989
* @return `JsRequestResponse` or `null`
9090
*/
91-
fun process(jsMessage: JsMessage, secret: String, jsMessageCallback: JsMessageCallback?)
91+
fun process(jsMessage: JsMessage, jsMessaging: JsMessaging, jsMessageCallback: JsMessageCallback?)
9292

9393
/**
9494
* List of domains where we can process the message

0 commit comments

Comments
 (0)