From 6a2480d956526f376c4fe478cdb174a43b4ccbf4 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Tue, 3 Nov 2020 23:32:36 +0000 Subject: [PATCH] Fix performance issue from refreshing runtime permission state before write. - The writeRuntimePermissionsForUserLPr() call in installPackageFromSystemLIF() doesn't seem necessary at all. - Call writeLegacyPermissionStateTEMP() only once for all users in writePermissionSettings(). Fixes: 172297495 Test: presubmit Change-Id: I459bc853cd4f72b70fad84bae9fb189dd974cfbf --- .../android/server/pm/PackageManagerService.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b3f49ade35c88..ab60260095411 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -19605,8 +19605,6 @@ public class PackageManagerService extends IPackageManager.Stub if (installed) { ps.setUninstallReason(UNINSTALL_REASON_UNKNOWN, userId); } - - writeRuntimePermissionsForUserLPrTEMP(userId, false); } // Regardless of writeSettings we need to ensure that this restriction // state propagation is persisted @@ -25751,8 +25749,9 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void writePermissionSettings(int[] userIds, boolean async) { synchronized (mLock) { + mPermissionManager.writeLegacyPermissionStateTEMP(); for (int userId : userIds) { - writeRuntimePermissionsForUserLPrTEMP(userId, !async); + mSettings.writeRuntimePermissionsForUserLPr(userId, !async); } } } @@ -26401,17 +26400,6 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.writeLPr(); } - /** - * Temporary method that wraps mSettings.writeRuntimePermissionsForUserLPr() and calls - * mPermissionManager.writeLegacyPermissionStateTEMP() beforehand. - * - * TODO(zhanghai): This should be removed once we finish migration of permission storage. - */ - private void writeRuntimePermissionsForUserLPrTEMP(@UserIdInt int userId, boolean async) { - mPermissionManager.writeLegacyPermissionStateTEMP(); - mSettings.writeRuntimePermissionsForUserLPr(userId, async); - } - @Override public IBinder getHoldLockToken() { if (!Build.IS_DEBUGGABLE) {