Merge "Adding internal version of getUsers without permission check." into rvc-dev am: 467891337c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11909341 Change-Id: Ib83d521361216540d619d7a758c39fafabe6a4b9
This commit is contained in:
@@ -27,6 +27,7 @@ import com.android.server.pm.RestrictionsSet;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @hide Only for use within the system server.
|
||||
@@ -218,6 +219,13 @@ public abstract class UserManagerInternal {
|
||||
*/
|
||||
public abstract int[] getUserIds();
|
||||
|
||||
/**
|
||||
* Internal implementation of getUsers does not check permissions.
|
||||
* This improves performance for calls from inside system server which already have permissions
|
||||
* checked.
|
||||
*/
|
||||
public abstract @NonNull List<UserInfo> getUsers(boolean excludeDying);
|
||||
|
||||
/**
|
||||
* Checks if the {@code callingUserId} and {@code targetUserId} are same or in same group
|
||||
* and that the {@code callingUserId} is not a profile and {@code targetUserId} is enabled.
|
||||
|
||||
@@ -2988,7 +2988,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
t.traceEnd();
|
||||
|
||||
t.traceBegin("read user settings");
|
||||
mFirstBoot = !mSettings.readLPw(mUserManager.getUsers(false));
|
||||
mFirstBoot = !mSettings.readLPw(mInjector.getUserManagerInternal().getUsers(false));
|
||||
t.traceEnd();
|
||||
|
||||
// Clean up orphaned packages for which the code path doesn't exist
|
||||
@@ -3431,7 +3431,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// boot, then we need to initialize the default preferred apps across
|
||||
// all defined users.
|
||||
if (!mOnlyCore && (mPromoteSystemApps || mFirstBoot)) {
|
||||
for (UserInfo user : mUserManager.getUsers(true)) {
|
||||
for (UserInfo user : mInjector.getUserManagerInternal().getUsers(true)) {
|
||||
mSettings.applyDefaultPreferredAppsLPw(user.id);
|
||||
primeDomainVerificationsLPw(user.id);
|
||||
}
|
||||
@@ -22143,7 +22143,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
}
|
||||
for (String packageName : apkList) {
|
||||
setSystemAppHiddenUntilInstalled(packageName, true);
|
||||
for (UserInfo user : mUserManager.getUsers(false)) {
|
||||
for (UserInfo user : mInjector.getUserManagerInternal().getUsers(false)) {
|
||||
setSystemAppInstallState(packageName, false, user.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -751,13 +751,19 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
}
|
||||
|
||||
public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
|
||||
return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */ true);
|
||||
return getUsers(/*excludePartial= */ true, excludeDying, /* excludePreCreated= */
|
||||
true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying,
|
||||
boolean excludePreCreated) {
|
||||
checkManageOrCreateUsersPermission("query users");
|
||||
return getUsersInternal(excludePartial, excludeDying, excludePreCreated);
|
||||
}
|
||||
|
||||
private @NonNull List<UserInfo> getUsersInternal(boolean excludePartial, boolean excludeDying,
|
||||
boolean excludePreCreated) {
|
||||
synchronized (mUsersLock) {
|
||||
ArrayList<UserInfo> users = new ArrayList<UserInfo>(mUsers.size());
|
||||
final int userSize = mUsers.size();
|
||||
@@ -5044,6 +5050,12 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
return UserManagerService.this.getUserIds();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull List<UserInfo> getUsers(boolean excludeDying) {
|
||||
return UserManagerService.this.getUsersInternal(/*excludePartial= */ true,
|
||||
excludeDying, /* excludePreCreated= */ true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUserUnlockingOrUnlocked(@UserIdInt int userId) {
|
||||
int state;
|
||||
|
||||
Reference in New Issue
Block a user