Merge "Fix KeyguardUpdateMonitor test" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-05-16 20:50:25 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 14 deletions

View File

@@ -750,7 +750,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private DisplayClientState mDisplayClientState = new DisplayClientState();
@VisibleForTesting
final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
protected final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {

View File

@@ -16,6 +16,7 @@
package com.android.keyguard;
import android.content.Context;
import android.content.Intent;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -35,7 +36,12 @@ import java.util.concurrent.atomic.AtomicBoolean;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
// We must run on the main looper because KeyguardUpdateMonitor#mHandler is initialized with
// new Handler(Looper.getMainLooper()).
//
// Using the main looper should be avoided whenever possible, please don't copy this over to
// new tests.
@RunWithLooper(setAsMainLooper = true)
public class KeyguardUpdateMonitorTest extends SysuiTestCase {
private TestableLooper mTestableLooper;
@@ -49,24 +55,39 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
public void testIgnoresSimStateCallback_rebroadcast() {
Intent intent = new Intent(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
AtomicBoolean simStateChanged = new AtomicBoolean(false);
KeyguardUpdateMonitor keyguardUpdateMonitor = new KeyguardUpdateMonitor(getContext()) {
@Override
protected void handleSimStateChange(int subId, int slotId,
IccCardConstants.State state) {
simStateChanged.set(true);
super.handleSimStateChange(subId, slotId, state);
}
};
TestableKeyguardUpdateMonitor keyguardUpdateMonitor =
new TestableKeyguardUpdateMonitor(getContext());
keyguardUpdateMonitor.mBroadcastReceiver.onReceive(getContext(), intent);
mTestableLooper.processAllMessages();
Assert.assertTrue("onSimStateChanged not called", simStateChanged.get());
Assert.assertTrue("onSimStateChanged not called",
keyguardUpdateMonitor.hasSimStateJustChanged());
intent.putExtra(TelephonyIntents.EXTRA_REBROADCAST_ON_UNLOCK, true);
simStateChanged.set(false);
keyguardUpdateMonitor.mBroadcastReceiver.onReceive(getContext(), intent);
mTestableLooper.processAllMessages();
Assert.assertFalse("onSimStateChanged should have been skipped", simStateChanged.get());
Assert.assertFalse("onSimStateChanged should have been skipped",
keyguardUpdateMonitor.hasSimStateJustChanged());
}
private class TestableKeyguardUpdateMonitor extends KeyguardUpdateMonitor {
AtomicBoolean mSimStateChanged = new AtomicBoolean(false);
protected TestableKeyguardUpdateMonitor(Context context) {
super(context);
// Avoid race condition when unexpected broadcast could be received.
context.unregisterReceiver(mBroadcastReceiver);
}
public boolean hasSimStateJustChanged() {
return mSimStateChanged.getAndSet(false);
}
@Override
protected void handleSimStateChange(int subId, int slotId,
IccCardConstants.State state) {
mSimStateChanged.set(true);
super.handleSimStateChange(subId, slotId, state);
}
}
}