Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -24228,7 +24228,13 @@ public class PackageManagerService extends IPackageManager.Stub mPermissionManager.onSystemReady(); int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; for (int userId : UserManagerService.getInstance().getUserIds()) { final List<UserInfo> livingUsers = mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ false); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; if (mPmInternal.isPermissionUpgradeNeeded(userId)) { grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds, userId); services/core/java/com/android/server/pm/UserManagerService.java +22 −4 Original line number Diff line number Diff line Loading @@ -699,6 +699,8 @@ public class UserManagerService extends IUserManager.Stub { mContext.registerReceiver(mConfigurationChangeReceiver, new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED), null, mHandler); markEphemeralUsersForRemoval(); } /** Loading @@ -709,17 +711,33 @@ public class UserManagerService extends IUserManager.Stub { return mLocalService; } /** Marks all ephemeral users as slated for deletion. **/ private void markEphemeralUsersForRemoval() { synchronized (mUsersLock) { final int userSize = mUsers.size(); for (int i = 0; i < userSize; i++) { final UserInfo ui = mUsers.valueAt(i).info; if (ui.isEphemeral() && !ui.preCreated && ui.id != UserHandle.USER_SYSTEM) { addRemovingUserIdLocked(ui.id); ui.partial = true; ui.flags |= UserInfo.FLAG_DISABLED; } } } } /* Prunes out any partially created or partially removed users. */ void cleanupPartialUsers() { // Prune out any partially created, partially removed and ephemeral users. ArrayList<UserInfo> partials = new ArrayList<>(); synchronized (mUsersLock) { final int userSize = mUsers.size(); for (int i = 0; i < userSize; i++) { UserInfo ui = mUsers.valueAt(i).info; if ((ui.partial || ui.guestToRemove || (ui.isEphemeral() && !ui.preCreated)) && i != 0) { if ((ui.partial || ui.guestToRemove) && ui.id != UserHandle.USER_SYSTEM) { partials.add(ui); if (!mRemovingUserIds.get(ui.id)) { addRemovingUserIdLocked(ui.id); } ui.partial = true; } } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -24228,7 +24228,13 @@ public class PackageManagerService extends IPackageManager.Stub mPermissionManager.onSystemReady(); int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; for (int userId : UserManagerService.getInstance().getUserIds()) { final List<UserInfo> livingUsers = mInjector.getUserManagerInternal().getUsers( /* excludePartial= */ true, /* excludeDying= */ true, /* excludePreCreated= */ false); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; if (mPmInternal.isPermissionUpgradeNeeded(userId)) { grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds, userId);
services/core/java/com/android/server/pm/UserManagerService.java +22 −4 Original line number Diff line number Diff line Loading @@ -699,6 +699,8 @@ public class UserManagerService extends IUserManager.Stub { mContext.registerReceiver(mConfigurationChangeReceiver, new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED), null, mHandler); markEphemeralUsersForRemoval(); } /** Loading @@ -709,17 +711,33 @@ public class UserManagerService extends IUserManager.Stub { return mLocalService; } /** Marks all ephemeral users as slated for deletion. **/ private void markEphemeralUsersForRemoval() { synchronized (mUsersLock) { final int userSize = mUsers.size(); for (int i = 0; i < userSize; i++) { final UserInfo ui = mUsers.valueAt(i).info; if (ui.isEphemeral() && !ui.preCreated && ui.id != UserHandle.USER_SYSTEM) { addRemovingUserIdLocked(ui.id); ui.partial = true; ui.flags |= UserInfo.FLAG_DISABLED; } } } } /* Prunes out any partially created or partially removed users. */ void cleanupPartialUsers() { // Prune out any partially created, partially removed and ephemeral users. ArrayList<UserInfo> partials = new ArrayList<>(); synchronized (mUsersLock) { final int userSize = mUsers.size(); for (int i = 0; i < userSize; i++) { UserInfo ui = mUsers.valueAt(i).info; if ((ui.partial || ui.guestToRemove || (ui.isEphemeral() && !ui.preCreated)) && i != 0) { if ((ui.partial || ui.guestToRemove) && ui.id != UserHandle.USER_SYSTEM) { partials.add(ui); if (!mRemovingUserIds.get(ui.id)) { addRemovingUserIdLocked(ui.id); } ui.partial = true; } } Loading