summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Todd Kennedy <toddke@google.com> 2015-10-21 20:59:42 +0000
committer android-build-merger <android-build-merger@google.com> 2015-10-21 20:59:42 +0000
commitf81de0e4a5f33e8d044e18d7f65dbc40ad819e3c (patch)
tree779bd93975c7dd435da521ff6d6937466e43a8a0
parent6655630c962c68e5ca510f4d3249d00e819336f8 (diff)
parent68457b9cd49a695ed50c51eb9c0d0b63fcead737 (diff)
Merge "Maintain shared user list on OTA" into mnc-dr-dev am: 0cd10ec8cf am: d12f298da4 am: c9f3b2f54b
am: 68457b9cd4 * commit '68457b9cd49a695ed50c51eb9c0d0b63fcead737': Maintain shared user list on OTA
-rw-r--r--services/core/java/com/android/server/pm/Settings.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 61d26767cfb6..d148a4ff1f2e 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -514,7 +514,18 @@ final class Settings {
ArrayList<String> removeStage = new ArrayList<String>();
for (Map.Entry<String,SharedUserSetting> entry : mSharedUsers.entrySet()) {
final SharedUserSetting sus = entry.getValue();
- if (sus == null || sus.packages.size() == 0) {
+ if (sus == null) {
+ removeStage.add(entry.getKey());
+ continue;
+ }
+ // remove packages that are no longer installed
+ for (Iterator<PackageSetting> iter = sus.packages.iterator(); iter.hasNext();) {
+ PackageSetting ps = iter.next();
+ if (mPackages.get(ps.name) == null) {
+ iter.remove();
+ }
+ }
+ if (sus.packages.size() == 0) {
removeStage.add(entry.getKey());
}
}