summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java22
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java68
2 files changed, 76 insertions, 14 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java
index caeb74c1c6e4..d19821fb9723 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java
@@ -41,21 +41,12 @@ class KeyguardMessageArea extends TextView implements SecurityMessageDisplay {
private static final long ANNOUNCEMENT_DELAY = 250;
private static final int DEFAULT_COLOR = -1;
- private final KeyguardUpdateMonitor mUpdateMonitor;
private final Handler mHandler;
private final int mDefaultColor;
- CharSequence mMessage;
+ private CharSequence mMessage;
private int mNextMessageColor = DEFAULT_COLOR;
- private final Runnable mClearMessageRunnable = new Runnable() {
- @Override
- public void run() {
- mMessage = null;
- update();
- }
- };
-
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
public void onFinishedGoingToSleep(int why) {
setSelected(false);
@@ -70,11 +61,14 @@ class KeyguardMessageArea extends TextView implements SecurityMessageDisplay {
}
public KeyguardMessageArea(Context context, AttributeSet attrs) {
+ this(context, attrs, KeyguardUpdateMonitor.getInstance(context));
+ }
+
+ public KeyguardMessageArea(Context context, AttributeSet attrs, KeyguardUpdateMonitor monitor) {
super(context, attrs);
setLayerType(LAYER_TYPE_HARDWARE, null); // work around nested unclipped SaveLayer bug
- mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
- mUpdateMonitor.registerCallback(mInfoCallback);
+ monitor.registerCallback(mInfoCallback);
mHandler = new Handler(Looper.myLooper());
mDefaultColor = getCurrentTextColor();
@@ -137,8 +131,8 @@ class KeyguardMessageArea extends TextView implements SecurityMessageDisplay {
}
private void clearMessage() {
- mHandler.removeCallbacks(mClearMessageRunnable);
- mHandler.post(mClearMessageRunnable);
+ mMessage = null;
+ update();
}
private void update() {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java
new file mode 100644
index 000000000000..fccb2a240660
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.keyguard;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import static junit.framework.Assert.*;
+import static org.mockito.Mockito.mock;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class KeyguardMessageAreaTest extends SysuiTestCase {
+ private Context mContext = InstrumentationRegistry.getTargetContext();
+ private Handler mHandler = new Handler(Looper.getMainLooper());
+ private KeyguardMessageArea mMessageArea;
+
+ @Before
+ public void setUp() throws Exception {
+ KeyguardUpdateMonitor monitor = mock(KeyguardUpdateMonitor.class);
+ mHandler.post(()-> mMessageArea = new KeyguardMessageArea(mContext, null, monitor));
+ waitForIdleSync();
+ }
+
+ @Test
+ public void clearFollowedByMessage_keepsMessage() {
+ mHandler.post(()-> {
+ mMessageArea.setMessage("");
+ mMessageArea.setMessage("test");
+ });
+
+ waitForIdleSync();
+
+ CharSequence[] messageText = new CharSequence[1];
+ mHandler.post(()-> {
+ messageText[0] = mMessageArea.getText();
+ });
+
+ waitForIdleSync();
+
+ assertEquals("test", messageText[0]);
+ }
+
+}