Added getProfileIds method returning array of userIds

Previously many usages of UserManager.getProfiles and getEnabledProfiles
were only using ids of returned users. Given that the list of users needs
to be parceled and unparceled for Binder calls, returning array of ids
minimizes memory usage and serialization time.

A new method getProfileIds was introduced which returns an array of userIds.
Existing method calls were updated where appropriate.

Bug: 27705805
Change-Id: Ib042f38d53d95d3b07cda7f824e5cb8c06cd10f5
This commit is contained in:
Fyodor Kupolov
2016-04-07 16:46:18 -07:00
parent 36cce830b9
commit 4a4af5aec8
2 changed files with 6 additions and 9 deletions

View File

@@ -344,13 +344,12 @@ public final class CredentialStorage extends Activity {
// Clear all the users credentials could have been installed in for this user. // Clear all the users credentials could have been installed in for this user.
final UserManager um = (UserManager) getSystemService(USER_SERVICE); final UserManager um = (UserManager) getSystemService(USER_SERVICE);
for (UserInfo pi : um.getProfiles(UserHandle.getUserId(Process.myUid()))) { for (int userId : um.getProfileIdsWithDisabled(UserHandle.myUserId())) {
for (int uid : SYSTEM_CREDENTIAL_UIDS) { for (int uid : SYSTEM_CREDENTIAL_UIDS) {
mKeyStore.clearUid(UserHandle.getUid(pi.id, uid)); mKeyStore.clearUid(UserHandle.getUid(userId, uid));
} }
} }
try { try {
KeyChainConnection keyChainConnection = KeyChain.bind(CredentialStorage.this); KeyChainConnection keyChainConnection = KeyChain.bind(CredentialStorage.this);
try { try {

View File

@@ -615,12 +615,10 @@ public final class Utils extends com.android.settingslib.Utils {
* @return the managed profile id or UserHandle.USER_NULL if there is none. * @return the managed profile id or UserHandle.USER_NULL if there is none.
*/ */
public static int getManagedProfileId(UserManager um, int parentUserId) { public static int getManagedProfileId(UserManager um, int parentUserId) {
List<UserInfo> profiles = um.getProfiles(parentUserId); int[] profileIds = um.getProfileIdsWithDisabled(parentUserId);
int numProfiles = profiles.size(); for (int profileId : profileIds) {
for (int i = 0; i < numProfiles; ++i) { if (profileId != parentUserId) {
UserInfo profile = profiles.get(i); return profileId;
if (profile.id != parentUserId) {
return profile.id;
} }
} }
return UserHandle.USER_NULL; return UserHandle.USER_NULL;