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

Commit 6b8c659a authored by Evan Chen's avatar Evan Chen Committed by Android Build Coastguard Worker
Browse files

Make sure to disassociate all the packages with shared UID

Test: cts
Bug: 427206637
Flag: Flag: EXEMPT bugfix
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:a11c34ec2986e88d166a51c1d7835ca25be27d16
Merged-In: I751d724cefe415000646d1640c65e74af52a6688
Change-Id: I751d724cefe415000646d1640c65e74af52a6688
parent 10987d32
Loading
Loading
Loading
Loading
+17 −11
Original line number Original line Diff line number Diff line
@@ -167,6 +167,7 @@ public class CompanionDeviceManagerService extends SystemService {
    private final IAppOpsService mAppOpsManager;
    private final IAppOpsService mAppOpsManager;
    private final PowerWhitelistManager mPowerWhitelistManager;
    private final PowerWhitelistManager mPowerWhitelistManager;
    private final UserManager mUserManager;
    private final UserManager mUserManager;
    private final PackageManager mPackageManager;
    final PackageManagerInternal mPackageManagerInternal;
    final PackageManagerInternal mPackageManagerInternal;


    /**
    /**
@@ -220,6 +221,7 @@ public class CompanionDeviceManagerService extends SystemService {
        mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
        mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
        mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
        mAmInternal = LocalServices.getService(ActivityManagerInternal.class);
        mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
        mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
        mPackageManager = context.getPackageManager();
        mUserManager = context.getSystemService(UserManager.class);
        mUserManager = context.getSystemService(UserManager.class);


        mUserPersistenceHandler = new PersistUserStateHandler();
        mUserPersistenceHandler = new PersistUserStateHandler();
@@ -1560,8 +1562,10 @@ public class CompanionDeviceManagerService extends SystemService {
                return;
                return;
            }
            }


            final String packageName = getPackageNameByUid(uid);
            // A UID can be shared by multiple packages if android:sharedUserId is used.
            if (packageName == null) {
            // We must get all packages for the UID to ensure we find the correct one.
            final String[] packageNames = mPackageManager.getPackagesForUid(uid);
            if (packageNames == null || packageNames.length == 0) {
                // Not interested in this uid.
                // Not interested in this uid.
                return;
                return;
            }
            }
@@ -1570,6 +1574,7 @@ public class CompanionDeviceManagerService extends SystemService {


            boolean needToPersistStateForUser = false;
            boolean needToPersistStateForUser = false;


            for (String packageName : packageNames) {
                for (AssociationInfo association :
                for (AssociationInfo association :
                        getPendingRoleHolderRemovalAssociationsForUser(userId)) {
                        getPendingRoleHolderRemovalAssociationsForUser(userId)) {
                    if (!packageName.equals(association.getPackageName())) continue;
                    if (!packageName.equals(association.getPackageName())) continue;
@@ -1582,6 +1587,7 @@ public class CompanionDeviceManagerService extends SystemService {
                    removeFromPendingRoleHolderRemoval(association);
                    removeFromPendingRoleHolderRemoval(association);
                    needToPersistStateForUser = true;
                    needToPersistStateForUser = true;
                }
                }
            }


            if (needToPersistStateForUser) {
            if (needToPersistStateForUser) {
                mUserPersistenceHandler.postPersistUserState(userId);
                mUserPersistenceHandler.postPersistUserState(userId);