diff options
4 files changed, 29 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java index cf22286c1614..14ead0427478 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java @@ -157,6 +157,10 @@ public class KeyguardHostView extends FrameLayout implements SecurityCallback { mSecurityContainer.showPrimarySecurityScreen(false); } + public KeyguardSecurityView getCurrentSecurityView() { + return mSecurityContainer != null ? mSecurityContainer.getCurrentSecurityView() : null; + } + /** * Show a string explaining why the security view needs to be solved. * diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 14df70cb623e..e87b31397626 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -53,6 +53,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe private KeyguardSecurityViewFlipper mSecurityViewFlipper; private boolean mIsVerifyUnlockOnly; private SecurityMode mCurrentSecuritySelection = SecurityMode.Invalid; + private KeyguardSecurityView mCurrentSecurityView; private SecurityCallback mSecurityCallback; private AlertDialog mAlertDialog; @@ -405,6 +406,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe } mCurrentSecuritySelection = securityMode; + mCurrentSecurityView = newView; mSecurityCallback.onSecurityModeChanged(securityMode, securityMode != SecurityMode.None && newView.needsInput()); } @@ -506,6 +508,10 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe return mCurrentSecuritySelection; } + public KeyguardSecurityView getCurrentSecurityView() { + return mCurrentSecurityView; + } + public void verifyUnlock() { mIsVerifyUnlockOnly = true; showSecurityScreen(getSecurityMode()); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java index 19373ac8e28b..fe3a455302d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -137,7 +137,7 @@ public class KeyguardBouncer { if (resetSecuritySelection) { // showPrimarySecurityScreen() updates the current security method. This is needed in // case we are already showing and the current security method changed. - mKeyguardView.showPrimarySecurityScreen(); + showPrimarySecurityScreen(); } if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) { return; @@ -344,11 +344,20 @@ public class KeyguardBouncer { boolean wasInitialized = mRoot != null; ensureView(); if (wasInitialized) { - mKeyguardView.showPrimarySecurityScreen(); + showPrimarySecurityScreen(); } mBouncerPromptReason = mCallback.getBouncerPromptReason(); } + private void showPrimarySecurityScreen() { + mKeyguardView.showPrimarySecurityScreen(); + KeyguardSecurityView keyguardSecurityView = mKeyguardView.getCurrentSecurityView(); + if (keyguardSecurityView != null) { + mLockIconContainer = ((ViewGroup) keyguardSecurityView) + .findViewById(R.id.lock_icon_container); + } + } + /** * Current notification panel expansion * @param fraction 0 when notification panel is collapsed and 1 when expanded. @@ -406,7 +415,6 @@ public class KeyguardBouncer { removeView(); mHandler.removeCallbacks(mRemoveViewRunnable); mRoot = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.keyguard_bouncer, null); - mLockIconContainer = mRoot.findViewById(R.id.lock_icon_container); mKeyguardView = mRoot.findViewById(R.id.keyguard_host_view); mKeyguardView.setLockPatternUtils(mLockPatternUtils); mKeyguardView.setViewMediatorCallback(mCallback); @@ -414,6 +422,8 @@ public class KeyguardBouncer { mStatusBarHeight = mRoot.getResources().getDimensionPixelOffset( com.android.systemui.R.dimen.status_bar_height); mRoot.setVisibility(View.INVISIBLE); + mRoot.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, + oldBottom) -> mExpansionCallback.onLayout()); mRoot.setAccessibilityPaneTitle(mKeyguardView.getAccessibilityTitleForCurrentMode()); final WindowInsets rootInsets = mRoot.getRootWindowInsets(); @@ -426,7 +436,6 @@ public class KeyguardBouncer { if (mRoot != null && mRoot.getParent() == mContainer) { mContainer.removeView(mRoot); mRoot = null; - mLockIconContainer = null; } } @@ -495,5 +504,6 @@ public class KeyguardBouncer { void onFullyShown(); void onStartingToHide(); void onFullyHidden(); + void onLayout(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 338886d735f2..441285138afd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -97,6 +97,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb public void onFullyHidden() { updateStates(); } + + @Override + public void onLayout() { + mNotificationPanelView.updateLockIcon(); + } }; protected LockPatternUtils mLockPatternUtils; |