Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad09362b authored by Eugene Susla's avatar Eugene Susla
Browse files

Consider all UsageStats for package when checking lastTimeVisible

The API can return multiple objects per package and the right thing to do
is to max over each lastTimeVisible for a given package.

Test: presubmit
Bug: 153607914
Change-Id: Idf382b46ebd3e6058da2fcaebbc59112f5d80262
parent 46e333d1
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -435,8 +435,15 @@ private suspend fun revokePermissionsOnUnusedApps(
    return revokedApps
}

private fun List<UsageStats>.lastTimeVisible(pkgName: String) =
        find { it.packageName == pkgName }?.lastTimeVisible ?: 0L
private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long {
    var result = 0L
    for (stat in this) {
        if (stat.packageName == pkgName) {
            result = Math.max(result, stat.lastTimeVisible)
        }
    }
    return result
}

suspend fun isPackageAutoRevokeExempt(
    context: Context,
@@ -1028,8 +1035,7 @@ private class AutoRevokeDumpLiveData(context: Context) :

                    pkgs.add(AutoRevokeDumpPackageData(pkg.uid, pkg.packageName,
                            pkg.firstInstallTime,
                            usages.value!![user]
                                    ?.find { it.packageName == pkg.packageName }?.lastTimeVisible,
                            usages.value!![user]?.lastTimeVisible(pkg.packageName),
                            autoRevokeManifestExemptPackages!![user]!!.value!!
                                    .contains(pkg.packageName),
                            pkgAutoRevokeState!![user to pkg.packageName]!!.value