Loading packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java +8 −14 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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() { Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * 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]); } } Loading
packages/Keyguard/src/com/android/keyguard/KeyguardMessageArea.java +8 −14 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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() { Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardMessageAreaTest.java 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * 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]); } }