diff options
| author | 2015-08-04 20:54:52 +0000 | |
|---|---|---|
| committer | 2015-08-04 20:54:52 +0000 | |
| commit | b381d697310c14cef50e0e80bebd15a97b8e9c84 (patch) | |
| tree | b01305348d97adb57cc68dc5e691dfb41548a1bb | |
| parent | 9aebdb4c39bd958f0a568539ea503b2da494802e (diff) | |
| parent | 073bfb9bec7bc407c50a23a2317852cb0d69599b (diff) | |
am 073bfb9b: am ce68917c: Merge "Ensure per package and per UID state share same package settings." into mnc-dev
* commit '073bfb9bec7bc407c50a23a2317852cb0d69599b':
Ensure per package and per UID state share same package settings.
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 3c92a5212810..5bdad50ae0da 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -616,6 +616,7 @@ final class Settings { p.sharedUser = origPackage.sharedUser; p.appId = origPackage.appId; p.origPackage = origPackage; + p.getPermissionsState().copyFrom(origPackage.getPermissionsState()); mRenamedPackages.put(name, origPackage.name); name = origPackage.name; // Update new package state. @@ -815,6 +816,20 @@ final class Settings { p.sharedUser = sharedUser; p.appId = sharedUser.userId; } + + // If the we know about this user id, we have to update it as it + // has to point to the same PackageSetting instance as the package. + Object userIdPs = getUserIdLPr(p.appId); + if (sharedUser == null) { + if (userIdPs != null && userIdPs != p) { + replaceUserIdLPw(p.appId, p); + } + } else { + if (userIdPs != null && userIdPs != sharedUser) { + replaceUserIdLPw(p.appId, sharedUser); + } + } + IntentFilterVerificationInfo ivi = mRestoredIntentFilterVerifications.get(name); if (ivi != null) { if (DEBUG_DOMAIN_VERIFICATION) { |