Loading src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt +18 −4 Original line number Diff line number Diff line Loading @@ -247,7 +247,11 @@ private suspend fun revokePermissionsOnUnusedApps( // TODO ntmyren: remove once b/154796729 is fixed Log.i(LOG_TAG, "getting UserPackageInfoLiveData for all users " + "in AutoRevokePermissions") val unusedApps = AllPackageInfosLiveData.getInitializedValue().toMutableMap() val allPackagesByUser = AllPackageInfosLiveData.getInitializedValue() val allPackagesByUserByUid = allPackagesByUser.mapValues { (_, pkgs) -> pkgs.groupBy { pkg -> pkg.uid } } val unusedApps = allPackagesByUser.toMutableMap() val userStats = UsageStatsLiveData[getUnusedThresholdMs(context), if (DEBUG_OVERRIDE_THRESHOLDS) INTERVAL_DAILY else INTERVAL_MONTHLY].getInitializedValue() Loading @@ -274,7 +278,13 @@ private suspend fun revokePermissionsOnUnusedApps( unusedUserApps = unusedUserApps.filter { packageInfo -> val pkgName = packageInfo.packageName var lastTimeVisible: Long = stats.lastTimeVisible(pkgName) val uidPackages = allPackagesByUserByUid[user]!![packageInfo.uid] ?.map { info -> info.packageName } ?: emptyList() if (pkgName !in uidPackages) { Log.wtf(LOG_TAG, "Package $pkgName not among packages for " + "its uid ${packageInfo.uid}: $uidPackages") } var lastTimeVisible: Long = stats.lastTimeVisible(uidPackages) // Limit by install time lastTimeVisible = Math.max(lastTimeVisible, packageInfo.firstInstallTime) Loading Loading @@ -425,16 +435,20 @@ private suspend fun revokePermissionsOnUnusedApps( return revokedApps } private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long { private fun List<UsageStats>.lastTimeVisible(pkgNames: List<String>): Long { var result = 0L for (stat in this) { if (stat.packageName == pkgName) { if (stat.packageName in pkgNames) { result = Math.max(result, stat.lastTimeVisible) } } return result } private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long { return lastTimeVisible(listOf(pkgName)) } /** * Checks if the given package is exempt from auto revoke in a way that's not user-overridable */ Loading Loading
src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt +18 −4 Original line number Diff line number Diff line Loading @@ -247,7 +247,11 @@ private suspend fun revokePermissionsOnUnusedApps( // TODO ntmyren: remove once b/154796729 is fixed Log.i(LOG_TAG, "getting UserPackageInfoLiveData for all users " + "in AutoRevokePermissions") val unusedApps = AllPackageInfosLiveData.getInitializedValue().toMutableMap() val allPackagesByUser = AllPackageInfosLiveData.getInitializedValue() val allPackagesByUserByUid = allPackagesByUser.mapValues { (_, pkgs) -> pkgs.groupBy { pkg -> pkg.uid } } val unusedApps = allPackagesByUser.toMutableMap() val userStats = UsageStatsLiveData[getUnusedThresholdMs(context), if (DEBUG_OVERRIDE_THRESHOLDS) INTERVAL_DAILY else INTERVAL_MONTHLY].getInitializedValue() Loading @@ -274,7 +278,13 @@ private suspend fun revokePermissionsOnUnusedApps( unusedUserApps = unusedUserApps.filter { packageInfo -> val pkgName = packageInfo.packageName var lastTimeVisible: Long = stats.lastTimeVisible(pkgName) val uidPackages = allPackagesByUserByUid[user]!![packageInfo.uid] ?.map { info -> info.packageName } ?: emptyList() if (pkgName !in uidPackages) { Log.wtf(LOG_TAG, "Package $pkgName not among packages for " + "its uid ${packageInfo.uid}: $uidPackages") } var lastTimeVisible: Long = stats.lastTimeVisible(uidPackages) // Limit by install time lastTimeVisible = Math.max(lastTimeVisible, packageInfo.firstInstallTime) Loading Loading @@ -425,16 +435,20 @@ private suspend fun revokePermissionsOnUnusedApps( return revokedApps } private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long { private fun List<UsageStats>.lastTimeVisible(pkgNames: List<String>): Long { var result = 0L for (stat in this) { if (stat.packageName == pkgName) { if (stat.packageName in pkgNames) { result = Math.max(result, stat.lastTimeVisible) } } return result } private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long { return lastTimeVisible(listOf(pkgName)) } /** * Checks if the given package is exempt from auto revoke in a way that's not user-overridable */ Loading