diff options
author | Adrian Roos <roosa@google.com> | 2014-07-22 16:03:12 +0200 |
---|---|---|
committer | Adrian Roos <roosa@google.com> | 2014-07-22 15:19:25 +0000 |
commit | 70441467f4dc232cd8e6142f0afc117787dc979b (patch) | |
tree | fa8258c04b0627e4f83339f4b95a5796b3f46a3c /packages/SystemUI/src/com/android | |
parent | 592740d4e93b16407266b9fe0c2a2c5f0fe133d3 (diff) | |
download | frameworks_base-70441467f4dc232cd8e6142f0afc117787dc979b.zip frameworks_base-70441467f4dc232cd8e6142f0afc117787dc979b.tar.gz frameworks_base-70441467f4dc232cd8e6142f0afc117787dc979b.tar.bz2 |
Guest: Switch back to previous user when exiting
Adds code to track the last non-guest that was switched
to. Previously, it would always switch back to the owner.
Bug: 15759636
Change-Id: I31415206010f0ab22eedd48eb551cc7ce9b5570f
Diffstat (limited to 'packages/SystemUI/src/com/android')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 49e7c67..7bf2c34 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -66,6 +66,7 @@ public class UserSwitcherController { private ArrayList<UserRecord> mUsers = new ArrayList<>(); private Dialog mExitGuestDialog; + private int mLastNonGuestUser = UserHandle.USER_OWNER; public UserSwitcherController(Context context) { mContext = context; @@ -204,7 +205,14 @@ public class UserSwitcherController { } private void exitGuest(int id) { - switchToUserId(UserHandle.USER_OWNER); + int newId = UserHandle.USER_OWNER; + if (mLastNonGuestUser != UserHandle.USER_OWNER) { + UserInfo info = mUserManager.getUserInfo(mLastNonGuestUser); + if (info != null && info.isEnabled() && info.supportsSwitchTo()) { + newId = info.id; + } + } + switchToUserId(newId); mUserManager.removeUser(id); } @@ -230,6 +238,9 @@ public class UserSwitcherController { if (record.isCurrent != shouldBeCurrent) { mUsers.set(i, record.copyWithIsCurrent(shouldBeCurrent)); } + if (shouldBeCurrent && !record.isGuest) { + mLastNonGuestUser = record.info.id; + } } notifyAdapters(); } @@ -244,6 +255,7 @@ public class UserSwitcherController { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("UserSwitcherController state:"); + pw.println(" mLastNonGuestUser=" + mLastNonGuestUser); pw.print(" mUsers.size="); pw.println(mUsers.size()); for (int i = 0; i < mUsers.size(); i++) { final UserRecord u = mUsers.get(i); |