diff options
| author | 2019-05-21 15:31:36 -0700 | |
|---|---|---|
| committer | 2019-05-23 16:14:33 -0700 | |
| commit | 1ae81a547eff28641f7a7d1237be2bbda2daea6f (patch) | |
| tree | f29de0c6be02e31b734da4a631e723bd2b42084b | |
| parent | 3fb12ba4902605668faa22a93f0881ab333ec11d (diff) | |
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
| -rw-r--r-- | core/java/android/permission/PermissionManager.java | 3 | ||||
| -rw-r--r-- | 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); |