summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hai Zhang <zhanghai@google.com> 2020-11-10 21:27:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-11-10 21:27:22 +0000
commitcbef1ba73c08050869bac73b7acfe584f946f3f4 (patch)
tree6007db49c4a2d07c58f10eba7f2ee227a93ebed8
parent26d7201645f33c28d5ea43132ef907f076f029ac (diff)
parentf9c011501fab1f9ae63c2535e91d1e7d823f5ff0 (diff)
Merge changes I0c69b6a2,I286015aa
* changes: Refresh legacy permission state right before writing. Revert "Refresh legacy state before writing to runtime permission persistence."
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java15
-rw-r--r--services/core/java/com/android/server/pm/Settings.java2
-rw-r--r--services/core/java/com/android/server/pm/permission/LegacyPermissionDataProvider.java10
3 files changed, 14 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index f68469fee4da..7afd3dbb2c1e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -19606,7 +19606,7 @@ public class PackageManagerService extends IPackageManager.Stub
ps.setUninstallReason(UNINSTALL_REASON_UNKNOWN, userId);
}
- writeRuntimePermissionsForUserLPrTEMP(userId, false);
+ mSettings.writeRuntimePermissionsForUserLPr(userId, false);
}
// Regardless of writeSettings we need to ensure that this restriction
// state propagation is persisted
@@ -25752,7 +25752,7 @@ public class PackageManagerService extends IPackageManager.Stub
public void writePermissionSettings(int[] userIds, boolean async) {
synchronized (mLock) {
for (int userId : userIds) {
- writeRuntimePermissionsForUserLPrTEMP(userId, !async);
+ mSettings.writeRuntimePermissionsForUserLPr(userId, !async);
}
}
}
@@ -26401,17 +26401,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) {
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index cd9a4e72672f..71e7358701fd 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -5390,6 +5390,8 @@ public final class Settings {
mHandler.removeMessages(userId);
mWriteScheduled.delete(userId);
+ mPermissionDataProvider.writeLegacyPermissionStateTEMP();
+
int version = mVersions.get(userId, INITIAL_VERSION);
String fingerprint = mFingerprints.get(userId);
diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionDataProvider.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionDataProvider.java
index 0e790b1899ed..46e4e59bb15b 100644
--- a/services/core/java/com/android/server/pm/permission/LegacyPermissionDataProvider.java
+++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionDataProvider.java
@@ -61,4 +61,14 @@ public interface LegacyPermissionDataProvider {
*/
@NonNull
int[] getGidsForUid(int uid);
+
+ /**
+ * This method should be in PermissionManagerServiceInternal, however it is made available here
+ * as well to avoid serious performance regression in writePermissionSettings(), which seems to
+ * be a hot spot and we should delay calling this method until wre are actually writing the
+ * file, instead of every time an async write is requested.
+ *
+ * @see PermissionManagerServiceInternal#writeLegacyPermissionStateTEMP()
+ */
+ void writeLegacyPermissionStateTEMP();
}