Skip to content

Commit 9db9ac6

Browse files
authored
Add AppTP blocklist stat pixel (#6069)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1202096681738622/task/1210212720766789?focus=true ### Description Ditto ### Steps to test this PR - [ ] Clean install from this branch - [ ] Start app - [ ] Verify `m_atp_report_blocklist_stats_d` pixel is sent with proper blocklist stats
1 parent 08ec878 commit 9db9ac6

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
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

0 commit comments

Comments
 (0)