From 1ae81a547eff28641f7a7d1237be2bbda2daea6f Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Tue, 21 May 2019 15:31:36 -0700 Subject: Mark perm DB version as -1 when upgrading from P So that we can implement different behavior between Android P and Q. Test: Upgraded P->Q and booted fresh install of Q. Checked DB after boot Bug: 131427665 Change-Id: I89f9dc1fc11129c95c03834e21628c6be75f2875 --- core/java/android/permission/PermissionManager.java | 3 ++- services/core/java/com/android/server/pm/Settings.java | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index 2a41c2065c46..e15659db90a8 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -68,7 +68,8 @@ public final class PermissionManager { /** * Gets the version of the runtime permission database. * - * @return The database version. + * @return The database version, -1 when this is an upgrade from pre-Q, 0 when this is a fresh + * install. * * @hide */ diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 3f00d328090d..11a8f4b895f5 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -5102,6 +5102,7 @@ public final class Settings { private static final long WRITE_PERMISSIONS_DELAY_MILLIS = 200; private static final long MAX_WRITE_PERMISSIONS_DELAY_MILLIS = 2000; + private static final int UPGRADE_VERSION = -1; private static final int INITIAL_VERSION = 0; private final Handler mHandler = new MyHandler(); @@ -5133,7 +5134,7 @@ public final class Settings { @GuardedBy("Settings.this.mLock") int getVersionLPr(int userId) { - return mVersions.get(userId); + return mVersions.get(userId, INITIAL_VERSION); } @GuardedBy("Settings.this.mLock") @@ -5365,8 +5366,10 @@ public final class Settings { switch (parser.getName()) { case TAG_RUNTIME_PERMISSIONS: { + // If the permisions settings file exists but the version is not set this is + // an upgrade from P->Q. Hence mark it with the special UPGRADE_VERSION int version = XmlUtils.readIntAttribute(parser, ATTR_VERSION, - INITIAL_VERSION); + UPGRADE_VERSION); mVersions.put(userId, version); String fingerprint = parser.getAttributeValue(null, ATTR_FINGERPRINT); mFingerprints.put(userId, fingerprint); -- cgit v1.2.3-59-g8ed1b