Revert getUserInfo change and add isManagedPorfile(int userId)

am: 8673b28

* commit '8673b2899e775014336efff44ea88dcac2b25bdd':
  Revert getUserInfo change and add isManagedPorfile(int userId)
This commit is contained in:
Tony Mak
2016-03-22 15:30:21 +00:00
committed by android-build-merger
5 changed files with 44 additions and 16 deletions

View File

@@ -31658,6 +31658,7 @@ package android.os {
method public android.os.Bundle getUserRestrictions(android.os.UserHandle); method public android.os.Bundle getUserRestrictions(android.os.UserHandle);
method public boolean hasUserRestriction(java.lang.String); method public boolean hasUserRestriction(java.lang.String);
method public boolean isManagedProfile(); method public boolean isManagedProfile();
method public boolean isManagedProfile(int);
method public boolean isQuietModeEnabled(android.os.UserHandle); method public boolean isQuietModeEnabled(android.os.UserHandle);
method public boolean isSystemUser(); method public boolean isSystemUser();
method public boolean isUserAGoat(); method public boolean isUserAGoat();

View File

@@ -1147,8 +1147,7 @@ public class ApplicationPackageManager extends PackageManager {
} }
private Drawable getManagedProfileIconForDensity(UserHandle user, int drawableId, int density) { private Drawable getManagedProfileIconForDensity(UserHandle user, int drawableId, int density) {
UserInfo userInfo = getUserInfo(user.getIdentifier()); if (isManagedProfile(user.getIdentifier())) {
if (userInfo != null && userInfo.isManagedProfile()) {
return getDrawableForDensity(drawableId, density); return getDrawableForDensity(drawableId, density);
} }
return null; return null;
@@ -1156,8 +1155,7 @@ public class ApplicationPackageManager extends PackageManager {
@Override @Override
public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) { public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) {
UserInfo userInfo = getUserInfo(user.getIdentifier()); if (isManagedProfile(user.getIdentifier())) {
if (userInfo != null && userInfo.isManagedProfile()) {
return Resources.getSystem().getString( return Resources.getSystem().getString(
com.android.internal.R.string.managed_profile_label_badge, label); com.android.internal.R.string.managed_profile_label_badge, label);
} }
@@ -2259,17 +2257,16 @@ public class ApplicationPackageManager extends PackageManager {
return drawable; return drawable;
} }
private int getBadgeResIdForUser(int userHandle) { private int getBadgeResIdForUser(int userId) {
// Return the framework-provided badge. // Return the framework-provided badge.
UserInfo userInfo = getUserInfo(userHandle); if (isManagedProfile(userId)) {
if (userInfo != null && userInfo.isManagedProfile()) {
return com.android.internal.R.drawable.ic_corp_icon_badge; return com.android.internal.R.drawable.ic_corp_icon_badge;
} }
return 0; return 0;
} }
private UserInfo getUserInfo(int userHandle) { private boolean isManagedProfile(int userId) {
return getUserManager().getUserInfo(userHandle); return getUserManager().isManagedProfile(userId);
} }
/** {@hide} */ /** {@hide} */

View File

@@ -76,4 +76,5 @@ interface IUserManager {
PersistableBundle getSeedAccountOptions(); PersistableBundle getSeedAccountOptions();
void clearSeedAccountData(); void clearSeedAccountData();
boolean someUserHasSeedAccount(in String accountName, in String accountType); boolean someUserHasSeedAccount(in String accountName, in String accountType);
boolean isManagedProfile(int userId);
} }

View File

@@ -822,8 +822,28 @@ public class UserManager {
*/ */
@SystemApi @SystemApi
public boolean isManagedProfile() { public boolean isManagedProfile() {
UserInfo user = getUserInfo(UserHandle.myUserId()); try {
return user != null ? user.isManagedProfile() : false; return mService.isManagedProfile(UserHandle.myUserId());
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
}
/**
* Checks if the specified user is a managed profile.
* Requires {@link android.Manifest.permission#MANAGE_USERS} permission, otherwise the caller
* must be in the same profile group of specified user.
*
* @return whether the specified user is a managed profile.
* @hide
*/
@SystemApi
public boolean isManagedProfile(@UserIdInt int userId) {
try {
return mService.isManagedProfile(userId);
} catch (RemoteException re) {
throw re.rethrowFromSystemServer();
}
} }
/** /**
@@ -964,8 +984,7 @@ public class UserManager {
/** /**
* Returns the UserInfo object describing a specific user. * Returns the UserInfo object describing a specific user.
* Requires {@link android.Manifest.permission#MANAGE_USERS} permission or the caller is * Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
* in the same profile group of target user.
* @param userHandle the user handle of the user whose information is being requested. * @param userHandle the user handle of the user whose information is being requested.
* @return the UserInfo object for a specific user. * @return the UserInfo object for a specific user.
* @hide * @hide

View File

@@ -1,3 +1,4 @@
/* /*
* Copyright (C) 2011 The Android Open Source Project * Copyright (C) 2011 The Android Open Source Project
* *
@@ -650,18 +651,27 @@ public class UserManagerService extends IUserManager.Stub {
@Override @Override
public UserInfo getUserInfo(int userId) { public UserInfo getUserInfo(int userId) {
checkManageUsersPermission("query user");
synchronized (mUsersLock) {
return getUserInfoLU(userId);
}
}
@Override
public boolean isManagedProfile(int userId) {
int callingUserId = UserHandle.getCallingUserId(); int callingUserId = UserHandle.getCallingUserId();
if (callingUserId != userId && !hasManageUsersPermission()) { if (callingUserId != userId && !hasManageUsersPermission()) {
synchronized (mPackagesLock) { synchronized (mPackagesLock) {
if (!isSameProfileGroupLP(callingUserId, userId)) { if (!isSameProfileGroupLP(callingUserId, userId)) {
throw new SecurityException( throw new SecurityException(
"You need MANAGE_USERS permission to: query users outside profile" + "You need MANAGE_USERS permission to: check if specified user a " +
" group"); "managed profile outside your profile group");
} }
} }
} }
synchronized (mUsersLock) { synchronized (mUsersLock) {
return getUserInfoLU(userId); UserInfo userInfo = getUserInfoLU(userId);
return userInfo != null && userInfo.isManagedProfile();
} }
} }