Skip to content

Commit ab3f4e2

Browse files
CrisBarreirojoshliebe
authored andcommitted
Fix failing privacy tests (#5010)
Task/Issue URL: https://app.asana.com/0/1202552961248957/1208263793923549/f ### Description ### Steps to test this PR _Feature 1_ - [ ] - [ ] ### UI changes | Before | After | | ------ | ----- | !(Upload before screenshot)|(Upload after screenshot)|
1 parent e088309 commit ab3f4e2

File tree

5 files changed

+35
-24
lines changed

5 files changed

+35
-24
lines changed

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4828,7 +4828,7 @@ class BrowserTabViewModelTest {
48284828
"webShare",
48294829
"myId",
48304830
JSONObject("""{ "my":"object"}"""),
4831-
"someUrl",
4831+
{ "someUrl" },
48324832
)
48334833
assertCommandIssued<Command.WebShareRequest> {
48344834
assertEquals("object", this.data.params.getString("my"))
@@ -4848,7 +4848,7 @@ class BrowserTabViewModelTest {
48484848
"permissionsQuery",
48494849
"myId",
48504850
JSONObject("""{ "name":"somePermission"}"""),
4851-
"someUrl",
4851+
{ "someUrl" },
48524852
)
48534853
assertCommandIssued<Command.SendResponseToJs> {
48544854
assertEquals("granted", this.data.params.getString("state"))
@@ -4866,7 +4866,7 @@ class BrowserTabViewModelTest {
48664866
"screenLock",
48674867
"myId",
48684868
JSONObject("""{ "my":"object"}"""),
4869-
"someUrl",
4869+
{ "someUrl" },
48704870
)
48714871
assertCommandNotIssued<Command.ScreenLock>()
48724872
}
@@ -4879,7 +4879,7 @@ class BrowserTabViewModelTest {
48794879
"screenLock",
48804880
"myId",
48814881
JSONObject("""{ "my":"object"}"""),
4882-
"someUrl",
4882+
{ "someUrl" },
48834883
)
48844884
assertCommandIssued<Command.ScreenLock> {
48854885
assertEquals("object", this.data.params.getString("my"))
@@ -4897,7 +4897,7 @@ class BrowserTabViewModelTest {
48974897
"screenUnlock",
48984898
"myId",
48994899
JSONObject("""{ "my":"object"}"""),
4900-
"someUrl",
4900+
{ "someUrl" },
49014901
)
49024902
assertCommandNotIssued<Command.ScreenUnlock>()
49034903
}
@@ -4910,7 +4910,7 @@ class BrowserTabViewModelTest {
49104910
"screenUnlock",
49114911
"myId",
49124912
JSONObject("""{ "my":"object"}"""),
4913-
"someUrl",
4913+
{ "someUrl" },
49144914
)
49154915
assertCommandIssued<Command.ScreenUnlock>()
49164916
}
@@ -4924,7 +4924,7 @@ class BrowserTabViewModelTest {
49244924
"getUserValues",
49254925
"id",
49264926
data = null,
4927-
"someUrl",
4927+
{ "someUrl" },
49284928
)
49294929
assertCommandIssued<Command.SendResponseToJs>()
49304930
}
@@ -4938,7 +4938,7 @@ class BrowserTabViewModelTest {
49384938
"setUserValues",
49394939
"id",
49404940
JSONObject("""{ overlayInteracted: "true", privatePlayerMode: {disabled: {} }}"""),
4941-
"someUrl",
4941+
{ "someUrl" },
49424942
)
49434943
assertCommandIssued<Command.SendResponseToJs>()
49444944
verify(mockDuckPlayer).setUserPreferences(any(), any())
@@ -4954,7 +4954,7 @@ class BrowserTabViewModelTest {
49544954
"setUserValues",
49554955
"id",
49564956
JSONObject("""{ overlayInteracted: "true", privatePlayerMode: {enabled: {} }}"""),
4957-
"someUrl",
4957+
{ "someUrl" },
49584958
)
49594959
assertCommandIssued<Command.SendResponseToJs>()
49604960
verify(mockDuckPlayer).setUserPreferences(any(), any())
@@ -4970,7 +4970,7 @@ class BrowserTabViewModelTest {
49704970
"setUserValues",
49714971
"id",
49724972
JSONObject("""{ overlayInteracted: "true", privatePlayerMode: {enabled: {} }}"""),
4973-
"someUrl",
4973+
{ "someUrl" },
49744974
)
49754975
assertCommandIssued<Command.SendResponseToDuckPlayer>()
49764976
verify(mockDuckPlayer).setUserPreferences(true, "enabled")
@@ -4986,7 +4986,7 @@ class BrowserTabViewModelTest {
49864986
"sendDuckPlayerPixel",
49874987
"id",
49884988
JSONObject("""{ pixelName: "pixel", params: {}}"""),
4989-
"someUrl",
4989+
{ "someUrl" },
49904990
)
49914991
verify(mockDuckPlayer).sendDuckPlayerPixel("pixel", mapOf())
49924992
}
@@ -5000,7 +5000,7 @@ class BrowserTabViewModelTest {
50005000
"openDuckPlayer",
50015001
"id",
50025002
JSONObject("""{ href: "duck://player/1234" }"""),
5003-
"someUrl",
5003+
{ "someUrl" },
50045004
)
50055005
assertCommandIssued<Navigate>()
50065006
}
@@ -5014,7 +5014,7 @@ class BrowserTabViewModelTest {
50145014
"openDuckPlayer",
50155015
"id",
50165016
null,
5017-
"someUrl",
5017+
{ "someUrl" },
50185018
)
50195019
assertCommandNotIssued<Navigate>()
50205020
}
@@ -5028,7 +5028,7 @@ class BrowserTabViewModelTest {
50285028
"initialSetup",
50295029
"id",
50305030
null,
5031-
"someUrl",
5031+
{ "someUrl" },
50325032
)
50335033
assertCommandIssued<Command.SendResponseToJs>()
50345034
}
@@ -5042,7 +5042,7 @@ class BrowserTabViewModelTest {
50425042
"initialSetup",
50435043
"id",
50445044
null,
5045-
"someUrl",
5045+
{ "someUrl" },
50465046
)
50475047
assertCommandIssued<Command.SendResponseToDuckPlayer>()
50485048
}
@@ -5055,7 +5055,7 @@ class BrowserTabViewModelTest {
50555055
"openSettings",
50565056
"id",
50575057
null,
5058-
"someUrl",
5058+
{ "someUrl" },
50595059
)
50605060
assertCommandIssued<Command.OpenDuckPlayerSettings>()
50615061
}
@@ -5070,7 +5070,7 @@ class BrowserTabViewModelTest {
50705070
"openInfo",
50715071
"id",
50725072
null,
5073-
"someUrl",
5073+
{ "someUrl" },
50745074
)
50755075
assertCommandIssued<Command.OpenDuckPlayerPageInfo>()
50765076
}

app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2429,7 +2429,9 @@ class BrowserTabFragment :
24292429
id: String?,
24302430
data: JSONObject?,
24312431
) {
2432-
viewModel.processJsCallbackMessage(featureName, method, id, data, it.url)
2432+
viewModel.processJsCallbackMessage(featureName, method, id, data) {
2433+
it.url
2434+
}
24332435
}
24342436
},
24352437
)
@@ -2442,7 +2444,9 @@ class BrowserTabFragment :
24422444
id: String?,
24432445
data: JSONObject?,
24442446
) {
2445-
viewModel.processJsCallbackMessage(featureName, method, id, data, it.url)
2447+
viewModel.processJsCallbackMessage(featureName, method, id, data) {
2448+
it.url
2449+
}
24462450
}
24472451
},
24482452
)

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3172,7 +3172,7 @@ class BrowserTabViewModel @Inject constructor(
31723172
method: String,
31733173
id: String?,
31743174
data: JSONObject?,
3175-
url: String?,
3175+
getWebViewUrl: () -> String?,
31763176
) {
31773177
when (method) {
31783178
"webShare" -> if (id != null && data != null) {
@@ -3201,7 +3201,8 @@ class BrowserTabViewModel @Inject constructor(
32013201
when (featureName) {
32023202
DUCK_PLAYER_FEATURE_NAME, DUCK_PLAYER_PAGE_FEATURE_NAME -> {
32033203
viewModelScope.launch(dispatchers.io()) {
3204-
val response = duckPlayerJSHelper.processJsCallbackMessage(featureName, method, id, data, url)
3204+
val webViewUrl = withContext(dispatchers.main()) { getWebViewUrl() }
3205+
val response = duckPlayerJSHelper.processJsCallbackMessage(featureName, method, id, data, webViewUrl)
32053206
withContext(dispatchers.main()) {
32063207
response?.let {
32073208
command.value = it

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class SharedPreferencesDuckPlayerDataStore @Inject constructor(
116116
private val duckPlayerRC: Flow<String>
117117
get() = store.data
118118
.map { prefs ->
119-
prefs[DUCK_PLAYER_RC] ?: ""
119+
prefs[DUCK_PLAYER_RC] ?: "{}"
120120
}
121121
.distinctUntilChanged()
122122

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package com.duckduckgo.duckplayer.impl
1818

1919
import com.duckduckgo.app.di.AppCoroutineScope
20+
import com.duckduckgo.app.di.IsMainProcess
2021
import com.duckduckgo.common.utils.DispatcherProvider
2122
import com.duckduckgo.di.scopes.AppScope
2223
import com.duckduckgo.duckplayer.api.DuckPlayer.UserPreferences
2324
import com.duckduckgo.duckplayer.api.PrivatePlayerMode.AlwaysAsk
2425
import com.duckduckgo.duckplayer.api.PrivatePlayerMode.Disabled
2526
import com.duckduckgo.duckplayer.api.PrivatePlayerMode.Enabled
2627
import com.squareup.anvil.annotations.ContributesBinding
28+
import dagger.SingleInstanceIn
2729
import javax.inject.Inject
2830
import kotlinx.coroutines.CoroutineScope
2931
import kotlinx.coroutines.flow.Flow
@@ -68,17 +70,21 @@ interface DuckPlayerFeatureRepository {
6870
suspend fun setUserOnboarded()
6971
}
7072

73+
@SingleInstanceIn(AppScope::class)
7174
@ContributesBinding(AppScope::class)
7275
class RealDuckPlayerFeatureRepository @Inject constructor(
7376
private val duckPlayerDataStore: DuckPlayerDataStore,
7477
@AppCoroutineScope private val appCoroutineScope: CoroutineScope,
7578
private val dispatcherProvider: DispatcherProvider,
79+
@IsMainProcess isMainProcess: Boolean,
7680
) : DuckPlayerFeatureRepository {
7781

78-
private var duckPlayerRC = ""
82+
private var duckPlayerRC = "{}"
7983

8084
init {
81-
loadToMemory()
85+
if (isMainProcess) {
86+
loadToMemory()
87+
}
8288
}
8389

8490
private fun loadToMemory() {

0 commit comments

Comments
 (0)