Skip to content

Commit 5519012

Browse files
Merge branch 'release/5.234.1'
2 parents 48210ff + e1dac81 commit 5519012

File tree

17 files changed

+102
-25
lines changed

17 files changed

+102
-25
lines changed

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.duckduckgo.app.lifecycle.MainProcessLifecycleObserver
2929
import com.duckduckgo.common.utils.DispatcherProvider
3030
import com.duckduckgo.di.scopes.AppScope
3131
import com.duckduckgo.mobile.android.vpn.di.AppTpBlocklistUpdateMutex
32+
import com.duckduckgo.mobile.android.vpn.pixels.DeviceShieldPixels
3233
import com.duckduckgo.mobile.android.vpn.store.VpnDatabase
3334
import com.duckduckgo.mobile.android.vpn.trackers.AppTrackerMetadata
3435
import com.squareup.anvil.annotations.ContributesMultibinding
@@ -56,10 +57,23 @@ class AppTrackerListUpdateWorker(context: Context, workerParameters: WorkerParam
5657
@AppTpBlocklistUpdateMutex
5758
lateinit var mutex: Mutex
5859

60+
@Inject
61+
lateinit var deviceShieldPixels: DeviceShieldPixels
62+
5963
override suspend fun doWork(): Result {
6064
return withContext(dispatchers.io()) {
6165
val updateBlocklistResult = mutex.withLock {
62-
updateTrackerBlocklist()
66+
val res = updateTrackerBlocklist()
67+
68+
// Report current blocklist status after update
69+
deviceShieldPixels.reportBlocklistStats(
70+
mapOf(
71+
"blocklist_etag" to vpnDatabase.vpnAppTrackerBlockingDao().getTrackerBlocklistMetadata()?.eTag.toString(),
72+
"blocklist_size" to vpnDatabase.vpnAppTrackerBlockingDao().getTrackerBlockListSize().toString(),
73+
),
74+
)
75+
76+
res
6377
}
6478

6579
val success = Result.success()

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ enum class DeviceShieldPixelNames(override val pixelName: String, val enqueue: B
184184
ATP_REPORT_ANY_LOCAL_ADDR_DNS_SET_DAILY("m_atp_report_anylocal_dns_error_d"),
185185
ATP_REPORT_DNS_SET_ERROR("m_atp_report_dns_error_c"),
186186
ATP_REPORT_DNS_SET_ERROR_DAILY("m_atp_report_dns_error_d"),
187+
ATP_REPORT_BLOCKLIST_STATS_DAILY("m_atp_report_blocklist_stats_d"),
187188

188189
ATP_DID_SHOW_PROMOTE_ALWAYS_ON_DIALOG_UNIQUE("m_atp_imp_promote_always_on_dialog_u"),
189190
ATP_DID_SHOW_PROMOTE_ALWAYS_ON_DIALOG_DAILY("m_atp_imp_promote_always_on_dialog_d"),

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,8 @@ interface DeviceShieldPixels {
319319
fun reportAnylocalDnsError()
320320
fun reportGeneralDnsError()
321321

322+
fun reportBlocklistStats(payload: Map<String, String>)
323+
322324
/**
323325
* Will fire when the user is interacting with the Promote Always On Dialog
324326
*/
@@ -756,6 +758,10 @@ class RealDeviceShieldPixels @Inject constructor(
756758
firePixel(DeviceShieldPixelNames.ATP_REPORT_DNS_SET_ERROR)
757759
}
758760

761+
override fun reportBlocklistStats(payload: Map<String, String>) {
762+
tryToFireDailyPixel(DeviceShieldPixelNames.ATP_REPORT_BLOCKLIST_STATS_DAILY, payload)
763+
}
764+
759765
override fun didEnableAppProtectionFromDetail() {
760766
firePixel(DeviceShieldPixelNames.ATP_DID_ENABLE_APP_PROTECTION_FROM_DETAIL)
761767
}

app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ interface VpnAppTrackerBlockingDao {
4444
@Query("DELETE from vpn_app_tracker_blocking_list")
4545
fun deleteTrackerBlockList()
4646

47+
@Query("SELECT COUNT(*) FROM vpn_app_tracker_blocking_list")
48+
fun getTrackerBlockListSize(): Int
49+
4750
@Query("DELETE FROM vpn_app_tracker_blocking_app_packages")
4851
fun deleteAppPackages()
4952

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ import com.duckduckgo.site.permissions.api.SitePermissionsManager
276276
import com.duckduckgo.site.permissions.api.SitePermissionsManager.LocationPermissionRequest
277277
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissionQueryResponse
278278
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissions
279+
import com.duckduckgo.subscriptions.api.SUBSCRIPTIONS_FEATURE_NAME
279280
import com.duckduckgo.subscriptions.api.Subscriptions
280-
import com.duckduckgo.subscriptions.impl.messaging.RealSubscriptionsJSHelper.Companion.SUBSCRIPTIONS_FEATURE_NAME
281-
import com.duckduckgo.subscriptions.impl.messaging.SubscriptionsJSHelper
281+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
282282
import com.duckduckgo.sync.api.favicons.FaviconsFetchingPrompt
283283
import com.duckduckgo.voice.api.VoiceSearchAvailability
284284
import com.duckduckgo.voice.api.VoiceSearchAvailabilityPixelLogger

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,9 @@ import com.duckduckgo.site.permissions.api.SitePermissionsManager
341341
import com.duckduckgo.site.permissions.api.SitePermissionsManager.LocationPermissionRequest
342342
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissionQueryResponse
343343
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissions
344+
import com.duckduckgo.subscriptions.api.SUBSCRIPTIONS_FEATURE_NAME
344345
import com.duckduckgo.subscriptions.api.Subscriptions
345-
import com.duckduckgo.subscriptions.impl.messaging.RealSubscriptionsJSHelper.Companion.SUBSCRIPTIONS_FEATURE_NAME
346-
import com.duckduckgo.subscriptions.impl.messaging.SubscriptionsJSHelper
346+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
347347
import com.duckduckgo.sync.api.favicons.FaviconsFetchingPrompt
348348
import dagger.Lazy
349349
import io.reactivex.schedulers.Schedulers

app/version/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION=5.234.0
1+
VERSION=5.234.1

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ subprojects {
140140
&& dependencyPath.endsWith("api")
141141
&& dependencyPath != ":feature-toggles-api"
142142
&& dependencyPath != ":navigation-api"
143+
&& dependencyPath != ":js-messaging-api"
143144
) {
144145
if (projectPath.endsWith(":feature-toggles-api") &&
145146
(dependencyPath == ":experiments-api"

malicious-site-protection/malicious-site-protection-impl/src/main/kotlin/com/duckduckgo/malicioussiteprotection/impl/data/MaliciousSiteRepository.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import com.duckduckgo.malicioussiteprotection.api.MaliciousSiteProtection.Feed.M
2424
import com.duckduckgo.malicioussiteprotection.api.MaliciousSiteProtection.Feed.PHISHING
2525
import com.duckduckgo.malicioussiteprotection.api.MaliciousSiteProtection.Feed.SCAM
2626
import com.duckduckgo.malicioussiteprotection.impl.MaliciousSitePixelName.MALICIOUS_SITE_CLIENT_TIMEOUT
27-
import com.duckduckgo.malicioussiteprotection.impl.MaliciousSiteProtectionRCFeature
2827
import com.duckduckgo.malicioussiteprotection.impl.data.db.MaliciousSiteDao
2928
import com.duckduckgo.malicioussiteprotection.impl.data.db.RevisionEntity
3029
import com.duckduckgo.malicioussiteprotection.impl.data.network.FilterResponse
@@ -83,7 +82,6 @@ class RealMaliciousSiteRepository @Inject constructor(
8382
private val maliciousSiteDatasetService: MaliciousSiteDatasetService,
8483
private val dispatcherProvider: DispatcherProvider,
8584
private val pixels: Pixel,
86-
private val maliciousSiteProtectionFeature: MaliciousSiteProtectionRCFeature,
8785
) : MaliciousSiteRepository {
8886

8987
private val writeMutex = Mutex()
@@ -177,7 +175,7 @@ class RealMaliciousSiteRepository @Inject constructor(
177175
): Result<Unit> {
178176
return withContext(dispatcherProvider.io()) {
179177
val networkRevision = maliciousSiteService.getRevision().revision
180-
val localRevisions = getLocalRevisions(type)
178+
val localRevisions = writeMutex.withLock { getLocalRevisions(type) }
181179

182180
try {
183181
loadData(localRevisions, networkRevision)

malicious-site-protection/malicious-site-protection-impl/src/test/kotlin/com/duckduckgo/malicioussiteprotection/impl/MaliciousSiteProtectionReferenceTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ class MaliciousSiteProtectionReferenceTest(private val testCase: TestCase) {
9999
maliciousSiteDatasetService,
100100
coroutineRule.testDispatcherProvider,
101101
mockPixel,
102-
mockMaliciousSiteProtectionRCFeature,
103102
)
104103

105104
@Before
@@ -148,7 +147,6 @@ class MaliciousSiteProtectionReferenceTest(private val testCase: TestCase) {
148147
),
149148
)
150149
whenever(mockMaliciousSiteProtectionRCFeature.isFeatureEnabled()).thenReturn(true)
151-
whenever(mockMaliciousSiteProtectionRCRepository.isExempted(any())).thenReturn(false)
152150
repository.loadFilters(*enumValues<Feed>())
153151
repository.loadHashPrefixes(*enumValues<Feed>())
154152

0 commit comments

Comments
 (0)