Loading services/core/java/com/android/server/am/ActivityManagerService.java +3 −1 Original line number Diff line number Diff line Loading @@ -1899,7 +1899,9 @@ public final class ActivityManagerService extends ActivityManagerNative case SYSTEM_USER_UNLOCK_MSG: { final int userId = msg.arg1; mSystemServiceManager.unlockUser(userId); synchronized (ActivityManagerService.this) { mRecentTasks.loadUserRecentsLocked(userId); } if (userId == UserHandle.USER_SYSTEM) { startPersistentApps(PackageManager.MATCH_ENCRYPTION_UNAWARE); } Loading services/core/java/com/android/server/am/TaskRecord.java +5 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.os.Debug; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.util.DisplayMetrics; import android.util.Slog; Loading Loading @@ -74,6 +75,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS; Loading Loading @@ -444,9 +446,9 @@ final class TaskRecord { // task as having a true root activity. rootWasReset = true; } userId = UserHandle.getUserId(info.applicationInfo.uid); mUserSetupComplete = mService.mUserController.isUserSetupCompleteLocked(userId); mUserSetupComplete = Settings.Secure.getIntForUser(mService.mContext.getContentResolver(), USER_SETUP_COMPLETE, 0, userId) != 0; if ((info.flags & ActivityInfo.FLAG_AUTO_REMOVE_FROM_RECENTS) != 0) { // If the activity itself has requested auto-remove, then just always do it. autoRemoveRecents = true; Loading Loading @@ -1570,6 +1572,7 @@ final class TaskRecord { pw.print(prefix); pw.print("userId="); pw.print(userId); pw.print(" effectiveUid="); UserHandle.formatUid(pw, effectiveUid); pw.print(" mCallingUid="); UserHandle.formatUid(pw, mCallingUid); pw.print(" mUserSetupComplete="); pw.print(mUserSetupComplete); pw.print(" mCallingPackage="); pw.println(mCallingPackage); if (affinity != null || rootAffinity != null) { pw.print(prefix); pw.print("affinity="); pw.print(affinity); Loading services/core/java/com/android/server/am/UserController.java +0 −54 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; import static android.content.Context.KEYGUARD_SERVICE; import static android.os.Process.SYSTEM_UID; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; Loading @@ -46,14 +45,11 @@ import android.app.Dialog; import android.app.IStopUserCallback; import android.app.IUserSwitchObserver; import android.app.KeyguardManager; import android.content.ContentResolver; import android.content.Context; import android.content.IIntentReceiver; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.database.ContentObserver; import android.net.Uri; import android.os.BatteryStats; import android.os.Binder; import android.os.Bundle; Loading @@ -71,12 +67,10 @@ import android.os.UserManager; import android.os.UserManagerInternal; import android.os.storage.IMountService; import android.os.storage.StorageManager; import android.provider.Settings; import android.util.IntArray; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import com.android.internal.R; Loading Loading @@ -153,34 +147,6 @@ final class UserController { private final LockPatternUtils mLockPatternUtils; // Set of users who have completed the set-up process. private final SparseBooleanArray mSetupCompletedUsers = new SparseBooleanArray(); private final UserSetupCompleteContentObserver mUserSetupCompleteContentObserver; private class UserSetupCompleteContentObserver extends ContentObserver { private final Uri mUserSetupComplete = Settings.Secure.getUriFor(USER_SETUP_COMPLETE); public UserSetupCompleteContentObserver(Handler handler) { super(handler); } void register(ContentResolver resolver) { resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); synchronized (mService) { updateUserSetupCompleteLocked(UserHandle.USER_ALL); } } @Override public void onChange(boolean selfChange, Uri uri, int userId) { if (mUserSetupComplete.equals(uri)) { synchronized (mService) { updateUserSetupCompleteLocked(userId); } } } } UserController(ActivityManagerService service) { mService = service; mHandler = mService.mHandler; Loading @@ -190,7 +156,6 @@ final class UserController { mUserLru.add(UserHandle.USER_SYSTEM); mLockPatternUtils = new LockPatternUtils(mService.mContext); updateStartedUserArrayLocked(); mUserSetupCompleteContentObserver = new UserSetupCompleteContentObserver(mHandler); } void finishUserSwitch(UserState uss) { Loading Loading @@ -477,7 +442,6 @@ final class UserController { mStartedUsers.remove(userId); mUserLru.remove(Integer.valueOf(userId)); updateStartedUserArrayLocked(); mSetupCompletedUsers.delete(userId); mService.onUserStoppedLocked(userId); // Clean up all state and processes associated with the user. Loading Loading @@ -677,7 +641,6 @@ final class UserController { final Integer userIdInt = userId; mUserLru.remove(userIdInt); mUserLru.add(userIdInt); updateUserSetupCompleteLocked(userId); if (foreground) { mCurrentUserId = userId; Loading Loading @@ -892,22 +855,6 @@ final class UserController { mUserSwitchObservers.finishBroadcast(); } void updateUserSetupCompleteLocked(int userId) { final ContentResolver cr = mService.mContext.getContentResolver(); for (int i = mStartedUsers.size() - 1; i >= 0; i--) { int startedUser = mStartedUsers.keyAt(i); if (startedUser == userId || userId == UserHandle.USER_ALL) { final boolean setupComplete = Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, startedUser) != 0; mSetupCompletedUsers.put(startedUser, setupComplete); } } } boolean isUserSetupCompleteLocked(int userId) { return mSetupCompletedUsers.get(userId); } private void stopBackgroundUsersIfEnforced(int oldUserId) { // Never stop system user if (oldUserId == UserHandle.USER_SYSTEM) { Loading Loading @@ -1218,7 +1165,6 @@ final class UserController { void onSystemReady() { updateCurrentProfileIdsLocked(); mUserSetupCompleteContentObserver.register(mService.mContext.getContentResolver()); } /** Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +3 −1 Original line number Diff line number Diff line Loading @@ -1899,7 +1899,9 @@ public final class ActivityManagerService extends ActivityManagerNative case SYSTEM_USER_UNLOCK_MSG: { final int userId = msg.arg1; mSystemServiceManager.unlockUser(userId); synchronized (ActivityManagerService.this) { mRecentTasks.loadUserRecentsLocked(userId); } if (userId == UserHandle.USER_SYSTEM) { startPersistentApps(PackageManager.MATCH_ENCRYPTION_UNAWARE); } Loading
services/core/java/com/android/server/am/TaskRecord.java +5 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.os.Debug; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.util.DisplayMetrics; import android.util.Slog; Loading Loading @@ -74,6 +75,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_RECENTS; Loading Loading @@ -444,9 +446,9 @@ final class TaskRecord { // task as having a true root activity. rootWasReset = true; } userId = UserHandle.getUserId(info.applicationInfo.uid); mUserSetupComplete = mService.mUserController.isUserSetupCompleteLocked(userId); mUserSetupComplete = Settings.Secure.getIntForUser(mService.mContext.getContentResolver(), USER_SETUP_COMPLETE, 0, userId) != 0; if ((info.flags & ActivityInfo.FLAG_AUTO_REMOVE_FROM_RECENTS) != 0) { // If the activity itself has requested auto-remove, then just always do it. autoRemoveRecents = true; Loading Loading @@ -1570,6 +1572,7 @@ final class TaskRecord { pw.print(prefix); pw.print("userId="); pw.print(userId); pw.print(" effectiveUid="); UserHandle.formatUid(pw, effectiveUid); pw.print(" mCallingUid="); UserHandle.formatUid(pw, mCallingUid); pw.print(" mUserSetupComplete="); pw.print(mUserSetupComplete); pw.print(" mCallingPackage="); pw.println(mCallingPackage); if (affinity != null || rootAffinity != null) { pw.print(prefix); pw.print("affinity="); pw.print(affinity); Loading
services/core/java/com/android/server/am/UserController.java +0 −54 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; import static android.content.Context.KEYGUARD_SERVICE; import static android.os.Process.SYSTEM_UID; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; Loading @@ -46,14 +45,11 @@ import android.app.Dialog; import android.app.IStopUserCallback; import android.app.IUserSwitchObserver; import android.app.KeyguardManager; import android.content.ContentResolver; import android.content.Context; import android.content.IIntentReceiver; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.database.ContentObserver; import android.net.Uri; import android.os.BatteryStats; import android.os.Binder; import android.os.Bundle; Loading @@ -71,12 +67,10 @@ import android.os.UserManager; import android.os.UserManagerInternal; import android.os.storage.IMountService; import android.os.storage.StorageManager; import android.provider.Settings; import android.util.IntArray; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import com.android.internal.R; Loading Loading @@ -153,34 +147,6 @@ final class UserController { private final LockPatternUtils mLockPatternUtils; // Set of users who have completed the set-up process. private final SparseBooleanArray mSetupCompletedUsers = new SparseBooleanArray(); private final UserSetupCompleteContentObserver mUserSetupCompleteContentObserver; private class UserSetupCompleteContentObserver extends ContentObserver { private final Uri mUserSetupComplete = Settings.Secure.getUriFor(USER_SETUP_COMPLETE); public UserSetupCompleteContentObserver(Handler handler) { super(handler); } void register(ContentResolver resolver) { resolver.registerContentObserver(mUserSetupComplete, false, this, UserHandle.USER_ALL); synchronized (mService) { updateUserSetupCompleteLocked(UserHandle.USER_ALL); } } @Override public void onChange(boolean selfChange, Uri uri, int userId) { if (mUserSetupComplete.equals(uri)) { synchronized (mService) { updateUserSetupCompleteLocked(userId); } } } } UserController(ActivityManagerService service) { mService = service; mHandler = mService.mHandler; Loading @@ -190,7 +156,6 @@ final class UserController { mUserLru.add(UserHandle.USER_SYSTEM); mLockPatternUtils = new LockPatternUtils(mService.mContext); updateStartedUserArrayLocked(); mUserSetupCompleteContentObserver = new UserSetupCompleteContentObserver(mHandler); } void finishUserSwitch(UserState uss) { Loading Loading @@ -477,7 +442,6 @@ final class UserController { mStartedUsers.remove(userId); mUserLru.remove(Integer.valueOf(userId)); updateStartedUserArrayLocked(); mSetupCompletedUsers.delete(userId); mService.onUserStoppedLocked(userId); // Clean up all state and processes associated with the user. Loading Loading @@ -677,7 +641,6 @@ final class UserController { final Integer userIdInt = userId; mUserLru.remove(userIdInt); mUserLru.add(userIdInt); updateUserSetupCompleteLocked(userId); if (foreground) { mCurrentUserId = userId; Loading Loading @@ -892,22 +855,6 @@ final class UserController { mUserSwitchObservers.finishBroadcast(); } void updateUserSetupCompleteLocked(int userId) { final ContentResolver cr = mService.mContext.getContentResolver(); for (int i = mStartedUsers.size() - 1; i >= 0; i--) { int startedUser = mStartedUsers.keyAt(i); if (startedUser == userId || userId == UserHandle.USER_ALL) { final boolean setupComplete = Settings.Secure.getIntForUser(cr, USER_SETUP_COMPLETE, 0, startedUser) != 0; mSetupCompletedUsers.put(startedUser, setupComplete); } } } boolean isUserSetupCompleteLocked(int userId) { return mSetupCompletedUsers.get(userId); } private void stopBackgroundUsersIfEnforced(int oldUserId) { // Never stop system user if (oldUserId == UserHandle.USER_SYSTEM) { Loading Loading @@ -1218,7 +1165,6 @@ final class UserController { void onSystemReady() { updateCurrentProfileIdsLocked(); mUserSetupCompleteContentObserver.register(mService.mContext.getContentResolver()); } /** Loading