summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Philip P. Moltmann <moltmann@google.com> 2019-05-21 15:31:36 -0700
committer Philip P. Moltmann <moltmann@google.com> 2019-05-23 16:14:33 -0700
commit1ae81a547eff28641f7a7d1237be2bbda2daea6f (patch)
treef29de0c6be02e31b734da4a631e723bd2b42084b
parent3fb12ba4902605668faa22a93f0881ab333ec11d (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.java3
-rw-r--r--services/core/java/com/android/server/pm/Settings.java7
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);