Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19904c7f authored by Rhed Jao's avatar Rhed Jao
Browse files

Fix incorrect PackageSetting in the SharedUserSetting

Notifies SharedUserSetting if there's any changes from
watched array members.

Fix: 230597465
Test: atest PackageManagerSettingsTests
Change-Id: Ia20efe159bc8991aa4786de2ba5e1e9772c21ac5
parent 13deb7ff
Loading
Loading
Loading
Loading
+19 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.pm;
package com.android.server.pm;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.SigningDetails;
import android.content.pm.SigningDetails;
import android.service.pm.PackageServiceDumpProto;
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.ParsedProcess;
import com.android.server.pm.pkg.component.ParsedProcessImpl;
import com.android.server.pm.pkg.component.ParsedProcessImpl;
import com.android.server.utils.SnapshotCache;
import com.android.server.utils.SnapshotCache;
import com.android.server.utils.Watchable;
import com.android.server.utils.WatchedArraySet;
import com.android.server.utils.WatchedArraySet;
import com.android.server.utils.Watcher;


import libcore.util.EmptyArray;
import libcore.util.EmptyArray;


@@ -66,6 +69,16 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
    final WatchedArraySet<PackageSetting> mDisabledPackages;
    final WatchedArraySet<PackageSetting> mDisabledPackages;
    private final SnapshotCache<WatchedArraySet<PackageSetting>> mDisabledPackagesSnapshot;
    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();
    final PackageSignatures signatures = new PackageSignatures();
    Boolean signaturesChanged;
    Boolean signaturesChanged;


@@ -97,6 +110,7 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
        mDisabledPackagesSnapshot = new SnapshotCache.Auto<>(mDisabledPackages, mDisabledPackages,
        mDisabledPackagesSnapshot = new SnapshotCache.Auto<>(mDisabledPackages, mDisabledPackages,
                "SharedUserSetting.mDisabledPackages");
                "SharedUserSetting.mDisabledPackages");
        processes = new ArrayMap<>();
        processes = new ArrayMap<>();
        registerObservers();
        mSnapshot = makeCache();
        mSnapshot = makeCache();
    }
    }


@@ -119,6 +133,11 @@ public final class SharedUserSetting extends SettingBase implements SharedUserAp
        mSnapshot = new SnapshotCache.Sealed<>();
        mSnapshot = new SnapshotCache.Sealed<>();
    }
    }


    private void registerObservers() {
        mPackages.registerObserver(mObserver);
        mDisabledPackages.registerObserver(mObserver);
    }

    /**
    /**
     * Return a read-only snapshot of this object.
     * Return a read-only snapshot of this object.
     */
     */