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

Commit f7094d5f authored by Guojing Yuan's avatar Guojing Yuan Committed by Android (Google) Code Review
Browse files

Merge "[CDM] Add a lock for package callbacks" into main

parents 9cbe827c db193ed7
Loading
Loading
Loading
Loading
+14 −4
Original line number Original line Diff line number Diff line
@@ -137,6 +137,8 @@ public class CompanionDeviceManagerService extends SystemService {
    private final DisassociationProcessor mDisassociationProcessor;
    private final DisassociationProcessor mDisassociationProcessor;
    private final CrossDeviceSyncController mCrossDeviceSyncController;
    private final CrossDeviceSyncController mCrossDeviceSyncController;


    private final Object mPackageLock = new Object();

    public CompanionDeviceManagerService(Context context) {
    public CompanionDeviceManagerService(Context context) {
        super(context);
        super(context);


@@ -784,23 +786,31 @@ public class CompanionDeviceManagerService extends SystemService {
    private final PackageMonitor mPackageMonitor = new PackageMonitor() {
    private final PackageMonitor mPackageMonitor = new PackageMonitor() {
        @Override
        @Override
        public void onPackageRemoved(String packageName, int uid) {
        public void onPackageRemoved(String packageName, int uid) {
            synchronized (mPackageLock) {
                onPackageRemoveOrDataClearedInternal(getChangingUserId(), packageName);
                onPackageRemoveOrDataClearedInternal(getChangingUserId(), packageName);
            }
            }
        }


        @Override
        @Override
        public void onPackageDataCleared(String packageName, int uid) {
        public void onPackageDataCleared(String packageName, int uid) {
            synchronized (mPackageLock) {
                onPackageRemoveOrDataClearedInternal(getChangingUserId(), packageName);
                onPackageRemoveOrDataClearedInternal(getChangingUserId(), packageName);
            }
            }
        }


        @Override
        @Override
        public void onPackageModified(@NonNull String packageName) {
        public void onPackageModified(@NonNull String packageName) {
            synchronized (mPackageLock) {
                onPackageModifiedInternal(getChangingUserId(), packageName);
                onPackageModifiedInternal(getChangingUserId(), packageName);
            }
            }
        }


        @Override
        @Override
        public void onPackageAdded(String packageName, int uid) {
        public void onPackageAdded(String packageName, int uid) {
            synchronized (mPackageLock) {
                onPackageAddedInternal(getChangingUserId(), packageName);
                onPackageAddedInternal(getChangingUserId(), packageName);
            }
            }
        }
    };
    };


    private class LocalService implements CompanionDeviceManagerServiceInternal {
    private class LocalService implements CompanionDeviceManagerServiceInternal {