Loading services/core/java/com/android/server/am/UserController.java +19 −8 Original line number Original line Diff line number Diff line Loading @@ -165,15 +165,15 @@ final class UserController { void register(ContentResolver resolver) { void register(ContentResolver resolver) { resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); synchronized (mService) { synchronized (mService) { updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(UserHandle.USER_ALL); } } } } @Override @Override public void onChange(boolean selfChange, Uri uri) { public void onChange(boolean selfChange, Uri uri, int userId) { if (mUserSetupComplete.equals(uri)) { if (mUserSetupComplete.equals(uri)) { synchronized (mService) { synchronized (mService) { updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(userId); } } } } } } Loading Loading @@ -655,7 +655,7 @@ final class UserController { final Integer userIdInt = userId; final Integer userIdInt = userId; mUserLru.remove(userIdInt); mUserLru.remove(userIdInt); mUserLru.add(userIdInt); mUserLru.add(userIdInt); updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(userId); if (foreground) { if (foreground) { mCurrentUserId = userId; mCurrentUserId = userId; Loading Loading @@ -870,11 +870,22 @@ final class UserController { mUserSwitchObservers.finishBroadcast(); mUserSwitchObservers.finishBroadcast(); } } void updateCurrentUserSetupCompleteLocked() { void updateUserSetupCompleteLocked(int userId) { int[] users; if (userId != UserHandle.USER_ALL) { users = new int[] {userId}; } else { users = new int[mStartedUsers.size()]; for (int i = mStartedUsers.size() - 1; i >= 0; i--) { users[i] = mStartedUsers.keyAt(i); } } final ContentResolver cr = mService.mContext.getContentResolver(); final ContentResolver cr = mService.mContext.getContentResolver(); for (int i = 0; i < users.length; i++) { final boolean setupComplete = final boolean setupComplete = Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, mCurrentUserId) != 0; Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, users[i]) != 0; mSetupCompletedUsers.put(mCurrentUserId, setupComplete); mSetupCompletedUsers.put(users[i], setupComplete); } } } boolean isUserSetupCompleteLocked(int userId) { boolean isUserSetupCompleteLocked(int userId) { Loading Loading
services/core/java/com/android/server/am/UserController.java +19 −8 Original line number Original line Diff line number Diff line Loading @@ -165,15 +165,15 @@ final class UserController { void register(ContentResolver resolver) { void register(ContentResolver resolver) { resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); synchronized (mService) { synchronized (mService) { updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(UserHandle.USER_ALL); } } } } @Override @Override public void onChange(boolean selfChange, Uri uri) { public void onChange(boolean selfChange, Uri uri, int userId) { if (mUserSetupComplete.equals(uri)) { if (mUserSetupComplete.equals(uri)) { synchronized (mService) { synchronized (mService) { updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(userId); } } } } } } Loading Loading @@ -655,7 +655,7 @@ final class UserController { final Integer userIdInt = userId; final Integer userIdInt = userId; mUserLru.remove(userIdInt); mUserLru.remove(userIdInt); mUserLru.add(userIdInt); mUserLru.add(userIdInt); updateCurrentUserSetupCompleteLocked(); updateUserSetupCompleteLocked(userId); if (foreground) { if (foreground) { mCurrentUserId = userId; mCurrentUserId = userId; Loading Loading @@ -870,11 +870,22 @@ final class UserController { mUserSwitchObservers.finishBroadcast(); mUserSwitchObservers.finishBroadcast(); } } void updateCurrentUserSetupCompleteLocked() { void updateUserSetupCompleteLocked(int userId) { int[] users; if (userId != UserHandle.USER_ALL) { users = new int[] {userId}; } else { users = new int[mStartedUsers.size()]; for (int i = mStartedUsers.size() - 1; i >= 0; i--) { users[i] = mStartedUsers.keyAt(i); } } final ContentResolver cr = mService.mContext.getContentResolver(); final ContentResolver cr = mService.mContext.getContentResolver(); for (int i = 0; i < users.length; i++) { final boolean setupComplete = final boolean setupComplete = Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, mCurrentUserId) != 0; Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, users[i]) != 0; mSetupCompletedUsers.put(mCurrentUserId, setupComplete); mSetupCompletedUsers.put(users[i], setupComplete); } } } boolean isUserSetupCompleteLocked(int userId) { boolean isUserSetupCompleteLocked(int userId) { Loading