Merge "Bouncer: Remove flicker of KeyguardMessageArea" into tm-dev

This commit is contained in:
Aaron Liu
2022-03-21 19:42:28 +00:00
committed by Android (Google) Code Review
6 changed files with 30 additions and 12 deletions

View File

@@ -57,7 +57,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
private ColorStateList mDefaultColorState;
private CharSequence mMessage;
private ColorStateList mNextMessageColorState = ColorStateList.valueOf(DEFAULT_COLOR);
private boolean mBouncerVisible;
private boolean mBouncerShowing;
private boolean mAltBouncerShowing;
/**
* Container that wraps the KeyguardMessageArea - may be null if current view hierarchy doesn't
@@ -177,7 +177,7 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
void update() {
CharSequence status = mMessage;
setVisibility(TextUtils.isEmpty(status) || (!mBouncerVisible && !mAltBouncerShowing)
setVisibility(TextUtils.isEmpty(status) || (!mBouncerShowing && !mAltBouncerShowing)
? INVISIBLE : VISIBLE);
setText(status);
ColorStateList colorState = mDefaultColorState;
@@ -192,8 +192,14 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp
setTextColor(colorState);
}
public void setBouncerVisible(boolean bouncerVisible) {
mBouncerVisible = bouncerVisible;
/**
* Set whether the bouncer is fully showing
*/
public void setBouncerShowing(boolean bouncerShowing) {
if (mBouncerShowing != bouncerShowing) {
mBouncerShowing = bouncerShowing;
update();
}
}
/**

View File

@@ -39,12 +39,6 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag
public void onStartedWakingUp() {
mView.setSelected(true);
}
@Override
public void onKeyguardBouncerChanged(boolean bouncer) {
mView.setBouncerVisible(bouncer);
mView.update();
}
};
private ConfigurationListener mConfigurationListener = new ConfigurationListener() {
@@ -94,6 +88,13 @@ public class KeyguardMessageAreaController extends ViewController<KeyguardMessag
mView.setAltBouncerShowing(showing);
}
/**
* Set bouncer is fully showing
*/
public void setBouncerShowing(boolean showing) {
mView.setBouncerShowing(showing);
}
public void setMessage(CharSequence s) {
mView.setMessage(s);
}

View File

@@ -1016,6 +1016,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
if (bouncerShowing != mLastBouncerShowing || mFirstUpdate) {
mNotificationShadeWindowController.setBouncerShowing(bouncerShowing);
mCentralSurfaces.setBouncerShowing(bouncerShowing);
mKeyguardMessageAreaController.setBouncerShowing(bouncerShowing);
}
if (occluded != mLastOccluded || mFirstUpdate) {

View File

@@ -84,4 +84,10 @@ public class KeyguardMessageAreaControllerTest extends SysuiTestCase {
mMessageAreaController.setMessage("");
verify(mKeyguardMessageArea).setMessage("");
}
@Test
public void testSetBouncerVisible() {
mMessageAreaController.setBouncerShowing(true);
verify(mKeyguardMessageArea).setBouncerShowing(true);
}
}

View File

@@ -40,7 +40,7 @@ public class KeyguardMessageAreaTest extends SysuiTestCase {
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mKeyguardMessageArea = new KeyguardMessageArea(mContext, null);
mKeyguardMessageArea.setBouncerVisible(true);
mKeyguardMessageArea.setBouncerShowing(true);
}
@Test
@@ -53,7 +53,7 @@ public class KeyguardMessageAreaTest extends SysuiTestCase {
@Test
public void testHiddenWhenBouncerHidden() {
mKeyguardMessageArea.setBouncerVisible(false);
mKeyguardMessageArea.setBouncerShowing(false);
mKeyguardMessageArea.setVisibility(View.INVISIBLE);
mKeyguardMessageArea.setMessage("oobleck");
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.INVISIBLE);

View File

@@ -95,6 +95,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
@Mock
private KeyguardMessageAreaController.Factory mKeyguardMessageAreaFactory;
@Mock
private KeyguardMessageAreaController mKeyguardMessageAreaController;
@Mock
private KeyguardBouncer mBouncer;
@Mock
private StatusBarKeyguardViewManager.AlternateAuthInterceptor mAlternateAuthInterceptor;
@@ -120,6 +122,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
.thenReturn(mBouncer);
when(mCentralSurfaces.getBouncerContainer()).thenReturn(mContainer);
when(mContainer.findViewById(anyInt())).thenReturn(mKeyguardMessageArea);
when(mKeyguardMessageAreaFactory.create(any(KeyguardMessageArea.class)))
.thenReturn(mKeyguardMessageAreaController);
mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager(
getContext(),
mViewMediatorCallback,