From 864b1d1f239b3518d5f77ef3ec37ebccb7f77566 Mon Sep 17 00:00:00 2001 From: Aitor Viana Date: Wed, 30 Apr 2025 08:33:00 +0100 Subject: [PATCH 1/3] Ensure blocklist is updated always --- .../android/vpn/blocklist/AppTrackerListUpdateWorker.kt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt index 4837ec8da582..2681494f21e5 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt @@ -73,12 +73,7 @@ class AppTrackerListUpdateWorker(context: Context, workerParameters: WorkerParam vpnDatabase.vpnAppTrackerBlockingDao().getTrackerBlocklistMetadata()?.eTag val updatedEtag = blocklist.etag.value - if (updatedEtag == currentEtag) { - logcat { "Downloaded blocklist has same eTag, noop" } - return Result.success() - } - - logcat { "Updating the app tracker blocklist, eTag: ${blocklist.etag.value}" } + logcat { "Updating the app tracker blocklist, previous/new eTag: $currentEtag / $updatedEtag}" } vpnDatabase .vpnAppTrackerBlockingDao() From 209f8dcfcf238ffcf9d401acde01a8b8b4e41724 Mon Sep 17 00:00:00 2001 From: Aitor Viana Date: Wed, 30 Apr 2025 22:14:14 +0100 Subject: [PATCH 2/3] Fix exception when parsing app-bundled remote config --- .../vpn/feature/settings/ExceptionListsSettingStore.kt | 6 ++---- .../vpn/feature/settings/ExceptionListsSettingStoreTest.kt | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt index 25c6634740ff..c2fa75ff88a9 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt @@ -50,9 +50,7 @@ class ExceptionListsSettingStore @Inject constructor( override fun store(jsonString: String) { logcat { "Received configuration: $jsonString" } runCatching { - jsonAdapter.fromJson(jsonString)?.let { model -> - - val exceptionLists = model.exceptionLists + jsonAdapter.fromJson(jsonString)?.exceptionLists?.let { exceptionLists -> val appTrackerExceptionRuleList = exceptionLists.appTrackerAllowList.map { appTrackerAllowRule -> AppTrackerExceptionRule( @@ -78,7 +76,7 @@ class ExceptionListsSettingStore @Inject constructor( } private data class JsonConfigModel( - val exceptionLists: JsonExceptionListsModel, + val exceptionLists: JsonExceptionListsModel?, ) private data class JsonExceptionListsModel( diff --git a/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt b/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt index 448b36495f15..2dfd11992479 100644 --- a/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt +++ b/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt @@ -96,6 +96,12 @@ class ExceptionListsSettingStoreTest { @Test fun whenEmptyJsonStoreNothing() { + exceptionListsSettingStore.store("{}") + verifyNoInteractions(mockVpnDatabase) + } + + @Test + fun whenInvalidJsonStoreNothingAndDoNotCrash() { exceptionListsSettingStore.store("") verifyNoInteractions(mockVpnDatabase) } From d2725668492a0e5c024e0d4ad4600bd72d4dff2e Mon Sep 17 00:00:00 2001 From: Aitor Viana Date: Wed, 30 Apr 2025 22:22:29 +0100 Subject: [PATCH 3/3] Delete tracker blocklist metadata before update --- .../mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt b/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt index 3a7ff3ea0f52..02e3f244f48c 100644 --- a/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt +++ b/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt @@ -38,6 +38,9 @@ interface VpnAppTrackerBlockingDao { @Insert fun setTrackerBlocklistMetadata(appTrackerMetadata: AppTrackerMetadata) + @Query("DELETE from vpn_app_tracker_blocking_list_metadata") + fun deleteTrackerBlocklistMetadata() + @Query("DELETE from vpn_app_tracker_blocking_list") fun deleteTrackerBlockList() @@ -63,6 +66,7 @@ interface VpnAppTrackerBlockingDao { metadata: AppTrackerMetadata, entities: List, ) { + deleteTrackerBlocklistMetadata() setTrackerBlocklistMetadata(metadata) deleteTrackerBlockList()