summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rhed Jao <rhedjao@google.com> 2022-05-03 05:22:56 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-05-03 05:22:56 +0000
commit9e98853f0470632f3622ab119de8e9d6ee99a9dd (patch)
treee9bc4c8b0671dd6752fd1621a2493f861f2ee8d9
parentb3dfec5c5f9fb1f206c556377b3ec995567fe45f (diff)
parent59f972ae6e9f4177320a365de12e4c9e02bfeee3 (diff)
Merge "Fix incorrect PackageSetting in the SharedUserSetting" into tm-dev am: a22156f40d am: 59f972ae6e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17988068 Change-Id: If71fbaf57df3fcb60bce366e8f010ff0239d5bf8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/pm/SharedUserSetting.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/SharedUserSetting.java b/services/core/java/com/android/server/pm/SharedUserSetting.java
index 23f0de8a5f71..58be87852026 100644
--- a/services/core/java/com/android/server/pm/SharedUserSetting.java
+++ b/services/core/java/com/android/server/pm/SharedUserSetting.java
@@ -17,6 +17,7 @@
package com.android.server.pm;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.pm.ApplicationInfo;
import android.content.pm.SigningDetails;
import android.service.pm.PackageServiceDumpProto;
@@ -33,7 +34,9 @@ import com.android.server.pm.pkg.component.ComponentMutateUtils;
import com.android.server.pm.pkg.component.ParsedProcess;
import com.android.server.pm.pkg.component.ParsedProcessImpl;
import com.android.server.utils.SnapshotCache;
+import com.android.server.utils.Watchable;
import com.android.server.utils.WatchedArraySet;
+import com.android.server.utils.Watcher;
import libcore.util.EmptyArray;
@@ -66,6 +69,16 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
final WatchedArraySet<PackageSetting> mDisabledPackages;
private final SnapshotCache<WatchedArraySet<PackageSetting>> mDisabledPackagesSnapshot;
+ /**
+ * The observer that watches for changes from array members
+ */
+ private final Watcher mObserver = new Watcher() {
+ @Override
+ public void onChange(@Nullable Watchable what) {
+ SharedUserSetting.this.onChanged();
+ }
+ };
+
final PackageSignatures signatures = new PackageSignatures();
Boolean signaturesChanged;
@@ -97,6 +110,7 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
mDisabledPackagesSnapshot = new SnapshotCache.Auto<>(mDisabledPackages, mDisabledPackages,
"SharedUserSetting.mDisabledPackages");
processes = new ArrayMap<>();
+ registerObservers();
mSnapshot = makeCache();
}
@@ -119,6 +133,11 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
mSnapshot = new SnapshotCache.Sealed<>();
}
+ private void registerObservers() {
+ mPackages.registerObserver(mObserver);
+ mDisabledPackages.registerObserver(mObserver);
+ }
+
/**
* Return a read-only snapshot of this object.
*/