Merge "[Bouncer] Remove flicker of message area." into tm-qpr-dev
This commit is contained in:
@@ -69,10 +69,16 @@ open class BouncerKeyguardMessageArea(context: Context?, attrs: AttributeSet?) :
|
||||
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 @@ open class BouncerKeyguardMessageArea(context: Context?, attrs: AttributeSet?) :
|
||||
hideAnimator.addListener(
|
||||
object : AnimatorListenerAdapter() {
|
||||
override fun onAnimationEnd(animation: Animator?) {
|
||||
super@BouncerKeyguardMessageArea.setMessage(msg)
|
||||
super@BouncerKeyguardMessageArea.setMessage(msg, animate)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -159,10 +159,12 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
|
||||
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
|
||||
|
||||
@@ -59,6 +59,7 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe
|
||||
@Nullable
|
||||
private ViewGroup mContainer;
|
||||
private int mTopMargin;
|
||||
protected boolean mAnimate;
|
||||
|
||||
public KeyguardMessageArea(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -106,7 +107,7 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(CharSequence msg) {
|
||||
public void setMessage(CharSequence msg, boolean animate) {
|
||||
if (!TextUtils.isEmpty(msg)) {
|
||||
securityMessageChanged(msg);
|
||||
} else {
|
||||
@@ -114,22 +115,13 @@ public abstract class KeyguardMessageArea extends TextView implements SecurityMe
|
||||
}
|
||||
}
|
||||
|
||||
@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) {
|
||||
|
||||
@@ -92,11 +92,19 @@ public class KeyguardMessageAreaController<T extends KeyguardMessageArea>
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
@@ -372,10 +372,13 @@ public class KeyguardPatternViewController
|
||||
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
|
||||
|
||||
@@ -23,9 +23,10 @@ public interface SecurityMessageDisplay {
|
||||
/** 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);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class AuthKeyguardMessageAreaTest extends SysuiTestCase {
|
||||
@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 class AuthKeyguardMessageAreaTest extends SysuiTestCase {
|
||||
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 @@ public class AuthKeyguardMessageAreaTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testClearsTextField() {
|
||||
mKeyguardMessageArea.setVisibility(View.VISIBLE);
|
||||
mKeyguardMessageArea.setMessage("");
|
||||
mKeyguardMessageArea.setMessage("", /* animate= */ true);
|
||||
assertThat(mKeyguardMessageArea.getVisibility()).isEqualTo(View.INVISIBLE);
|
||||
assertThat(mKeyguardMessageArea.getText()).isEqualTo("");
|
||||
}
|
||||
|
||||
@@ -49,30 +49,30 @@ class BouncerKeyguardMessageAreaTest : SysuiTestCase() {
|
||||
@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("")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class KeyguardMessageAreaControllerTest extends SysuiTestCase {
|
||||
@Test
|
||||
public void testClearsTextField() {
|
||||
mMessageAreaController.setMessage("");
|
||||
verify(mKeyguardMessageArea).setMessage("");
|
||||
verify(mKeyguardMessageArea).setMessage("", /* animate= */ true);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user