From 4680e74a1b4b6cd379a7f4d5a1bc59179fadf080 Mon Sep 17 00:00:00 2001 From: Yasin Kilicdere Date: Thu, 15 Sep 2022 22:14:29 +0100 Subject: [PATCH] Update mPermissionUpgradeNeeded in updateRuntimePermissionsFingerprint PermissionPolicyService. grantOrUpgradeDefaultRuntimePermissionsIfNeeded(userId) method's IfNeeded part was not working and the code inside "if" could not be skipped due to PackageManagerService.isPermissionUpgradeNeeded(userId) returning true even for consecutive calls. The reason for that is Settings.updateRuntimePermissionsFingerprint(userId) method was not updating mPermissionUpgradeNeeded. This was causing consecutive user switches to do an unnecessary ~250ms work. Which should only be done for the first time the user is started. This CL fixed that issue by updating mPermissionUpgradeNeeded in Settings.updateRuntimePermissionsFingerprint(userId) method. Bug: 246988821 Test: Manual performance measurement via Perfetto Change-Id: I2edde089e497d9ffd18b498da88e26b3638ca2ba --- services/core/java/com/android/server/pm/Settings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 9037f042641f5..80e9646282dbe 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -5503,6 +5503,7 @@ public final class Settings implements Watchable, Snappable { + "set before trying to update the fingerprint."); } mFingerprints.put(userId, mExtendedFingerprint); + mPermissionUpgradeNeeded.put(userId, false); writeStateForUserAsync(userId); } }