Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +13 −5 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,7 @@ import static com.android.internal.telephony.CommandsInterface.CF_REASON_BUSY; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE; import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.cdma.EriManager; Loading Loading @@ -2673,6 +2674,11 @@ public class GsmCdmaPhone extends Phone { } } // if exiting ecm success // if exiting ecm success if (ar.exception == null) { if (ar.exception == null) { // release wakeLock if (mWakeLock.isHeld()) { mWakeLock.release(); } if (mIsPhoneInEcmState) { if (mIsPhoneInEcmState) { mIsPhoneInEcmState = false; mIsPhoneInEcmState = false; setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "false"); setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "false"); Loading Loading @@ -3041,12 +3047,8 @@ public class GsmCdmaPhone extends Phone { intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); intent.putExtra(PhoneConstants.PHONE_NAME_KEY, getPhoneName()); intent.putExtra(PhoneConstants.PHONE_NAME_KEY, getPhoneName()); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhoneId); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhoneId); // Unit test cannot send protected broadcasts // todo: get rid of unitTestMode check if (!getUnitTestMode()) { ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); } } } private void switchVoiceRadioTech(int newVoiceRadioTech) { private void switchVoiceRadioTech(int newVoiceRadioTech) { Loading Loading @@ -3268,4 +3270,10 @@ public class GsmCdmaPhone extends Phone { CarrierConfigManager.KEY_GSM_DTMF_TONE_DELAY_INT : CarrierConfigManager.KEY_GSM_DTMF_TONE_DELAY_INT : CarrierConfigManager.KEY_CDMA_DTMF_TONE_DELAY_INT; CarrierConfigManager.KEY_CDMA_DTMF_TONE_DELAY_INT; } } @VisibleForTesting public PowerManager.WakeLock getWakeLock() { return mWakeLock; } } } src/java/com/android/internal/telephony/test/SimulatedCommands.java +27 −0 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,12 @@ package com.android.internal.telephony.test; package com.android.internal.telephony.test; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.Handler; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.Looper; import android.os.Looper; import android.os.Message; import android.os.Message; import android.os.Parcel; import android.os.Parcel; import android.os.Registrant; import android.telephony.CellInfo; import android.telephony.CellInfo; import android.telephony.CellInfoGsm; import android.telephony.CellInfoGsm; import android.telephony.Rlog; import android.telephony.Rlog; Loading Loading @@ -1982,6 +1984,31 @@ public class SimulatedCommands extends BaseCommands } } } } public void notifyEmergencyCallbackMode() { if (mEmergencyCallbackModeRegistrant != null) { mEmergencyCallbackModeRegistrant.notifyRegistrant(); } } @Override public void setEmergencyCallbackMode(Handler h, int what, Object obj) { SimulatedCommandsVerifier.getInstance().setEmergencyCallbackMode(h, what, obj); super.setEmergencyCallbackMode(h, what, obj); } public void notifyExitEmergencyCallbackMode() { if (mExitEmergencyCallbackModeRegistrants != null) { mExitEmergencyCallbackModeRegistrants.notifyRegistrants( new AsyncResult (null, null, null)); } } @Override public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) { SimulatedCommandsVerifier.getInstance().registerForExitEmergencyCallbackMode(h, what, obj); super.registerForExitEmergencyCallbackMode(h, what, obj); } public void notifyRadioOn() { public void notifyRadioOn() { mOnRegistrants.notifyRegistrants(); mOnRegistrants.notifyRegistrants(); } } Loading tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -341,8 +341,8 @@ public class ContextFixture implements TestFixture<Context> { return true; return true; } } public int testMethod1() { public boolean testMethod1() { return 0; return true; } } } } Loading tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +101 −1 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,14 @@ package com.android.internal.telephony; package com.android.internal.telephony; import android.app.Activity; import android.app.IApplicationThread; import android.content.IIntentReceiver; import android.content.Intent; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.Message; import android.os.Message; import android.preference.PreferenceManager; import android.preference.PreferenceManager; Loading @@ -39,6 +44,9 @@ import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import java.util.List; import static com.android.internal.telephony.CommandsInterface.CF_ACTION_ENABLE; import static com.android.internal.telephony.CommandsInterface.CF_ACTION_ENABLE; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; Loading @@ -47,22 +55,29 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assert.fail; import static org.mockito.Matchers.anyLong; import static org.mockito.Mockito.any; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyObject; import static org.mockito.Mockito.anyObject; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; public class GsmCdmaPhoneTest extends TelephonyTest { public class GsmCdmaPhoneTest extends TelephonyTest { @Mock private Handler mTestHandler; //mPhoneUnderTest //mPhoneUnderTest private GsmCdmaPhone mPhoneUT; private GsmCdmaPhone mPhoneUT; private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager; private static final int EVENT_EMERGENCY_CALLBACK_MODE_EXIT = 1; private static final int EVENT_EMERGENCY_CALL_TOGGLE = 2; private class GsmCdmaPhoneTestHandler extends HandlerThread { private class GsmCdmaPhoneTestHandler extends HandlerThread { private GsmCdmaPhoneTestHandler(String name) { private GsmCdmaPhoneTestHandler(String name) { Loading Loading @@ -536,4 +551,89 @@ public class GsmCdmaPhoneTest extends TelephonyTest { assertEquals(SimulatedCommands.FAKE_ESN, mPhoneUT.getEsn()); assertEquals(SimulatedCommands.FAKE_ESN, mPhoneUT.getEsn()); assertEquals(SimulatedCommands.FAKE_MEID, mPhoneUT.getMeid()); assertEquals(SimulatedCommands.FAKE_MEID, mPhoneUT.getMeid()); } } @Test @SmallTest public void testEmergencyCallbackMessages() { verify(mSimulatedCommandsVerifier).setEmergencyCallbackMode(eq(mPhoneUT), anyInt(), anyObject()); verify(mSimulatedCommandsVerifier).registerForExitEmergencyCallbackMode(eq(mPhoneUT), anyInt(), anyObject()); // verify handling of emergency callback mode mSimulatedCommands.notifyEmergencyCallbackMode(); waitForMs(50); // verify ACTION_EMERGENCY_CALLBACK_MODE_CHANGED ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); try { verify(mIActivityManager, atLeast(1)).broadcastIntent(eq((IApplicationThread)null), intentArgumentCaptor.capture(), eq((String)null), eq((IIntentReceiver)null), eq(Activity.RESULT_OK), eq((String)null), eq((Bundle)null), eq((String[])null), anyInt(), eq((Bundle)null), eq(false), eq(true), anyInt()); } catch(Exception e) { fail("Unexpected exception: " + e.getStackTrace()); } Intent intent = intentArgumentCaptor.getValue(); assertEquals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, intent.getAction()); assertEquals(true, intent.getBooleanExtra(PhoneConstants.PHONE_IN_ECM_STATE, false)); // verify that wakeLock is acquired in ECM assertEquals(true, mPhoneUT.getWakeLock().isHeld()); mPhoneUT.setOnEcbModeExitResponse(mTestHandler, EVENT_EMERGENCY_CALLBACK_MODE_EXIT, null); mPhoneUT.registerForEmergencyCallToggle(mTestHandler, EVENT_EMERGENCY_CALL_TOGGLE, null); // verify handling of emergency callback mode exit mSimulatedCommands.notifyExitEmergencyCallbackMode(); waitForMs(50); // verify ACTION_EMERGENCY_CALLBACK_MODE_CHANGED try { verify(mIActivityManager, atLeast(2)).broadcastIntent(eq((IApplicationThread)null), intentArgumentCaptor.capture(), eq((String)null), eq((IIntentReceiver)null), eq(Activity.RESULT_OK), eq((String)null), eq((Bundle)null), eq((String[])null), anyInt(), eq((Bundle)null), eq(false), eq(true), anyInt()); } catch(Exception e) { fail("Unexpected exception: " + e.getStackTrace()); } intent = intentArgumentCaptor.getValue(); assertEquals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, intent.getAction()); assertEquals(false, intent.getBooleanExtra(PhoneConstants.PHONE_IN_ECM_STATE, true)); ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class); // verify EcmExitRespRegistrant and mEmergencyCallToggledRegistrants are notified verify(mTestHandler, times(2)).sendMessageAtTime(messageArgumentCaptor.capture(), anyLong()); List<Message> msgList = messageArgumentCaptor.getAllValues(); assertEquals(EVENT_EMERGENCY_CALLBACK_MODE_EXIT, msgList.get(0).what); assertEquals(EVENT_EMERGENCY_CALL_TOGGLE, msgList.get(1).what); // verify setInternalDataEnabled verify(mDcTracker).setInternalDataEnabled(true); // verify wakeLock released assertEquals(false, mPhoneUT.getWakeLock().isHeld()); } } } Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +13 −5 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,7 @@ import static com.android.internal.telephony.CommandsInterface.CF_REASON_BUSY; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE; import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaMmiCode; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.cdma.EriManager; import com.android.internal.telephony.cdma.EriManager; Loading Loading @@ -2673,6 +2674,11 @@ public class GsmCdmaPhone extends Phone { } } // if exiting ecm success // if exiting ecm success if (ar.exception == null) { if (ar.exception == null) { // release wakeLock if (mWakeLock.isHeld()) { mWakeLock.release(); } if (mIsPhoneInEcmState) { if (mIsPhoneInEcmState) { mIsPhoneInEcmState = false; mIsPhoneInEcmState = false; setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "false"); setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE, "false"); Loading Loading @@ -3041,12 +3047,8 @@ public class GsmCdmaPhone extends Phone { intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); intent.putExtra(PhoneConstants.PHONE_NAME_KEY, getPhoneName()); intent.putExtra(PhoneConstants.PHONE_NAME_KEY, getPhoneName()); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhoneId); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhoneId); // Unit test cannot send protected broadcasts // todo: get rid of unitTestMode check if (!getUnitTestMode()) { ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); } } } private void switchVoiceRadioTech(int newVoiceRadioTech) { private void switchVoiceRadioTech(int newVoiceRadioTech) { Loading Loading @@ -3268,4 +3270,10 @@ public class GsmCdmaPhone extends Phone { CarrierConfigManager.KEY_GSM_DTMF_TONE_DELAY_INT : CarrierConfigManager.KEY_GSM_DTMF_TONE_DELAY_INT : CarrierConfigManager.KEY_CDMA_DTMF_TONE_DELAY_INT; CarrierConfigManager.KEY_CDMA_DTMF_TONE_DELAY_INT; } } @VisibleForTesting public PowerManager.WakeLock getWakeLock() { return mWakeLock; } } }
src/java/com/android/internal/telephony/test/SimulatedCommands.java +27 −0 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,12 @@ package com.android.internal.telephony.test; package com.android.internal.telephony.test; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.Handler; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.Looper; import android.os.Looper; import android.os.Message; import android.os.Message; import android.os.Parcel; import android.os.Parcel; import android.os.Registrant; import android.telephony.CellInfo; import android.telephony.CellInfo; import android.telephony.CellInfoGsm; import android.telephony.CellInfoGsm; import android.telephony.Rlog; import android.telephony.Rlog; Loading Loading @@ -1982,6 +1984,31 @@ public class SimulatedCommands extends BaseCommands } } } } public void notifyEmergencyCallbackMode() { if (mEmergencyCallbackModeRegistrant != null) { mEmergencyCallbackModeRegistrant.notifyRegistrant(); } } @Override public void setEmergencyCallbackMode(Handler h, int what, Object obj) { SimulatedCommandsVerifier.getInstance().setEmergencyCallbackMode(h, what, obj); super.setEmergencyCallbackMode(h, what, obj); } public void notifyExitEmergencyCallbackMode() { if (mExitEmergencyCallbackModeRegistrants != null) { mExitEmergencyCallbackModeRegistrants.notifyRegistrants( new AsyncResult (null, null, null)); } } @Override public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) { SimulatedCommandsVerifier.getInstance().registerForExitEmergencyCallbackMode(h, what, obj); super.registerForExitEmergencyCallbackMode(h, what, obj); } public void notifyRadioOn() { public void notifyRadioOn() { mOnRegistrants.notifyRegistrants(); mOnRegistrants.notifyRegistrants(); } } Loading
tests/telephonytests/src/com/android/internal/telephony/ContextFixture.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -341,8 +341,8 @@ public class ContextFixture implements TestFixture<Context> { return true; return true; } } public int testMethod1() { public boolean testMethod1() { return 0; return true; } } } } Loading
tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +101 −1 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,14 @@ package com.android.internal.telephony; package com.android.internal.telephony; import android.app.Activity; import android.app.IApplicationThread; import android.content.IIntentReceiver; import android.content.Intent; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.HandlerThread; import android.os.Message; import android.os.Message; import android.preference.PreferenceManager; import android.preference.PreferenceManager; Loading @@ -39,6 +44,9 @@ import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import java.util.List; import static com.android.internal.telephony.CommandsInterface.CF_ACTION_ENABLE; import static com.android.internal.telephony.CommandsInterface.CF_ACTION_ENABLE; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDITIONAL; Loading @@ -47,22 +55,29 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assert.fail; import static org.mockito.Matchers.anyLong; import static org.mockito.Mockito.any; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyObject; import static org.mockito.Mockito.anyObject; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; public class GsmCdmaPhoneTest extends TelephonyTest { public class GsmCdmaPhoneTest extends TelephonyTest { @Mock private Handler mTestHandler; //mPhoneUnderTest //mPhoneUnderTest private GsmCdmaPhone mPhoneUT; private GsmCdmaPhone mPhoneUT; private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager; private static final int EVENT_EMERGENCY_CALLBACK_MODE_EXIT = 1; private static final int EVENT_EMERGENCY_CALL_TOGGLE = 2; private class GsmCdmaPhoneTestHandler extends HandlerThread { private class GsmCdmaPhoneTestHandler extends HandlerThread { private GsmCdmaPhoneTestHandler(String name) { private GsmCdmaPhoneTestHandler(String name) { Loading Loading @@ -536,4 +551,89 @@ public class GsmCdmaPhoneTest extends TelephonyTest { assertEquals(SimulatedCommands.FAKE_ESN, mPhoneUT.getEsn()); assertEquals(SimulatedCommands.FAKE_ESN, mPhoneUT.getEsn()); assertEquals(SimulatedCommands.FAKE_MEID, mPhoneUT.getMeid()); assertEquals(SimulatedCommands.FAKE_MEID, mPhoneUT.getMeid()); } } @Test @SmallTest public void testEmergencyCallbackMessages() { verify(mSimulatedCommandsVerifier).setEmergencyCallbackMode(eq(mPhoneUT), anyInt(), anyObject()); verify(mSimulatedCommandsVerifier).registerForExitEmergencyCallbackMode(eq(mPhoneUT), anyInt(), anyObject()); // verify handling of emergency callback mode mSimulatedCommands.notifyEmergencyCallbackMode(); waitForMs(50); // verify ACTION_EMERGENCY_CALLBACK_MODE_CHANGED ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); try { verify(mIActivityManager, atLeast(1)).broadcastIntent(eq((IApplicationThread)null), intentArgumentCaptor.capture(), eq((String)null), eq((IIntentReceiver)null), eq(Activity.RESULT_OK), eq((String)null), eq((Bundle)null), eq((String[])null), anyInt(), eq((Bundle)null), eq(false), eq(true), anyInt()); } catch(Exception e) { fail("Unexpected exception: " + e.getStackTrace()); } Intent intent = intentArgumentCaptor.getValue(); assertEquals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, intent.getAction()); assertEquals(true, intent.getBooleanExtra(PhoneConstants.PHONE_IN_ECM_STATE, false)); // verify that wakeLock is acquired in ECM assertEquals(true, mPhoneUT.getWakeLock().isHeld()); mPhoneUT.setOnEcbModeExitResponse(mTestHandler, EVENT_EMERGENCY_CALLBACK_MODE_EXIT, null); mPhoneUT.registerForEmergencyCallToggle(mTestHandler, EVENT_EMERGENCY_CALL_TOGGLE, null); // verify handling of emergency callback mode exit mSimulatedCommands.notifyExitEmergencyCallbackMode(); waitForMs(50); // verify ACTION_EMERGENCY_CALLBACK_MODE_CHANGED try { verify(mIActivityManager, atLeast(2)).broadcastIntent(eq((IApplicationThread)null), intentArgumentCaptor.capture(), eq((String)null), eq((IIntentReceiver)null), eq(Activity.RESULT_OK), eq((String)null), eq((Bundle)null), eq((String[])null), anyInt(), eq((Bundle)null), eq(false), eq(true), anyInt()); } catch(Exception e) { fail("Unexpected exception: " + e.getStackTrace()); } intent = intentArgumentCaptor.getValue(); assertEquals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, intent.getAction()); assertEquals(false, intent.getBooleanExtra(PhoneConstants.PHONE_IN_ECM_STATE, true)); ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class); // verify EcmExitRespRegistrant and mEmergencyCallToggledRegistrants are notified verify(mTestHandler, times(2)).sendMessageAtTime(messageArgumentCaptor.capture(), anyLong()); List<Message> msgList = messageArgumentCaptor.getAllValues(); assertEquals(EVENT_EMERGENCY_CALLBACK_MODE_EXIT, msgList.get(0).what); assertEquals(EVENT_EMERGENCY_CALL_TOGGLE, msgList.get(1).what); // verify setInternalDataEnabled verify(mDcTracker).setInternalDataEnabled(true); // verify wakeLock released assertEquals(false, mPhoneUT.getWakeLock().isHeld()); } } }