From e73ab3e91b125f9f868c9ffe3ed8042d4f338673 Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Fri, 30 Sep 2022 06:23:47 +0000 Subject: 5907: Hide deprecated trackers from trackers counts. --- .../domain/usecases/TrackersStatisticsUseCase.kt | 43 +++++++++++++--------- 1 file changed, 26 insertions(+), 17 deletions(-) (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain') diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt index 52e0bad..0a47bc5 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt @@ -18,7 +18,6 @@ package foundation.e.privacycentralapp.domain.usecases import android.content.res.Resources -import android.util.Log import foundation.e.privacycentralapp.R import foundation.e.privacycentralapp.common.throttleFirst import foundation.e.privacycentralapp.data.repositories.AppListsRepository @@ -156,6 +155,28 @@ class TrackersStatisticsUseCase( return trackers.sortedBy { it.label.lowercase() } } + fun getTrackersWithWhiteList(appUid: Int): List> { + val trackers: List + val whiteListedTrackersIds: Set + if (appUid == appListsRepository.dummySystemApp.uid) { + val hiddenApps = appListsRepository.getHiddenSystemApps() + trackers = trackTrackersPrivacyModule.getTrackers(hiddenApps.map { it.uid }) + + whiteListedTrackersIds = hiddenApps.fold(HashSet()) { acc, app -> + acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) + acc + } + + } else { + trackers = trackTrackersPrivacyModule.getTrackersForApp(appUid) + whiteListedTrackersIds = blockTrackersPrivacyModule.getWhiteList(appUid) + .map { it.id }.toSet() + } + + return trackers.sortedBy { it.label.lowercase() }.map { tracker -> tracker to whiteListedTrackersIds.any { tracker.id == it }} + } + + fun getCalls(appUid: Int): Pair { return if (appUid == appListsRepository.dummySystemApp.uid) { appListsRepository.getHiddenSystemApps().map { @@ -168,6 +189,8 @@ class TrackersStatisticsUseCase( fun getAppsWithCounts(): Flow> { val trackersCounts = trackTrackersPrivacyModule.getTrackersCountByApp() + val hiddenAppsTrackersWithWhiteList = + getTrackersWithWhiteList(appListsRepository.dummySystemApp.uid) return appListsRepository.getVisibleApps() .map { apps -> @@ -178,12 +201,12 @@ class TrackersStatisticsUseCase( isWhitelisted = !blockTrackersPrivacyModule.isBlockingEnabled() || isWhitelisted(app.uid, appListsRepository, blockTrackersPrivacyModule), trackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { - getHiddenSystemAppsTrackersCount() + hiddenAppsTrackersWithWhiteList.size } else { trackersCounts.getOrDefault(app.uid, 0) }, whiteListedTrackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { - getHiddenSystemAppWhitelistedTrackersCount() + hiddenAppsTrackersWithWhiteList.count { it.second } } else { blockTrackersPrivacyModule.getWhiteList(app.uid).size }, @@ -198,20 +221,6 @@ class TrackersStatisticsUseCase( } } - private fun getHiddenSystemAppsTrackersCount(): Int { - return trackTrackersPrivacyModule.getTrackersCount( - appListsRepository.getHiddenSystemApps().map { it.uid } - ) - } - - private fun getHiddenSystemAppWhitelistedTrackersCount(): Int { - return appListsRepository.getHiddenSystemApps().fold(HashSet()) { acc, app -> - acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) - acc - }.size - } - - private val mostLeakedAppsComparator: Comparator = Comparator { o1, o2 -> val leaks = o2.leaks - o1.leaks if (leaks != 0) leaks else { -- cgit v1.2.3