Skip to content

Commit 9e791ef

Browse files
Merge branch 'release/5.235.0'
2 parents 1a5564e + f2aba7c commit 9e791ef

File tree

223 files changed

+6988
-3151
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

223 files changed

+6988
-3151
lines changed

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/TrackerBlockingVpnService.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import com.duckduckgo.di.scopes.VpnScope
4545
import com.duckduckgo.library.loader.LibraryLoader
4646
import com.duckduckgo.mobile.android.vpn.dao.VpnServiceStateStatsDao
4747
import com.duckduckgo.mobile.android.vpn.feature.AppTpRemoteFeatures
48+
import com.duckduckgo.mobile.android.vpn.integration.NgVpnNetworkStack
4849
import com.duckduckgo.mobile.android.vpn.integration.VpnNetworkStackProvider
4950
import com.duckduckgo.mobile.android.vpn.model.AlwaysOnState
5051
import com.duckduckgo.mobile.android.vpn.model.VpnServiceState
@@ -406,9 +407,8 @@ class TrackerBlockingVpnService : VpnService(), CoroutineScope by MainScope(), V
406407
// see https://app.asana.com/0/488551667048375/1203410036713941/f for more info
407408
tunnelConfig?.let { config ->
408409
// TODO this is temporary hack until we know this approach works for moto g. If it does we'll spend time making it better/more permanent
409-
if (config.dns.map { it.hostAddress }.contains("10.11.12.1")) {
410-
// noop whenever NetP is enabled
411-
} else if (config.dns.isNotEmpty()) {
410+
if (vpnNetworkStack is NgVpnNetworkStack && config.dns.isNotEmpty()) {
411+
// This solution is only relevant for AppTP
412412
// just temporary pixel to know quantify how many users would be impacted
413413
deviceShieldPixels.reportMotoGFix()
414414
dnsChangeCallback.register()

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ import com.duckduckgo.common.utils.DispatcherProvider
222222
import com.duckduckgo.common.utils.device.DeviceInfo
223223
import com.duckduckgo.common.utils.plugins.PluginPoint
224224
import com.duckduckgo.common.utils.plugins.headers.CustomHeadersProvider
225+
import com.duckduckgo.daxprompts.impl.ReactivateUsersExperiment
225226
import com.duckduckgo.downloads.api.DownloadStateListener
226227
import com.duckduckgo.downloads.api.FileDownloader
227228
import com.duckduckgo.downloads.api.FileDownloader.PendingFileDownload
@@ -553,6 +554,7 @@ class BrowserTabViewModelTest {
553554
private val mockSiteErrorHandler: StringSiteErrorHandler = mock()
554555
private val mockSiteHttpErrorHandler: HttpCodeSiteErrorHandler = mock()
555556
private val mockSubscriptionsJSHelper: SubscriptionsJSHelper = mock()
557+
private val mockReactivateUsersExperiment: ReactivateUsersExperiment = mock()
556558

557559
private val selectedTab = TabEntity("TAB_ID", "https://example.com", position = 0, sourceTabId = "TAB_ID_SOURCE")
558560

@@ -728,7 +730,14 @@ class BrowserTabViewModelTest {
728730
httpErrorPixels = { mockHttpErrorPixels },
729731
duckPlayer = mockDuckPlayer,
730732
duckChat = mockDuckChat,
731-
duckPlayerJSHelper = DuckPlayerJSHelper(mockDuckPlayer, mockAppBuildConfig, mockPixel, mockDuckDuckGoUrlDetector, mockPagesSettingPlugin),
733+
duckPlayerJSHelper = DuckPlayerJSHelper(
734+
mockDuckPlayer,
735+
mockAppBuildConfig,
736+
mockPixel,
737+
mockDuckDuckGoUrlDetector,
738+
mockPagesSettingPlugin,
739+
mockReactivateUsersExperiment,
740+
),
732741
duckChatJSHelper = mockDuckChatJSHelper,
733742
refreshPixelSender = refreshPixelSender,
734743
changeOmnibarPositionFeature = changeOmnibarPositionFeature,

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import android.webkit.WebView
2323
import androidx.test.platform.app.InstrumentationRegistry
2424
import com.duckduckgo.anrs.api.CrashLogger
2525
import com.duckduckgo.app.browser.httpauth.WebViewHttpAuthStore
26+
import com.duckduckgo.app.browser.indexeddb.IndexedDBManager
2627
import com.duckduckgo.app.browser.session.WebViewSessionInMemoryStorage
2728
import com.duckduckgo.app.browser.weblocalstorage.WebLocalStorageManager
2829
import com.duckduckgo.app.global.file.FileDeleter
@@ -57,6 +58,7 @@ class WebViewDataManagerTest {
5758
private val mockFileDeleter: FileDeleter = mock()
5859
private val mockWebViewHttpAuthStore: WebViewHttpAuthStore = mock()
5960
private val mockWebLocalStorageManager: WebLocalStorageManager = mock()
61+
private val mockIndexedDBManager: IndexedDBManager = mock()
6062
private val mockCrashLogger: CrashLogger = mock()
6163
private val mockAppBuildConfig: AppBuildConfig = mock()
6264
private val feature = FakeFeatureToggleFactory.create(AndroidBrowserConfigFeature::class.java)
@@ -69,6 +71,7 @@ class WebViewDataManagerTest {
6971
mockWebViewHttpAuthStore,
7072
feature,
7173
mockWebLocalStorageManager,
74+
mockIndexedDBManager,
7275
mockCrashLogger,
7376
TestScope(),
7477
CoroutineTestRule().testDispatcherProvider,
@@ -221,6 +224,57 @@ class WebViewDataManagerTest {
221224
}
222225
}
223226

227+
@SuppressLint("DenyListedApi")
228+
@Test
229+
fun whenClearDataAndIndexedDBFeatureDisabledThenDefaultContentsDeletedExceptCookies() = runTest {
230+
withContext(Dispatchers.Main) {
231+
feature.indexedDB().setRawStoredState(State(enable = false))
232+
val webView = TestWebView(context)
233+
234+
testee.clearData(webView, mockStorage)
235+
236+
verify(mockFileDeleter).deleteContents(
237+
File(context.applicationInfo.dataDir, "app_webview/Default"),
238+
listOf("Cookies"),
239+
)
240+
verifyNoInteractions(mockIndexedDBManager)
241+
}
242+
}
243+
244+
@SuppressLint("DenyListedApi")
245+
@Test
246+
fun whenClearDataAndIndexedDBFeatureEnabledThenDefaultContentsDeletedExceptCookiesAndIndexedDB() = runTest {
247+
withContext(Dispatchers.Main) {
248+
feature.indexedDB().setRawStoredState(State(enable = true))
249+
val webView = TestWebView(context)
250+
251+
testee.clearData(webView, mockStorage)
252+
253+
verify(mockFileDeleter).deleteContents(
254+
File(context.applicationInfo.dataDir, "app_webview/Default"),
255+
listOf("Cookies", "IndexedDB"),
256+
)
257+
verify(mockIndexedDBManager).clearIndexedDB()
258+
}
259+
}
260+
261+
@SuppressLint("DenyListedApi")
262+
@Test
263+
fun whenClearDataAndIndexedDBThrowsExceptionThenDefaultContentsDeletedExceptCookies() = runTest {
264+
whenever(mockIndexedDBManager.clearIndexedDB()).thenThrow(RuntimeException())
265+
withContext(Dispatchers.Main) {
266+
feature.indexedDB().setRawStoredState(State(enable = true))
267+
val webView = TestWebView(context)
268+
269+
testee.clearData(webView, mockStorage)
270+
271+
verify(mockFileDeleter).deleteContents(
272+
File(context.applicationInfo.dataDir, "app_webview/Default"),
273+
listOf("Cookies"),
274+
)
275+
}
276+
}
277+
224278
private class TestWebView(context: Context) : WebView(context) {
225279

226280
var historyCleared: Boolean = false

app/src/internal/res/drawable/ic_fire_16.xml

Lines changed: 0 additions & 17 deletions
This file was deleted.

app/src/internal/res/drawable/ic_fire_24.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/src/internal/res/drawable/ic_fire_color_24.xml

Lines changed: 0 additions & 44 deletions
This file was deleted.

app/src/internal/res/drawable/ic_fire_red_24.xml

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/src/internal/res/drawable/ic_fireproof_solid_16.xml

Lines changed: 0 additions & 32 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ class BrowserTabFragment :
10461046
browserNavigationBarIntegration = BrowserNavigationBarViewIntegration(
10471047
lifecycleScope = lifecycleScope,
10481048
browserTabFragmentBinding = binding,
1049-
visualDesignExperimentDataStore = visualDesignExperimentDataStore,
1049+
isExperimentEnabled = visualDesignExperimentDataStore.isExperimentEnabled.value,
10501050
omnibar = omnibar,
10511051
browserNavigationBarObserver = observer,
10521052
)

0 commit comments

Comments
 (0)