Skip to content

Commit c82e1cb

Browse files
authored
Revert "Move getHeaders checks to io" (#7240)
Reverts #7225
1 parent b341bea commit c82e1cb

File tree

21 files changed

+72
-132
lines changed

21 files changed

+72
-132
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8160,7 +8160,7 @@ class BrowserTabViewModelTest {
81608160
class FakeCustomHeadersProvider(
81618161
var headers: Map<String, String>,
81628162
) : CustomHeadersProvider {
8163-
override suspend fun getCustomHeaders(url: String): Map<String, String> = headers
8163+
override fun getCustomHeaders(url: String): Map<String, String> = headers
81648164
}
81658165

81668166
class FakeContentScopeScriptsSubscriptionEventPlugin(

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ class BrowserWebViewClientTest {
167167
mockAndroidBrowserConfigFeature,
168168
mockFeaturesHeaderProvider,
169169
mock(),
170-
coroutinesTestRule.testDispatcherProvider,
171170
)
172171
private val mockDuckChat: DuckChat = mock()
173172

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,9 @@ class WebViewRequestInterceptorTest {
109109

110110
@UiThreadTest
111111
@Before
112-
fun setup() = runTest {
112+
fun setup() {
113113
configureUserAgent()
114114
configureStack()
115-
whenever(mockGpc.canUrlAddHeaders(anyString(), anyMap<String, String>())).thenReturn(false)
116-
whenever(mockRequest.requestHeaders).thenReturn(mutableMapOf())
117-
whenever(mockGpc.getHeaders(anyString())).thenReturn(mapOf())
118115

119116
testee = WebViewRequestInterceptor(
120117
trackerDetector = mockTrackerDetector,

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,9 +1194,7 @@ class BrowserTabViewModel @Inject constructor(
11941194
}
11951195

11961196
site?.nextUrl = urlToNavigate
1197-
viewModelScope.launch {
1198-
command.value = NavigationCommand.Navigate(urlToNavigate, getUrlHeaders(urlToNavigate))
1199-
}
1197+
command.value = NavigationCommand.Navigate(urlToNavigate, getUrlHeaders(urlToNavigate))
12001198
}
12011199
}
12021200

@@ -1221,7 +1219,7 @@ class BrowserTabViewModel @Inject constructor(
12211219
currentAutoCompleteViewState().copy(showSuggestions = false, showFavorites = false, searchResults = AutoCompleteResult("", emptyList()))
12221220
}
12231221

1224-
private suspend fun getUrlHeaders(url: String?): Map<String, String> = url?.let { customHeadersProvider.getCustomHeaders(it) } ?: emptyMap()
1222+
private fun getUrlHeaders(url: String?): Map<String, String> = url?.let { customHeadersProvider.getCustomHeaders(it) } ?: emptyMap()
12251223

12261224
private fun extractVerticalParameter(currentUrl: String?): String? {
12271225
val url = currentUrl ?: return null
@@ -2797,9 +2795,7 @@ class BrowserTabViewModel @Inject constructor(
27972795
if (desktopSiteRequested && uri.isMobileSite) {
27982796
val desktopUrl = uri.toDesktopUri().toString()
27992797
logcat(INFO) { "Original URL $url - attempting $desktopUrl with desktop site UA string" }
2800-
viewModelScope.launch {
2801-
command.value = NavigationCommand.Navigate(desktopUrl, getUrlHeaders(desktopUrl))
2802-
}
2798+
command.value = NavigationCommand.Navigate(desktopUrl, getUrlHeaders(desktopUrl))
28032799
} else {
28042800
command.value = NavigationCommand.Refresh
28052801
}
@@ -3169,9 +3165,7 @@ class BrowserTabViewModel @Inject constructor(
31693165

31703166
fun nonHttpAppLinkClicked(appLink: NonHttpAppLink) {
31713167
if (nonHttpAppLinkChecker.isPermitted(appLink.intent)) {
3172-
viewModelScope.launch {
3173-
command.value = HandleNonHttpAppLink(appLink, getUrlHeaders(appLink.fallbackUrl))
3174-
}
3168+
command.value = HandleNonHttpAppLink(appLink, getUrlHeaders(appLink.fallbackUrl))
31753169
}
31763170
}
31773171

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,13 +363,13 @@ class WebViewRequestInterceptor(
363363
return WebResourceResponse(null, null, null)
364364
}
365365

366-
private suspend fun getHeaders(request: WebResourceRequest): Map<String, String> {
366+
private fun getHeaders(request: WebResourceRequest): Map<String, String> {
367367
return request.requestHeaders.apply {
368368
putAll(gpc.getHeaders(request.url.toString()))
369369
}
370370
}
371371

372-
private suspend fun shouldAddGcpHeaders(request: WebResourceRequest): Boolean {
372+
private fun shouldAddGcpHeaders(request: WebResourceRequest): Boolean {
373373
val existingHeaders = request.requestHeaders
374374
return (request.isForMainFrame && request.method == "GET" && gpc.canUrlAddHeaders(request.url.toString(), existingHeaders))
375375
}

app/src/main/java/com/duckduckgo/app/browser/trafficquality/AndroidFeaturesHeader.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@ import com.duckduckgo.app.browser.trafficquality.Result.Allowed
2121
import com.duckduckgo.app.browser.trafficquality.Result.NotAllowed
2222
import com.duckduckgo.app.browser.trafficquality.remote.AndroidFeaturesHeaderProvider
2323
import com.duckduckgo.app.pixels.remoteconfig.AndroidBrowserConfigFeature
24-
import com.duckduckgo.common.utils.DispatcherProvider
2524
import com.duckduckgo.common.utils.plugins.headers.CustomHeadersProvider.CustomHeadersPlugin
2625
import com.duckduckgo.di.scopes.AppScope
2726
import com.squareup.anvil.annotations.ContributesMultibinding
28-
import kotlinx.coroutines.withContext
2927
import javax.inject.Inject
3028

3129
@ContributesMultibinding(scope = AppScope::class)
@@ -35,10 +33,9 @@ class AndroidFeaturesHeaderPlugin @Inject constructor(
3533
private val androidBrowserConfigFeature: AndroidBrowserConfigFeature,
3634
private val androidFeaturesHeaderProvider: AndroidFeaturesHeaderProvider,
3735
private val appVersionProvider: AppVersionHeaderProvider,
38-
private val dispatchers: DispatcherProvider,
3936
) : CustomHeadersPlugin {
4037

41-
override suspend fun getHeaders(url: String): Map<String, String> {
38+
override fun getHeaders(url: String): Map<String, String> {
4239
if (isFeatureEnabled() && duckDuckGoUrlDetector.isDuckDuckGoQueryUrl(url)) {
4340
return when (val result = customHeaderAllowedChecker.isAllowed()) {
4441
is Allowed -> {
@@ -61,11 +58,9 @@ class AndroidFeaturesHeaderPlugin @Inject constructor(
6158
}
6259
}
6360

64-
private suspend fun isFeatureEnabled(): Boolean {
65-
return withContext(dispatchers.io()) {
66-
androidBrowserConfigFeature.self().isEnabled() &&
67-
androidBrowserConfigFeature.featuresRequestHeader().isEnabled()
68-
}
61+
private fun isFeatureEnabled(): Boolean {
62+
return androidBrowserConfigFeature.self().isEnabled() &&
63+
androidBrowserConfigFeature.featuresRequestHeader().isEnabled()
6964
}
7065

7166
companion object {

app/src/main/java/com/duckduckgo/app/browser/trafficquality/CustomHeaderAllowedChecker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import java.time.temporal.ChronoUnit
2929
import javax.inject.Inject
3030

3131
interface CustomHeaderAllowedChecker {
32-
suspend fun isAllowed(): Result<TrafficQualityAppVersion>
32+
fun isAllowed(): Result<TrafficQualityAppVersion>
3333
}
3434

3535
sealed class Result<out R> {
@@ -42,7 +42,7 @@ class RealCustomHeaderGracePeriodChecker @Inject constructor(
4242
private val appBuildConfig: AppBuildConfig,
4343
private val featuresRequestHeaderStore: FeaturesRequestHeaderStore,
4444
) : CustomHeaderAllowedChecker {
45-
override suspend fun isAllowed(): Result<TrafficQualityAppVersion> {
45+
override fun isAllowed(): Result<TrafficQualityAppVersion> {
4646
val config = featuresRequestHeaderStore.getConfig()
4747
val versionConfig = config.find { it.appVersion == appBuildConfig.versionCode }
4848
return if (versionConfig != null) {

app/src/main/java/com/duckduckgo/app/browser/trafficquality/remote/FeaturesRequestHeaderSettingStore.kt

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,14 @@
1717
package com.duckduckgo.app.browser.trafficquality.remote
1818

1919
import com.duckduckgo.app.pixels.remoteconfig.AndroidBrowserConfigFeature
20-
import com.duckduckgo.common.utils.DispatcherProvider
2120
import com.duckduckgo.di.scopes.AppScope
2221
import com.squareup.anvil.annotations.ContributesBinding
2322
import com.squareup.moshi.JsonAdapter
2423
import com.squareup.moshi.Moshi
25-
import kotlinx.coroutines.withContext
2624
import javax.inject.Inject
2725

2826
interface FeaturesRequestHeaderStore {
29-
suspend fun getConfig(): List<TrafficQualityAppVersion>
27+
fun getConfig(): List<TrafficQualityAppVersion>
3028
}
3129

3230
data class TrafficQualitySettingsJson(
@@ -51,22 +49,19 @@ data class TrafficQualityAppVersionFeatures(
5149
class FeaturesRequestHeaderSettingStore @Inject constructor(
5250
private val androidBrowserConfigFeature: AndroidBrowserConfigFeature,
5351
private val moshi: Moshi,
54-
private val dispatcherProvider: DispatcherProvider,
5552
) : FeaturesRequestHeaderStore {
5653

5754
private val jsonAdapter: JsonAdapter<TrafficQualitySettingsJson> by lazy {
5855
moshi.adapter(TrafficQualitySettingsJson::class.java)
5956
}
6057

61-
override suspend fun getConfig(): List<TrafficQualityAppVersion> {
62-
return withContext(dispatcherProvider.io()) {
63-
val config = androidBrowserConfigFeature.featuresRequestHeader().getSettings()?.let {
64-
runCatching {
65-
val configJson = jsonAdapter.fromJson(it)
66-
configJson?.versions
67-
}.getOrDefault(emptyList())
68-
} ?: emptyList()
69-
config
70-
}
58+
override fun getConfig(): List<TrafficQualityAppVersion> {
59+
val config = androidBrowserConfigFeature.featuresRequestHeader().getSettings()?.let {
60+
runCatching {
61+
val configJson = jsonAdapter.fromJson(it)
62+
configJson?.versions
63+
}.getOrDefault(emptyList())
64+
} ?: emptyList()
65+
return config
7166
}
7267
}

app/src/main/java/com/duckduckgo/app/globalprivacycontrol/ui/GlobalPrivacyControlViewModel.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import androidx.annotation.StringRes
2020
import androidx.lifecycle.LiveData
2121
import androidx.lifecycle.MutableLiveData
2222
import androidx.lifecycle.ViewModel
23-
import androidx.lifecycle.viewModelScope
2423
import com.duckduckgo.anvil.annotations.ContributesViewModel
2524
import com.duckduckgo.app.browser.R
2625
import com.duckduckgo.app.pixels.AppPixelName.*
@@ -30,7 +29,6 @@ import com.duckduckgo.di.scopes.ActivityScope
3029
import com.duckduckgo.feature.toggles.api.FeatureToggle
3130
import com.duckduckgo.privacy.config.api.Gpc
3231
import com.duckduckgo.privacy.config.api.PrivacyFeatureName
33-
import kotlinx.coroutines.launch
3432
import javax.inject.Inject
3533

3634
@ContributesViewModel(ActivityScope::class)
@@ -57,13 +55,10 @@ class GlobalPrivacyControlViewModel @Inject constructor(
5755
val command: SingleLiveEvent<Command> = SingleLiveEvent()
5856

5957
init {
60-
viewModelScope.launch {
61-
_viewState.value = ViewState(
62-
globalPrivacyControlEnabled = gpc.isEnabled(),
63-
globalPrivacyControlFeatureEnabled = featureToggle.isFeatureEnabled(PrivacyFeatureName.GpcFeatureName.value, true),
64-
)
65-
}
66-
58+
_viewState.value = ViewState(
59+
globalPrivacyControlEnabled = gpc.isEnabled(),
60+
globalPrivacyControlFeatureEnabled = featureToggle.isFeatureEnabled(PrivacyFeatureName.GpcFeatureName.value, true),
61+
)
6762
pixel.fire(SETTINGS_DO_NOT_SELL_SHOWN)
6863
}
6964

app/src/test/java/com/duckduckgo/app/brokensite/api/BrokenSiteSubmitterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class BrokenSiteSubmitterTest {
119119
private lateinit var testee: BrokenSiteSubmitter
120120

121121
@Before
122-
fun before() = runTest {
122+
fun before() {
123123
whenever(mockAppBuildConfig.deviceLocale).thenReturn(Locale.ENGLISH)
124124
whenever(mockAppBuildConfig.sdkInt).thenReturn(1)
125125
whenever(mockAppBuildConfig.manufacturer).thenReturn("manufacturer")

0 commit comments

Comments
 (0)