summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/layout/keyguard_bottom_area.xml17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java21
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java3
7 files changed, 61 insertions, 16 deletions
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index adc0b417dea3..636b929c6aa5 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -77,15 +77,20 @@
android:contentDescription="@string/accessibility_phone_button"
android:tint="?attr/wallpaperTextColor" />
- <com.android.systemui.statusbar.phone.LockIcon
- android:id="@+id/lock_icon"
+ <FrameLayout
+ android:id="@+id/lock_icon_container"
android:layout_width="@dimen/keyguard_lock_width"
android:layout_height="@dimen/keyguard_lock_height"
android:layout_gravity="bottom|center_horizontal"
- android:layout_marginBottom="@dimen/keyguard_lock_padding"
- android:src="@*android:drawable/ic_lock"
- android:contentDescription="@string/accessibility_unlock_button"
- android:scaleType="center" />
+ android:layout_marginBottom="@dimen/keyguard_lock_padding">
+ <com.android.systemui.statusbar.phone.LockIcon
+ android:id="@+id/lock_icon"
+ android:layout_width="@dimen/keyguard_lock_width"
+ android:layout_height="@dimen/keyguard_lock_height"
+ android:src="@*android:drawable/ic_lock"
+ android:contentDescription="@string/accessibility_unlock_button"
+ android:scaleType="center" />
+ </FrameLayout>
<FrameLayout
android:id="@+id/overlay_container"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index 800ae5801016..2d91d53212f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -122,6 +122,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private KeyguardAffordanceView mRightAffordanceView;
private KeyguardAffordanceView mLeftAffordanceView;
private LockIcon mLockIcon;
+ private ViewGroup mLockIconContainer;
private ViewGroup mIndicationArea;
private TextView mEnterpriseDisclosure;
private TextView mIndicationText;
@@ -244,6 +245,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
mRightAffordanceView = findViewById(R.id.camera_button);
mLeftAffordanceView = findViewById(R.id.left_button);
mLockIcon = findViewById(R.id.lock_icon);
+ mLockIconContainer = findViewById(R.id.lock_icon_container);
mIndicationArea = findViewById(R.id.keyguard_indication_area);
mEnterpriseDisclosure = findViewById(
R.id.keyguard_indication_enterprise_disclosure);
@@ -657,6 +659,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
return mLockIcon;
}
+ public ViewGroup getLockIconContainer() {
+ return mLockIconContainer;
+ }
+
public View getIndicationArea() {
return mIndicationArea;
}
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 fe3a455302d4..5afff814c111 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
@@ -123,6 +123,7 @@ public class KeyguardBouncer {
return;
}
ensureView();
+ mIsScrimmed = isScrimmed;
// On the keyguard, we want to show the bouncer when the user drags up, but it's
// not correct to end the falsing session. We still need to verify if those touches
@@ -132,13 +133,13 @@ public class KeyguardBouncer {
if (isScrimmed) {
setExpansion(EXPANSION_VISIBLE);
}
- mIsScrimmed = isScrimmed;
if (resetSecuritySelection) {
// showPrimarySecurityScreen() updates the current security method. This is needed in
// case we are already showing and the current security method changed.
showPrimarySecurityScreen();
}
+
if (mRoot.getVisibility() == View.VISIBLE || mShowingSoon) {
return;
}
@@ -168,8 +169,8 @@ public class KeyguardBouncer {
mCallback.onBouncerVisiblityChanged(true /* shown */);
}
- public boolean isShowingScrimmed() {
- return isShowing() && mIsScrimmed;
+ public boolean isScrimmed() {
+ return mIsScrimmed;
}
public ViewGroup getLockIconContainer() {
@@ -281,6 +282,7 @@ public class KeyguardBouncer {
StatsLog.KEYGUARD_BOUNCER_STATE_CHANGED__STATE__HIDDEN);
mDismissCallbackRegistry.notifyDismissCancelled();
}
+ mIsScrimmed = false;
mFalsingManager.onBouncerHidden();
mCallback.onBouncerVisiblityChanged(false /* shown */);
cancelShowRunnable();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 2c4679e567ac..ab1f500b25e0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -3040,6 +3040,7 @@ public class NotificationPanelView extends PanelView implements
}
ViewGroup bouncerContainer = mBouncer.getLockIconContainer();
+ ViewGroup bottomContainer = mKeyguardBottomArea.getLockIconContainer();
LockIcon lockIcon = mKeyguardBottomArea.getLockIcon();
if (mBouncer.isAnimatingAway()) {
@@ -3051,9 +3052,21 @@ public class NotificationPanelView extends PanelView implements
return;
}
+ // Lock icon needs to be re-parented in case of a scrimmed bouncer,
+ // otherwise it would be under the scrim.
+ if (mBouncer.isScrimmed() && bouncerContainer != null
+ && lockIcon.getParent() != bouncerContainer) {
+ ((ViewGroup) lockIcon.getParent()).removeView(lockIcon);
+ bouncerContainer.addView(lockIcon);
+ } else if (!mBouncer.isScrimmed() && bottomContainer != null
+ && lockIcon.getParent() != bottomContainer) {
+ ((ViewGroup) lockIcon.getParent()).removeView(lockIcon);
+ bottomContainer.addView(lockIcon);
+ }
+
float translation = 0;
- if (bouncerContainer != null) {
- float bottomAreaContainerY = getCommonTop(lockIcon);
+ if (bouncerContainer != null && bottomContainer != null && !mBouncer.isScrimmed()) {
+ float bottomAreaContainerY = getCommonTop(bottomContainer);
float bouncerLockY = getCommonTop(bouncerContainer);
if (bouncerLockY < bottomAreaContainerY) {
translation = bouncerLockY - bottomAreaContainerY;
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 441285138afd..cbaabf719985 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -86,6 +86,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public void onFullyShown() {
updateStates();
mStatusBar.wakeUpIfDozing(SystemClock.uptimeMillis(), mContainer, "BOUNCER_VISIBLE");
+ mNotificationPanelView.updateLockIcon();
}
@Override
@@ -96,6 +97,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
@Override
public void onFullyHidden() {
updateStates();
+ mNotificationPanelView.updateLockIcon();
}
@Override
@@ -759,7 +761,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public boolean bouncerNeedsScrimming() {
return mOccluded || mBouncer.willDismissWithAction() || mBouncer.needsFullscreenBouncer()
- || mStatusBar.isFullScreenUserSwitcherState() || mBouncer.isShowingScrimmed();
+ || mStatusBar.isFullScreenUserSwitcherState()
+ || (mBouncer.isShowing() && mBouncer.isScrimmed());
}
public void dump(PrintWriter pw) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java
index e84dd68e30ea..c2e60d9e1230 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
@@ -336,11 +337,25 @@ public class KeyguardBouncerTest extends SysuiTestCase {
}
@Test
- public void testIsShowingScrimmed() {
+ public void testIsShowingScrimmed_true() {
+ doAnswer(invocation -> {
+ assertThat(mBouncer.isScrimmed()).isTrue();
+ return null;
+ }).when(mExpansionCallback).onFullyShown();
mBouncer.show(false /* resetSecuritySelection */, true /* animate */);
- assertThat(mBouncer.isShowingScrimmed()).isTrue();
+ assertThat(mBouncer.isScrimmed()).isTrue();
+ mBouncer.hide(false /* destroyView */);
+ assertThat(mBouncer.isScrimmed()).isFalse();
+ }
+
+ @Test
+ public void testIsShowingScrimmed_false() {
+ doAnswer(invocation -> {
+ assertThat(mBouncer.isScrimmed()).isFalse();
+ return null;
+ }).when(mExpansionCallback).onFullyShown();
mBouncer.show(false /* resetSecuritySelection */, false /* animate */);
- assertThat(mBouncer.isShowingScrimmed()).isFalse();
+ assertThat(mBouncer.isScrimmed()).isFalse();
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
index 1a27765cbcda..7d347d55e930 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
@@ -120,7 +120,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
@Test
public void onPanelExpansionChanged_neverHidesScrimmedBouncer() {
- when(mBouncer.isShowingScrimmed()).thenReturn(true);
+ when(mBouncer.isShowing()).thenReturn(true);
+ when(mBouncer.isScrimmed()).thenReturn(true);
mStatusBarKeyguardViewManager.onPanelExpansionChanged(0.5f /* expansion */,
true /* tracking */);
verify(mBouncer).setExpansion(eq(KeyguardBouncer.EXPANSION_VISIBLE));