Merge "[Bouncer] Remove flicker of message area." into tm-qpr-dev am: 33b7f00aac
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20498374
Change-Id: Ica058b5035fa83e7257129a80a4b666bafb47a34
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/src/com/android/keyguard/BouncerKeyguardMessageArea.kt b/packages/SystemUI/src/com/android/keyguard/BouncerKeyguardMessageArea.kt
index 450784e..f59bf8e 100644
--- a/packages/SystemUI/src/com/android/keyguard/BouncerKeyguardMessageArea.kt
+++ b/packages/SystemUI/src/com/android/keyguard/BouncerKeyguardMessageArea.kt
@@ -69,10 +69,16 @@
super.reloadColor()
}
- override fun setMessage(msg: CharSequence?) {
+ override fun setMessage(msg: CharSequence?, animate: Boolean) {
if ((msg == textAboutToShow && msg != null) || msg == text) {
return
}
+
+ if (!animate) {
+ super.setMessage(msg, animate)
+ return
+ }
+
textAboutToShow = msg
if (animatorSet.isRunning) {
@@ -89,7 +95,7 @@
hideAnimator.addListener(
object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
- super@BouncerKeyguardMessageArea.setMessage(msg)
+ super@BouncerKeyguardMessageArea.setMessage(msg, animate)
}
}
)
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java
index 92ba619..3e32cf5 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputViewController.java
@@ -159,10 +159,12 @@
int secondsRemaining = (int) Math.round(millisUntilFinished / 1000.0);
Map<String, Object> arguments = new HashMap<>();
arguments.put("count", secondsRemaining);
- mMessageAreaController.setMessage(PluralsMessageFormatter.format(
- mView.getResources(),
- arguments,
- R.string.kg_too_many_failed_attempts_countdown));
+ mMessageAreaController.setMessage(
+ PluralsMessageFormatter.format(
+ mView.getResources(),
+ arguments,
+ R.string.kg_too_many_failed_attempts_countdown),
+ /* animate= */ false);
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java
index c79fc2c..0e5f8c1 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java
@@ -59,6 +59,7 @@
@Nullable
private ViewGroup mContainer;
private int mTopMargin;
+ protected boolean mAnimate;
public KeyguardMessageArea(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -106,7 +107,7 @@
}
@Override
- public void setMessage(CharSequence msg) {
+ public void setMessage(CharSequence msg, boolean animate) {
if (!TextUtils.isEmpty(msg)) {
securityMessageChanged(msg);
} else {
@@ -115,21 +116,12 @@
}
@Override
- public void setMessage(int resId) {
- CharSequence message = null;
- if (resId != 0) {
- message = getContext().getResources().getText(resId);
- }
- setMessage(message);
- }
-
- @Override
public void formatMessage(int resId, Object... formatArgs) {
CharSequence message = null;
if (resId != 0) {
message = getContext().getString(resId, formatArgs);
}
- setMessage(message);
+ setMessage(message, true);
}
private void securityMessageChanged(CharSequence message) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java
index db986e0..c29f632 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageAreaController.java
@@ -92,11 +92,19 @@
}
public void setMessage(CharSequence s) {
- mView.setMessage(s);
+ setMessage(s, true);
+ }
+
+ /**
+ * Sets a message to the underlying text view.
+ */
+ public void setMessage(CharSequence s, boolean animate) {
+ mView.setMessage(s, animate);
}
public void setMessage(int resId) {
- mView.setMessage(resId);
+ String message = resId != 0 ? mView.getResources().getString(resId) : null;
+ setMessage(message);
}
public void setNextMessageColor(ColorStateList colorState) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
index 1f0bd54..cdbfb24 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
@@ -372,10 +372,13 @@
Map<String, Object> arguments = new HashMap<>();
arguments.put("count", secondsRemaining);
- mMessageAreaController.setMessage(PluralsMessageFormatter.format(
- mView.getResources(),
- arguments,
- R.string.kg_too_many_failed_attempts_countdown));
+ mMessageAreaController.setMessage(
+ PluralsMessageFormatter.format(
+ mView.getResources(),
+ arguments,
+ R.string.kg_too_many_failed_attempts_countdown),
+ /* animate= */ false
+ );
}
@Override
diff --git a/packages/SystemUI/src/com/android/keyguard/SecurityMessageDisplay.java b/packages/SystemUI/src/com/android/keyguard/SecurityMessageDisplay.java
index 777bd19..3392a1c 100644
--- a/packages/SystemUI/src/com/android/keyguard/SecurityMessageDisplay.java
+++ b/packages/SystemUI/src/com/android/keyguard/SecurityMessageDisplay.java
@@ -23,9 +23,10 @@
/** Set text color for the next security message. */
default void setNextMessageColor(ColorStateList colorState) {}
- void setMessage(CharSequence msg);
-
- void setMessage(int resId);
+ /**
+ * Sets a message to the underlying text view.
+ */
+ void setMessage(CharSequence msg, boolean animate);
void formatMessage(int resId, Object... formatArgs);
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/AuthKeyguardMessageAreaTest.java b/packages/SystemUI/tests/src/com/android/keyguard/AuthKeyguardMessageAreaTest.java
index 0a9c745..ffedb30 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/AuthKeyguardMessageAreaTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/AuthKeyguardMessageAreaTest.java
@@ -46,7 +46,7 @@
@Test
public void testShowsTextField() {
mKeyguardMessageArea.setVisibility(View.INVISIBLE);
- mKeyguardMessageArea.setMessage("oobleck");
+ mKeyguardMessageArea.setMessage("oobleck", /* animate= */ true);
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mKeyguardMessageArea.getText()).isEqualTo("oobleck");
}
@@ -55,7 +55,7 @@
public void testHiddenWhenBouncerHidden() {
mKeyguardMessageArea.setIsVisible(false);
mKeyguardMessageArea.setVisibility(View.INVISIBLE);
- mKeyguardMessageArea.setMessage("oobleck");
+ mKeyguardMessageArea.setMessage("oobleck", /* animate= */ true);
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.INVISIBLE);
assertThat(mKeyguardMessageArea.getText()).isEqualTo("oobleck");
}
@@ -63,7 +63,7 @@
@Test
public void testClearsTextField() {
mKeyguardMessageArea.setVisibility(View.VISIBLE);
- mKeyguardMessageArea.setMessage("");
+ mKeyguardMessageArea.setMessage("", /* animate= */ true);
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.INVISIBLE);
assertThat(mKeyguardMessageArea.getText()).isEqualTo("");
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/BouncerKeyguardMessageAreaTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/BouncerKeyguardMessageAreaTest.kt
index 7b9b39f..ba46a87 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/BouncerKeyguardMessageAreaTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/BouncerKeyguardMessageAreaTest.kt
@@ -49,30 +49,30 @@
@Test
fun testSetSameMessage() {
val underTestSpy = spy(underTest)
- underTestSpy.setMessage("abc")
- underTestSpy.setMessage("abc")
+ underTestSpy.setMessage("abc", animate = true)
+ underTestSpy.setMessage("abc", animate = true)
verify(underTestSpy, times(1)).text = "abc"
}
@Test
fun testSetDifferentMessage() {
- underTest.setMessage("abc")
- underTest.setMessage("def")
+ underTest.setMessage("abc", animate = true)
+ underTest.setMessage("def", animate = true)
assertThat(underTest.text).isEqualTo("def")
}
@Test
fun testSetNullMessage() {
- underTest.setMessage(null)
+ underTest.setMessage(null, animate = true)
assertThat(underTest.text).isEqualTo("")
}
@Test
fun testSetNullClearsPreviousMessage() {
- underTest.setMessage("something not null")
+ underTest.setMessage("something not null", animate = true)
assertThat(underTest.text).isEqualTo("something not null")
- underTest.setMessage(null)
+ underTest.setMessage(null, animate = true)
assertThat(underTest.text).isEqualTo("")
}
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaControllerTest.java
index 8290084..0e837d2 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaControllerTest.java
@@ -85,7 +85,7 @@
@Test
public void testClearsTextField() {
mMessageAreaController.setMessage("");
- verify(mKeyguardMessageArea).setMessage("");
+ verify(mKeyguardMessageArea).setMessage("", /* animate= */ true);
}
@Test