summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java5
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;