diff options
| author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-03-06 10:41:06 +0000 |
|---|---|---|
| committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2023-03-06 10:41:06 +0000 |
| commit | e279045cfe02dd4a571df98f596b8a9af9b9d24c (patch) | |
| tree | 36c76f3addaa94a56025ce15d753f609978ac8e5 /app/src/main/java/foundation/e/privacycentralapp/domain | |
| parent | 5aa1f270323bf36a2797cef3f486a1c22e76c308 (diff) | |
| download | advanced-privacy-e279045cfe02dd4a571df98f596b8a9af9b9d24c.tar.gz | |
842: Create dummy-app apps compatibility leaking system components
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain')
3 files changed, 42 insertions, 31 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt index 9216233..e753d7b 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt @@ -97,6 +97,11 @@ class IpScramblingStateUseCase( mutable.removeAll(getHiddenPackageNames()) mutable.add(appListsRepository.dummySystemApp.packageName) whitelist = mutable + } else if (AppListsRepository.appsCompatibiltyPNames.any { it in whitelist }) { + val mutable = whitelist.toMutableSet() + mutable.removeAll(AppListsRepository.appsCompatibiltyPNames) + mutable.add(appListsRepository.dummyAppsCompatibilityApp.packageName) + whitelist = mutable } return whitelist @@ -109,12 +114,16 @@ class IpScramblingStateUseCase( if (visibleList.contains(packageName)) { if (packageName == appListsRepository.dummySystemApp.packageName) { rawList.removeAll(getHiddenPackageNames()) + } else if (packageName == appListsRepository.dummyAppsCompatibilityApp.packageName) { + rawList.removeAll(AppListsRepository.appsCompatibiltyPNames) } else { rawList.remove(packageName) } } else { if (packageName == appListsRepository.dummySystemApp.packageName) { rawList.addAll(getHiddenPackageNames()) + } else if (packageName == appListsRepository.dummyAppsCompatibilityApp.packageName) { + rawList.addAll(AppListsRepository.appsCompatibiltyPNames) } else { rawList.add(packageName) } diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt index 11f0466..820073b 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt @@ -54,10 +54,6 @@ class TrackersStateUseCase( blockTrackersPrivacyModule.isWhiteListEmpty() } - fun getApplicationDescription(packageName: String): ApplicationDescription? { - return appListsRepository.getApplicationDescription(packageName) - } - fun getApplicationDescription(appUid: Int): ApplicationDescription? { return appListsRepository.getApplicationDescription(appUid) } @@ -66,32 +62,18 @@ class TrackersStateUseCase( return isWhitelisted(appUid, appListsRepository, blockTrackersPrivacyModule) } - fun getTrackersWhitelistIds(appUid: Int): List<String> { - return if (appUid == appListsRepository.dummySystemApp.uid) { - appListsRepository.getAllProfilesHiddenSystemApps().fold(mutableSetOf<String>()) { acc, app -> - acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) - acc - }.toList() - } else blockTrackersPrivacyModule.getWhiteList(appUid).map { it.id } - } - fun toggleAppWhitelist(appUid: Int, isWhitelisted: Boolean) { - if (appUid == appListsRepository.dummySystemApp.uid) { - appListsRepository.getAllProfilesHiddenSystemApps().forEach { - blockTrackersPrivacyModule.setWhiteListed(it.uid, isWhitelisted) - } - } else blockTrackersPrivacyModule.setWhiteListed(appUid, isWhitelisted) + appListsRepository.applyForHiddenApps(appUid) { uid -> + blockTrackersPrivacyModule.setWhiteListed(uid, isWhitelisted) + } updateAllTrackersBlockedState() } fun blockTracker(appUid: Int, tracker: Tracker, isBlocked: Boolean) { - if (appUid == appListsRepository.dummySystemApp.uid) { - appListsRepository.getAllProfilesHiddenSystemApps().forEach { - blockTrackersPrivacyModule.setWhiteListed(tracker, it.uid, !isBlocked) - } - } else blockTrackersPrivacyModule.setWhiteListed(tracker, appUid, !isBlocked) - + appListsRepository.applyForHiddenApps(appUid) { uid -> + blockTrackersPrivacyModule.setWhiteListed(tracker, uid, !isBlocked) + } updateAllTrackersBlockedState() } @@ -106,9 +88,5 @@ fun isWhitelisted( appListsRepository: AppListsRepository, blockTrackersPrivacyModule: IBlockTrackersPrivacyModule ): Boolean { - return if (appUid == appListsRepository.dummySystemApp.uid) { - appListsRepository.getAllProfilesHiddenSystemApps().any { - blockTrackersPrivacyModule.isWhitelisted(it.uid) - } - } else blockTrackersPrivacyModule.isWhitelisted(appUid) + return appListsRepository.anyForHiddenApps(appUid, blockTrackersPrivacyModule::isWhitelisted) } 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 404032b..cc6ec45 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 @@ -166,6 +166,10 @@ class TrackersStatisticsUseCase( appListsRepository.getAllProfilesHiddenSystemApps().map { trackTrackersPrivacyModule.getTrackersForApp(it.uid) }.flatten().distinctBy { it.id } + } else if (appUid == appListsRepository.dummyAppsCompatibilityApp.uid) { + appListsRepository.getAllProfilesACApps().map { + trackTrackersPrivacyModule.getTrackersForApp(it.uid) + }.flatten().distinctBy { it.id } } else trackTrackersPrivacyModule.getTrackersForApp(appUid) return trackers.sortedBy { it.label.lowercase() } @@ -182,6 +186,14 @@ class TrackersStatisticsUseCase( acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) acc } + } else if (appUid == appListsRepository.dummyAppsCompatibilityApp.uid) { + val acApps = appListsRepository.getAllProfilesACApps() + trackers = trackTrackersPrivacyModule.getTrackers(acApps.map { it.uid }) + + whiteListedTrackersIds = acApps.fold(HashSet<String>()) { acc, app -> + acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) + acc + } } else { trackers = trackTrackersPrivacyModule.getTrackersForApp(appUid) whiteListedTrackersIds = blockTrackersPrivacyModule.getWhiteList(appUid) @@ -198,6 +210,12 @@ class TrackersStatisticsUseCase( }.reduce { (accBlocked, accLeaked), (blocked, leaked) -> accBlocked + blocked to accLeaked + leaked } + } else if (appUid == appListsRepository.dummyAppsCompatibilityApp.uid) { + appListsRepository.getAllProfilesACApps().map { + trackTrackersPrivacyModule.getPastDayTrackersCallsForApp(it.uid) + }.reduce { (accBlocked, accLeaked), (blocked, leaked) -> + accBlocked + blocked to accLeaked + leaked + } } else trackTrackersPrivacyModule.getPastDayTrackersCallsForApp(appUid) } @@ -205,6 +223,8 @@ class TrackersStatisticsUseCase( val trackersCounts = trackTrackersPrivacyModule.getTrackersCountByApp() val hiddenAppsTrackersWithWhiteList = getTrackersWithWhiteList(appListsRepository.dummySystemApp.uid) + val acAppsTrackersWithWhiteList = + getTrackersWithWhiteList(appListsRepository.dummyAppsCompatibilityApp.uid) return appListsRepository.getAllProfilesVisibleApps() .map { apps -> @@ -216,19 +236,23 @@ class TrackersStatisticsUseCase( isWhitelisted(app.uid, appListsRepository, blockTrackersPrivacyModule), trackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { hiddenAppsTrackersWithWhiteList.size + } else if (app.uid == appListsRepository.dummyAppsCompatibilityApp.uid) { + acAppsTrackersWithWhiteList.size } else { trackersCounts.getOrDefault(app.uid, 0) }, whiteListedTrackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { hiddenAppsTrackersWithWhiteList.count { it.second } + } else if (app.uid == appListsRepository.dummyAppsCompatibilityApp.uid) { + acAppsTrackersWithWhiteList.count { it.second } } else { blockTrackersPrivacyModule.getWhiteList(app.uid).size }, - blockedLeaks = appListsRepository.foldForHiddenSystemApp(app.uid) { + blockedLeaks = appListsRepository.foldForHiddenApp(app.uid) { appUid -> callsByApp.getOrDefault(appUid, 0 to 0).first }, - leaks = appListsRepository.foldForHiddenSystemApp(app.uid) { + leaks = appListsRepository.foldForHiddenApp(app.uid) { appUid -> callsByApp.getOrDefault(appUid, 0 to 0).second } |
