Loading services/core/java/com/android/server/am/UserController.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1477,6 +1477,10 @@ final class UserController { case UserState.STATE_RUNNING_UNLOCKING: case UserState.STATE_RUNNING_UNLOCKING: case UserState.STATE_RUNNING_UNLOCKED: case UserState.STATE_RUNNING_UNLOCKED: return true; return true; // In the stopping/shutdown state return unlock state of the user key case UserState.STATE_STOPPING: case UserState.STATE_SHUTDOWN: return StorageManager.isUserKeyUnlocked(userId); default: default: return false; return false; } } Loading @@ -1485,6 +1489,10 @@ final class UserController { switch (state.state) { switch (state.state) { case UserState.STATE_RUNNING_UNLOCKED: case UserState.STATE_RUNNING_UNLOCKED: return true; return true; // In the stopping/shutdown state return unlock state of the user key case UserState.STATE_STOPPING: case UserState.STATE_SHUTDOWN: return StorageManager.isUserKeyUnlocked(userId); default: default: return false; return false; } } Loading services/core/java/com/android/server/pm/UserManagerService.java +16 −6 Original line number Original line Diff line number Diff line Loading @@ -949,7 +949,7 @@ public class UserManagerService extends IUserManager.Stub { @Override @Override public boolean isUserUnlocked(int userId) { public boolean isUserUnlocked(int userId) { checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "isUserUnlocked"); checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "isUserUnlocked"); return mLocalService.isUserUnlockingOrUnlocked(userId); return mLocalService.isUserUnlocked(userId); } } @Override @Override Loading Loading @@ -3692,19 +3692,29 @@ public class UserManagerService extends IUserManager.Stub { @Override @Override public boolean isUserUnlockingOrUnlocked(int userId) { public boolean isUserUnlockingOrUnlocked(int userId) { int state; synchronized (mUserStates) { synchronized (mUserStates) { int state = mUserStates.get(userId, -1); state = mUserStates.get(userId, -1); } // Special case, in the stopping/shutdown state user key can still be unlocked if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { return StorageManager.isUserKeyUnlocked(userId); } return (state == UserState.STATE_RUNNING_UNLOCKING) return (state == UserState.STATE_RUNNING_UNLOCKING) || (state == UserState.STATE_RUNNING_UNLOCKED); || (state == UserState.STATE_RUNNING_UNLOCKED); } } } @Override @Override public boolean isUserUnlocked(int userId) { public boolean isUserUnlocked(int userId) { int state; synchronized (mUserStates) { synchronized (mUserStates) { int state = mUserStates.get(userId, -1); state = mUserStates.get(userId, -1); return state == UserState.STATE_RUNNING_UNLOCKED; } } // Special case, in the stopping/shutdown state user key can still be unlocked if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { return StorageManager.isUserKeyUnlocked(userId); } return state == UserState.STATE_RUNNING_UNLOCKED; } } } } Loading Loading
services/core/java/com/android/server/am/UserController.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1477,6 +1477,10 @@ final class UserController { case UserState.STATE_RUNNING_UNLOCKING: case UserState.STATE_RUNNING_UNLOCKING: case UserState.STATE_RUNNING_UNLOCKED: case UserState.STATE_RUNNING_UNLOCKED: return true; return true; // In the stopping/shutdown state return unlock state of the user key case UserState.STATE_STOPPING: case UserState.STATE_SHUTDOWN: return StorageManager.isUserKeyUnlocked(userId); default: default: return false; return false; } } Loading @@ -1485,6 +1489,10 @@ final class UserController { switch (state.state) { switch (state.state) { case UserState.STATE_RUNNING_UNLOCKED: case UserState.STATE_RUNNING_UNLOCKED: return true; return true; // In the stopping/shutdown state return unlock state of the user key case UserState.STATE_STOPPING: case UserState.STATE_SHUTDOWN: return StorageManager.isUserKeyUnlocked(userId); default: default: return false; return false; } } Loading
services/core/java/com/android/server/pm/UserManagerService.java +16 −6 Original line number Original line Diff line number Diff line Loading @@ -949,7 +949,7 @@ public class UserManagerService extends IUserManager.Stub { @Override @Override public boolean isUserUnlocked(int userId) { public boolean isUserUnlocked(int userId) { checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "isUserUnlocked"); checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "isUserUnlocked"); return mLocalService.isUserUnlockingOrUnlocked(userId); return mLocalService.isUserUnlocked(userId); } } @Override @Override Loading Loading @@ -3692,19 +3692,29 @@ public class UserManagerService extends IUserManager.Stub { @Override @Override public boolean isUserUnlockingOrUnlocked(int userId) { public boolean isUserUnlockingOrUnlocked(int userId) { int state; synchronized (mUserStates) { synchronized (mUserStates) { int state = mUserStates.get(userId, -1); state = mUserStates.get(userId, -1); } // Special case, in the stopping/shutdown state user key can still be unlocked if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { return StorageManager.isUserKeyUnlocked(userId); } return (state == UserState.STATE_RUNNING_UNLOCKING) return (state == UserState.STATE_RUNNING_UNLOCKING) || (state == UserState.STATE_RUNNING_UNLOCKED); || (state == UserState.STATE_RUNNING_UNLOCKED); } } } @Override @Override public boolean isUserUnlocked(int userId) { public boolean isUserUnlocked(int userId) { int state; synchronized (mUserStates) { synchronized (mUserStates) { int state = mUserStates.get(userId, -1); state = mUserStates.get(userId, -1); return state == UserState.STATE_RUNNING_UNLOCKED; } } // Special case, in the stopping/shutdown state user key can still be unlocked if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { return StorageManager.isUserKeyUnlocked(userId); } return state == UserState.STATE_RUNNING_UNLOCKED; } } } } Loading