summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-07-22 16:03:12 +0200
committerAdrian Roos <roosa@google.com>2014-07-22 15:19:25 +0000
commit70441467f4dc232cd8e6142f0afc117787dc979b (patch)
treefa8258c04b0627e4f83339f4b95a5796b3f46a3c /packages/SystemUI/src/com/android
parent592740d4e93b16407266b9fe0c2a2c5f0fe133d3 (diff)
downloadframeworks_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.java14
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);