Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu } @Override public void onUserSwitched(int userId) { public void onUserSwitching(int userId) { if (DEBUG) Log.d(TAG, "onUserSwitched(" + userId + ")"); if (mBiometricUnlock != null) { mBiometricUnlock.stop(); Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +19 −5 Original line number Diff line number Diff line Loading @@ -101,9 +101,12 @@ public class KeyguardHostView extends KeyguardViewBase { private boolean mSafeModeEnabled; private boolean mUserSetupCompleted; // User for whom this host view was created private int mUserId; private KeyguardMultiUserSelectorView mKeyguardMultiUserSelectorView; /*package*/ interface TransportCallback { void onListenerDetached(); void onListenerAttached(); Loading Loading @@ -209,6 +212,12 @@ public class KeyguardHostView extends KeyguardViewBase { mCleanupAppWidgetsOnBootCompleted = false; } } @Override public void onUserSwitchComplete(int userId) { if (mKeyguardMultiUserSelectorView != null) { mKeyguardMultiUserSelectorView.finalizeActiveUserView(true); } } }; private SlidingChallengeLayout mSlidingChallengeLayout; Loading Loading @@ -399,6 +408,12 @@ public class KeyguardHostView extends KeyguardViewBase { } }; public void initializeSwitchingUserState(boolean switching) { if (!switching && mKeyguardMultiUserSelectorView != null) { mKeyguardMultiUserSelectorView.finalizeActiveUserView(false); } } public void userActivity() { if (mViewMediatorCallback != null) { mViewMediatorCallback.userActivity(); Loading Loading @@ -1452,10 +1467,9 @@ public class KeyguardHostView extends KeyguardViewBase { if (users.size() > 1) { if (multiUserView instanceof KeyguardMultiUserSelectorView) { KeyguardMultiUserSelectorView multiUser = (KeyguardMultiUserSelectorView) multiUserView; multiUser.setVisibility(View.VISIBLE); multiUser.addUsers(users); mKeyguardMultiUserSelectorView = (KeyguardMultiUserSelectorView) multiUserView; mKeyguardMultiUserSelectorView.setVisibility(View.VISIBLE); mKeyguardMultiUserSelectorView.addUsers(users); UserSwitcherCallback callback = new UserSwitcherCallback() { @Override public void hideSecurityView(int duration) { Loading @@ -1481,7 +1495,7 @@ public class KeyguardHostView extends KeyguardViewBase { } } }; multiUser.setCallback(callback); mKeyguardMultiUserSelectorView.setCallback(callback); } else { Throwable t = new Throwable(); t.fillInStackTrace(); Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java +11 −1 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ class KeyguardMultiUserAvatar extends FrameLayout { private boolean mInit = true; private KeyguardMultiUserSelectorView mUserSelector; private KeyguardCircleFramedDrawable mFramed; private boolean mPressLock; public static KeyguardMultiUserAvatar fromXml(int resId, Context context, KeyguardMultiUserSelectorView userSelector, UserInfo info) { Loading Loading @@ -212,13 +213,22 @@ class KeyguardMultiUserAvatar extends FrameLayout { @Override public void setPressed(boolean pressed) { if (!pressed || isClickable()) { if (mPressLock && !pressed) { return; } if (mPressLock || !pressed || isClickable()) { super.setPressed(pressed); mFramed.setPressed(pressed); mUserImage.invalidate(); } } public void lockPressed(boolean pressed) { mPressLock = pressed; setPressed(pressed); } public UserInfo getUserInfo() { return mUserInfo; } Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java +30 −17 Original line number Diff line number Diff line Loading @@ -81,11 +81,28 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O KeyguardMultiUserAvatar uv = createAndAddUser(user); if (user.id == activeUser.id) { mActiveUserAvatar = uv; mActiveUserAvatar.setActive(true, false, null); } else { } uv.setActive(false, false, null); } mActiveUserAvatar.lockPressed(true); } public void finalizeActiveUserView(boolean animate) { if (animate) { getHandler().postDelayed(new Runnable() { @Override public void run() { finalizeActiveUserNow(true); } }, 500); } else { finalizeActiveUserNow(animate); } } void finalizeActiveUserNow(boolean animate) { mActiveUserAvatar.lockPressed(false); mActiveUserAvatar.setActive(true, animate, null); } Comparator<UserInfo> mOrderAddedComparator = new Comparator<UserInfo>() { Loading Loading @@ -132,13 +149,11 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O // Reset the previously active user to appear inactive mCallback.hideSecurityView(FADE_OUT_ANIMATION_DURATION); setAllClickable(false); avatar.lockPressed(true); mActiveUserAvatar.setActive(false, true, new Runnable() { @Override public void run() { mActiveUserAvatar = avatar; mActiveUserAvatar.setActive(true, true, new Runnable() { @Override public void run() { if (this.getClass().getName().contains("internal")) { try { ActivityManagerNative.getDefault() Loading @@ -152,8 +167,6 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O } }); } }); } } } } policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java +26 −8 Original line number Diff line number Diff line Loading @@ -79,10 +79,11 @@ public class KeyguardUpdateMonitor { private static final int MSG_CLOCK_VISIBILITY_CHANGED = 307; private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHED = 310; private static final int MSG_USER_SWITCHING = 310; private static final int MSG_USER_REMOVED = 311; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 312; protected static final int MSG_BOOT_COMPLETED = 313; private static final int MSG_USER_SWITCH_COMPLETE = 314; private static KeyguardUpdateMonitor sInstance; Loading Loading @@ -147,8 +148,11 @@ public class KeyguardUpdateMonitor { case MSG_DPM_STATE_CHANGED: handleDevicePolicyManagerStateChanged(); break; case MSG_USER_SWITCHED: handleUserSwitched(msg.arg1, (IRemoteCallback)msg.obj); case MSG_USER_SWITCHING: handleUserSwitching(msg.arg1, (IRemoteCallback)msg.obj); break; case MSG_USER_SWITCH_COMPLETE: handleUserSwitchComplete(msg.arg1); break; case MSG_USER_REMOVED: handleUserRemoved(msg.arg1); Loading Loading @@ -359,11 +363,13 @@ public class KeyguardUpdateMonitor { new IUserSwitchObserver.Stub() { @Override public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHED, mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0, reply)); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCH_COMPLETE, newUserId)); } }); } catch (RemoteException e) { Loading Loading @@ -418,13 +424,13 @@ public class KeyguardUpdateMonitor { } /** * Handle {@link #MSG_USER_SWITCHED} * Handle {@link #MSG_USER_SWITCHING} */ protected void handleUserSwitched(int userId, IRemoteCallback reply) { protected void handleUserSwitching(int userId, IRemoteCallback reply) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onUserSwitched(userId); cb.onUserSwitching(userId); } } setAlternateUnlockEnabled(false); Loading @@ -434,6 +440,18 @@ public class KeyguardUpdateMonitor { } } /** * Handle {@link #MSG_USER_SWITCH_COMPLETE} */ protected void handleUserSwitchComplete(int userId) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onUserSwitchComplete(userId); } } } /** * Handle {@link #MSG_BOOT_COMPLETED} */ Loading @@ -456,7 +474,7 @@ public class KeyguardUpdateMonitor { } /** * Handle {@link #MSG_USER_SWITCHED} * Handle {@link #MSG_USER_REMOVED} */ protected void handleUserRemoved(int userId) { for (int i = 0; i < mCallbacks.size(); i++) { Loading Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu } @Override public void onUserSwitched(int userId) { public void onUserSwitching(int userId) { if (DEBUG) Log.d(TAG, "onUserSwitched(" + userId + ")"); if (mBiometricUnlock != null) { mBiometricUnlock.stop(); Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +19 −5 Original line number Diff line number Diff line Loading @@ -101,9 +101,12 @@ public class KeyguardHostView extends KeyguardViewBase { private boolean mSafeModeEnabled; private boolean mUserSetupCompleted; // User for whom this host view was created private int mUserId; private KeyguardMultiUserSelectorView mKeyguardMultiUserSelectorView; /*package*/ interface TransportCallback { void onListenerDetached(); void onListenerAttached(); Loading Loading @@ -209,6 +212,12 @@ public class KeyguardHostView extends KeyguardViewBase { mCleanupAppWidgetsOnBootCompleted = false; } } @Override public void onUserSwitchComplete(int userId) { if (mKeyguardMultiUserSelectorView != null) { mKeyguardMultiUserSelectorView.finalizeActiveUserView(true); } } }; private SlidingChallengeLayout mSlidingChallengeLayout; Loading Loading @@ -399,6 +408,12 @@ public class KeyguardHostView extends KeyguardViewBase { } }; public void initializeSwitchingUserState(boolean switching) { if (!switching && mKeyguardMultiUserSelectorView != null) { mKeyguardMultiUserSelectorView.finalizeActiveUserView(false); } } public void userActivity() { if (mViewMediatorCallback != null) { mViewMediatorCallback.userActivity(); Loading Loading @@ -1452,10 +1467,9 @@ public class KeyguardHostView extends KeyguardViewBase { if (users.size() > 1) { if (multiUserView instanceof KeyguardMultiUserSelectorView) { KeyguardMultiUserSelectorView multiUser = (KeyguardMultiUserSelectorView) multiUserView; multiUser.setVisibility(View.VISIBLE); multiUser.addUsers(users); mKeyguardMultiUserSelectorView = (KeyguardMultiUserSelectorView) multiUserView; mKeyguardMultiUserSelectorView.setVisibility(View.VISIBLE); mKeyguardMultiUserSelectorView.addUsers(users); UserSwitcherCallback callback = new UserSwitcherCallback() { @Override public void hideSecurityView(int duration) { Loading @@ -1481,7 +1495,7 @@ public class KeyguardHostView extends KeyguardViewBase { } } }; multiUser.setCallback(callback); mKeyguardMultiUserSelectorView.setCallback(callback); } else { Throwable t = new Throwable(); t.fillInStackTrace(); Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserAvatar.java +11 −1 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ class KeyguardMultiUserAvatar extends FrameLayout { private boolean mInit = true; private KeyguardMultiUserSelectorView mUserSelector; private KeyguardCircleFramedDrawable mFramed; private boolean mPressLock; public static KeyguardMultiUserAvatar fromXml(int resId, Context context, KeyguardMultiUserSelectorView userSelector, UserInfo info) { Loading Loading @@ -212,13 +213,22 @@ class KeyguardMultiUserAvatar extends FrameLayout { @Override public void setPressed(boolean pressed) { if (!pressed || isClickable()) { if (mPressLock && !pressed) { return; } if (mPressLock || !pressed || isClickable()) { super.setPressed(pressed); mFramed.setPressed(pressed); mUserImage.invalidate(); } } public void lockPressed(boolean pressed) { mPressLock = pressed; setPressed(pressed); } public UserInfo getUserInfo() { return mUserInfo; } Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardMultiUserSelectorView.java +30 −17 Original line number Diff line number Diff line Loading @@ -81,11 +81,28 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O KeyguardMultiUserAvatar uv = createAndAddUser(user); if (user.id == activeUser.id) { mActiveUserAvatar = uv; mActiveUserAvatar.setActive(true, false, null); } else { } uv.setActive(false, false, null); } mActiveUserAvatar.lockPressed(true); } public void finalizeActiveUserView(boolean animate) { if (animate) { getHandler().postDelayed(new Runnable() { @Override public void run() { finalizeActiveUserNow(true); } }, 500); } else { finalizeActiveUserNow(animate); } } void finalizeActiveUserNow(boolean animate) { mActiveUserAvatar.lockPressed(false); mActiveUserAvatar.setActive(true, animate, null); } Comparator<UserInfo> mOrderAddedComparator = new Comparator<UserInfo>() { Loading Loading @@ -132,13 +149,11 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O // Reset the previously active user to appear inactive mCallback.hideSecurityView(FADE_OUT_ANIMATION_DURATION); setAllClickable(false); avatar.lockPressed(true); mActiveUserAvatar.setActive(false, true, new Runnable() { @Override public void run() { mActiveUserAvatar = avatar; mActiveUserAvatar.setActive(true, true, new Runnable() { @Override public void run() { if (this.getClass().getName().contains("internal")) { try { ActivityManagerNative.getDefault() Loading @@ -152,8 +167,6 @@ public class KeyguardMultiUserSelectorView extends FrameLayout implements View.O } }); } }); } } } }
policy/src/com/android/internal/policy/impl/keyguard/KeyguardUpdateMonitor.java +26 −8 Original line number Diff line number Diff line Loading @@ -79,10 +79,11 @@ public class KeyguardUpdateMonitor { private static final int MSG_CLOCK_VISIBILITY_CHANGED = 307; private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHED = 310; private static final int MSG_USER_SWITCHING = 310; private static final int MSG_USER_REMOVED = 311; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 312; protected static final int MSG_BOOT_COMPLETED = 313; private static final int MSG_USER_SWITCH_COMPLETE = 314; private static KeyguardUpdateMonitor sInstance; Loading Loading @@ -147,8 +148,11 @@ public class KeyguardUpdateMonitor { case MSG_DPM_STATE_CHANGED: handleDevicePolicyManagerStateChanged(); break; case MSG_USER_SWITCHED: handleUserSwitched(msg.arg1, (IRemoteCallback)msg.obj); case MSG_USER_SWITCHING: handleUserSwitching(msg.arg1, (IRemoteCallback)msg.obj); break; case MSG_USER_SWITCH_COMPLETE: handleUserSwitchComplete(msg.arg1); break; case MSG_USER_REMOVED: handleUserRemoved(msg.arg1); Loading Loading @@ -359,11 +363,13 @@ public class KeyguardUpdateMonitor { new IUserSwitchObserver.Stub() { @Override public void onUserSwitching(int newUserId, IRemoteCallback reply) { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHED, mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0, reply)); } @Override public void onUserSwitchComplete(int newUserId) throws RemoteException { mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCH_COMPLETE, newUserId)); } }); } catch (RemoteException e) { Loading Loading @@ -418,13 +424,13 @@ public class KeyguardUpdateMonitor { } /** * Handle {@link #MSG_USER_SWITCHED} * Handle {@link #MSG_USER_SWITCHING} */ protected void handleUserSwitched(int userId, IRemoteCallback reply) { protected void handleUserSwitching(int userId, IRemoteCallback reply) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onUserSwitched(userId); cb.onUserSwitching(userId); } } setAlternateUnlockEnabled(false); Loading @@ -434,6 +440,18 @@ public class KeyguardUpdateMonitor { } } /** * Handle {@link #MSG_USER_SWITCH_COMPLETE} */ protected void handleUserSwitchComplete(int userId) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onUserSwitchComplete(userId); } } } /** * Handle {@link #MSG_BOOT_COMPLETED} */ Loading @@ -456,7 +474,7 @@ public class KeyguardUpdateMonitor { } /** * Handle {@link #MSG_USER_SWITCHED} * Handle {@link #MSG_USER_REMOVED} */ protected void handleUserRemoved(int userId) { for (int i = 0; i < mCallbacks.size(); i++) { Loading