17
17
package com.duckduckgo.contentscopescripts.impl.messaging
18
18
19
19
import androidx.test.ext.junit.runners.AndroidJUnit4
20
+ import androidx.webkit.JavaScriptReplyProxy
20
21
import androidx.webkit.WebViewCompat.WebMessageListener
21
22
import com.duckduckgo.common.test.CoroutineTestRule
22
23
import com.duckduckgo.common.utils.plugins.PluginPoint
@@ -25,8 +26,8 @@ import com.duckduckgo.contentscopescripts.api.GlobalJsMessageHandler
25
26
import com.duckduckgo.contentscopescripts.api.WebCompatContentScopeJsMessageHandlersPlugin
26
27
import com.duckduckgo.contentscopescripts.impl.AdsJsContentScopeScripts
27
28
import com.duckduckgo.js.messaging.api.JsMessage
28
- import com.duckduckgo.js.messaging.api.JsMessageCallback
29
29
import com.duckduckgo.js.messaging.api.WebCompatMessageHandler
30
+ import com.duckduckgo.js.messaging.api.WebViewCompatMessageCallback
30
31
import junit.framework.TestCase.assertEquals
31
32
import junit.framework.TestCase.assertNull
32
33
import kotlinx.coroutines.test.runTest
@@ -44,6 +45,7 @@ class WebCompatMessagingPluginTest {
44
45
45
46
private val adsJsContentScopeScripts: AdsJsContentScopeScripts = mock()
46
47
private val handlers: PluginPoint <WebCompatContentScopeJsMessageHandlersPlugin > = FakePluginPoint ()
48
+ private val mockReplyProxy: JavaScriptReplyProxy = mock()
47
49
private val globalHandlers: PluginPoint <GlobalContentScopeJsMessageHandlersPlugin > = FakeGlobalHandlersPluginPoint ()
48
50
private lateinit var testee: WebCompatMessagingPlugin
49
51
@@ -57,9 +59,16 @@ class WebCompatMessagingPluginTest {
57
59
return object : WebCompatMessageHandler {
58
60
override fun process (
59
61
jsMessage : JsMessage ,
60
- jsMessageCallback : JsMessageCallback ? ,
62
+ jsMessageCallback : WebViewCompatMessageCallback ? ,
63
+ onResponse : (JSONObject ) -> Unit ,
61
64
) {
62
- jsMessageCallback?.process(jsMessage.featureName, jsMessage.method, jsMessage.id, jsMessage.params)
65
+ jsMessageCallback?.process(
66
+ jsMessage.featureName,
67
+ jsMessage.method,
68
+ jsMessage.id,
69
+ jsMessage.params,
70
+ onResponse,
71
+ )
63
72
}
64
73
65
74
override val featureName: String = " webCompat"
@@ -81,9 +90,16 @@ class WebCompatMessagingPluginTest {
81
90
82
91
override fun process (
83
92
jsMessage : JsMessage ,
84
- jsMessageCallback : JsMessageCallback ,
93
+ jsMessageCallback : WebViewCompatMessageCallback ,
94
+ onResponse : (JSONObject ) -> Unit ,
85
95
) {
86
- jsMessageCallback.process(jsMessage.featureName, jsMessage.method, jsMessage.id, jsMessage.params)
96
+ jsMessageCallback.process(
97
+ jsMessage.featureName,
98
+ jsMessage.method,
99
+ jsMessage.id,
100
+ jsMessage.params,
101
+ onResponse,
102
+ )
87
103
}
88
104
89
105
override val method: String = " addDebugFlag"
@@ -111,7 +127,7 @@ class WebCompatMessagingPluginTest {
111
127
{"context":"contentScopeScripts","featureName":"webCompat","id":"myId","method":"webShare","params":{}}
112
128
""" .trimIndent()
113
129
114
- testee.process(message, callback)
130
+ testee.process(message, callback, mockReplyProxy )
115
131
116
132
assertEquals(1 , callback.counter)
117
133
}
@@ -120,7 +136,7 @@ class WebCompatMessagingPluginTest {
120
136
fun `when processing unknown message do nothing` () = runTest {
121
137
givenInterfaceIsRegistered()
122
138
123
- testee.process(" " , callback)
139
+ testee.process(" " , callback, mockReplyProxy )
124
140
125
141
assertEquals(0 , callback.counter)
126
142
}
@@ -133,7 +149,7 @@ class WebCompatMessagingPluginTest {
133
149
{"context":"contentScopeScripts","featureName":"test","id":"myId","method":"webShare","params":{}}
134
150
""" .trimIndent()
135
151
136
- testee.process(message, callback)
152
+ testee.process(message, callback, mockReplyProxy )
137
153
138
154
assertEquals(0 , callback.counter)
139
155
}
@@ -146,7 +162,7 @@ class WebCompatMessagingPluginTest {
146
162
{"context":"contentScopeScripts","webCompat":"test","method":"webShare","params":{}}
147
163
""" .trimIndent()
148
164
149
- testee.process(message, callback)
165
+ testee.process(message, callback, mockReplyProxy )
150
166
151
167
assertEquals(0 , callback.counter)
152
168
}
@@ -159,7 +175,7 @@ class WebCompatMessagingPluginTest {
159
175
{"context":"contentScopeScripts","featureName":"debugFeature","id":"debugId","method":"addDebugFlag","params":{}}
160
176
""" .trimIndent()
161
177
162
- testee.process(message, callback)
178
+ testee.process(message, callback, mockReplyProxy )
163
179
164
180
assertEquals(1 , callback.counter)
165
181
}
@@ -231,9 +247,15 @@ class WebCompatMessagingPluginTest {
231
247
assertEquals(" contentScopeAdsjs" , capturedObjectName)
232
248
}
233
249
234
- private val callback = object : JsMessageCallback () {
250
+ private val callback = object : WebViewCompatMessageCallback () {
235
251
var counter = 0
236
- override fun process (featureName : String , method : String , id : String? , data : JSONObject ? ) {
252
+ override fun process (
253
+ featureName : String ,
254
+ method : String ,
255
+ id : String? ,
256
+ data : JSONObject ? ,
257
+ onResponse : (params: JSONObject ) -> Unit ,
258
+ ) {
237
259
counter++
238
260
}
239
261
}
0 commit comments