Fix inconsistency in reporting device admin active state.

When a device admin goes away due to a package change, only one of two lists
was being updated, causing an inconsistency in the query for active admins
depending on which API was being called.

This makes sure that mAdminMap stays in sync with mAdminList so that
isActiveAdmin() and getActiveAdmins() returns the same results.

Bug: 11588094
Change-Id: I232608738249492d9fca7e4d7aa7566d96fccf46
This commit is contained in:
Amith Yamasani
2013-11-11 11:44:37 -08:00
parent e8c51298a4
commit f65c0a9958

View File

@@ -522,6 +522,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|| pm.getReceiverInfo(aa.info.getComponent(), 0, userHandle) == null) {
removed = true;
policy.mAdminList.remove(i);
policy.mAdminMap.remove(aa.info.getComponent());
}
} catch (RemoteException re) {
// Shouldn't happen