diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/SharedUserSetting.java | 19 |
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. */ |