From e1206377de1f07116b5b3986e5a48a088cdeae6a Mon Sep 17 00:00:00 2001 From: Jiaquan He Date: Tue, 3 May 2016 14:11:23 -0700 Subject: [PATCH] Move the user account querying logic to UserInfoController. Bug: 28383751 Change-Id: I85985d772b6aa9bfeb4e900854c9150481bddf7a (cherry picked from commit ad4889c3c70ed042c24eac80f0f304ba67962dc3) --- .../android/systemui/qs/tiles/UserTile.java | 2 +- .../phone/KeyguardStatusBarView.java | 2 +- .../statusbar/phone/QuickStatusBarHeader.java | 2 +- .../statusbar/phone/StatusBarHeaderView.java | 2 +- .../statusbar/policy/UserInfoController.java | 50 +++++++++++++++---- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java index 5b4279c551df8..cc875ac0a2ba9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java @@ -96,7 +96,7 @@ public class UserTile extends QSTile implements UserInfoController } @Override - public void onUserInfoChanged(String name, Drawable picture) { + public void onUserInfoChanged(String name, Drawable picture, String userAccount) { mLastUpdate = new Pair<>(name, picture); refreshState(mLastUpdate); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index e08b945493c98..2800e2d79019a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -150,7 +150,7 @@ public class KeyguardStatusBarView extends RelativeLayout public void setUserInfoController(UserInfoController userInfoController) { userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() { @Override - public void onUserInfoChanged(String name, Drawable picture) { + public void onUserInfoChanged(String name, Drawable picture, String userAccount) { mMultiUserAvatar.setImageDrawable(picture); } }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java index 78019ead0b973..dfc02852bd714 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java @@ -395,7 +395,7 @@ public class QuickStatusBarHeader extends BaseStatusBarHeader implements } @Override - public void onUserInfoChanged(String name, Drawable picture) { + public void onUserInfoChanged(String name, Drawable picture, String userAccount) { mMultiUserAvatar.setImageDrawable(picture); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java index a051973efddae..8d15c65412d01 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java @@ -504,7 +504,7 @@ public class StatusBarHeaderView extends BaseStatusBarHeader implements View.OnC public void setUserInfoController(UserInfoController userInfoController) { userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() { @Override - public void onUserInfoChanged(String name, Drawable picture) { + public void onUserInfoChanged(String name, Drawable picture, String userAccount) { mMultiUserAvatar.setImageDrawable(picture); } }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java index c5a4f5ece7460..4a6e215c493c4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoController.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.policy; +import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.content.BroadcastReceiver; import android.content.Context; @@ -33,7 +34,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.provider.ContactsContract; import android.util.Log; -import android.util.Pair; import com.android.internal.util.UserIcons; import com.android.settingslib.drawable.UserIconDrawable; @@ -48,10 +48,11 @@ public final class UserInfoController { private final Context mContext; private final ArrayList mCallbacks = new ArrayList(); - private AsyncTask> mUserInfoTask; + private AsyncTask mUserInfoTask; private String mUserName; private Drawable mUserDrawable; + private String mUserAccount; public UserInfoController(Context context) { mContext = context; @@ -68,7 +69,7 @@ public final class UserInfoController { public void addListener(OnUserInfoChangedListener callback) { mCallbacks.add(callback); - callback.onUserInfoChanged(mUserName, mUserDrawable); + callback.onUserInfoChanged(mUserName, mUserDrawable, mUserAccount); } public void remListener(OnUserInfoChangedListener callback) { @@ -137,9 +138,10 @@ public final class UserInfoController { res.getDimensionPixelSize(R.dimen.multi_user_avatar_keyguard_size)); final Context context = currentUserContext; - mUserInfoTask = new AsyncTask>() { + mUserInfoTask = new AsyncTask() { + @Override - protected Pair doInBackground(Void... params) { + protected UserInfoQueryResult doInBackground(Void... params) { final UserManager um = UserManager.get(mContext); // Fall back to the UserManager nickname if we can't read the name from the local @@ -175,13 +177,15 @@ public final class UserInfoController { } } } - return new Pair(name, avatar); + String userAccount = um.getUserAccount(userId); + return new UserInfoQueryResult(name, avatar, userAccount); } @Override - protected void onPostExecute(Pair result) { - mUserName = result.first; - mUserDrawable = result.second; + protected void onPostExecute(UserInfoQueryResult result) { + mUserName = result.getName(); + mUserDrawable = result.getAvatar(); + mUserAccount = result.getUserAccount(); mUserInfoTask = null; notifyChanged(); } @@ -191,7 +195,7 @@ public final class UserInfoController { private void notifyChanged() { for (OnUserInfoChangedListener listener : mCallbacks) { - listener.onUserInfoChanged(mUserName, mUserDrawable); + listener.onUserInfoChanged(mUserName, mUserDrawable, mUserAccount); } } @@ -200,6 +204,30 @@ public final class UserInfoController { } public interface OnUserInfoChangedListener { - public void onUserInfoChanged(String name, Drawable picture); + public void onUserInfoChanged(String name, Drawable picture, String userAccount); + } + + private static class UserInfoQueryResult { + private String mName; + private Drawable mAvatar; + private String mUserAccount; + + public UserInfoQueryResult(String name, Drawable avatar, String userAccount) { + mName = name; + mAvatar = avatar; + mUserAccount = userAccount; + } + + public String getName() { + return mName; + } + + public Drawable getAvatar() { + return mAvatar; + } + + public String getUserAccount() { + return mUserAccount; + } } }