13c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan/* 29c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu * Copyright (C) 2016 The Android Open Source Project 33c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * 43c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * Licensed under the Apache License, Version 2.0 (the "License"); 53c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * you may not use this file except in compliance with the License. 63c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * You may obtain a copy of the License at 73c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * 83c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * http://www.apache.org/licenses/LICENSE-2.0 93c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * 103c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * Unless required by applicable law or agreed to in writing, software 113c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * distributed under the License is distributed on an "AS IS" BASIS, 123c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * See the License for the specific language governing permissions and 143c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan * limitations under the License. 153c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan */ 163c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 173c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanpackage com.android.internal.telephony.gsm; 183c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 193c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport android.content.Intent; 203c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport android.os.HandlerThread; 213c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport android.provider.Telephony; 223c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport android.test.suitebuilder.annotation.SmallTest; 239c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu 243c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport com.android.internal.telephony.SmsStorageMonitor; 259c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport com.android.internal.telephony.TelephonyTest; 263c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport com.android.internal.telephony.TelephonyTestUtils; 273c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 283c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport org.junit.After; 293c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport org.junit.Before; 303c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport org.junit.Test; 313c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport org.mockito.ArgumentCaptor; 323c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajanimport org.mockito.Mock; 333c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 349c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport static org.junit.Assert.assertTrue; 359c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport static org.mockito.Mockito.anyBoolean; 369c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport static org.mockito.Mockito.anyInt; 379c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport static org.mockito.Mockito.doReturn; 389c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yuimport static org.mockito.Mockito.verify; 393c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 409c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yupublic class GsmCellBroadcastHandlerTest extends TelephonyTest { 413c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Mock 423c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private SmsStorageMonitor mSmsStorageMonitor; 433c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Mock 443c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private android.telephony.SmsMessage mSmsMessage; 453c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Mock 463c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private SmsMessage mGsmSmsMessage; 473c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 483c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private GsmCellBroadcastHandler mGsmCellBroadcastHandler; 497e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan private GsmCellBroadcastHandlerTestHandler mGsmCellBroadcastHandlerTestHandler; 503c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 513c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private class GsmCellBroadcastHandlerTestHandler extends HandlerThread { 523c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 533c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan private GsmCellBroadcastHandlerTestHandler(String name) { 543c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan super(name); 553c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 563c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 573c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Override 583c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan public void onLooperPrepared() { 599c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu mGsmCellBroadcastHandler = GsmCellBroadcastHandler.makeGsmCellBroadcastHandler( 609c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu mContextFixture.getTestDouble(), mPhone); 619c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu setReady(true); 623c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 633c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 643c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 653c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Before 663c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan public void setUp() throws Exception { 673c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 689c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu super.setUp(getClass().getSimpleName()); 693c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 703c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan doReturn(true).when(mTelephonyManager).getSmsReceiveCapableForPhone(anyInt(), anyBoolean()); 713c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan doReturn(true).when(mSmsStorageMonitor).isStorageAvailable(); 723c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 737e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan mGsmCellBroadcastHandlerTestHandler = 747e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan new GsmCellBroadcastHandlerTestHandler(getClass().getSimpleName()); 757e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan mGsmCellBroadcastHandlerTestHandler.start(); 765d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan waitUntilReady(); 773c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 783c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 793c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @After 803c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan public void tearDown() throws Exception { 813c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan mGsmCellBroadcastHandler = null; 827e9240253edb59e0aa657de434faa1ccdf17a742Amit Mahajan mGsmCellBroadcastHandlerTestHandler.quitSafely(); 839c96807d990cdd3f4bb2d3f0fd56a1e78a95b353Jack Yu super.tearDown(); 843c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 853c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan 863c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan @Test @SmallTest 875d5ca33a24e6b73a48b575a0e1a5e790784d0bb7Amit Mahajan public void testBroadcastSms() { 883c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan mSimulatedCommands.notifyGsmBroadcastSms(new byte[] { 893c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0xc0, //geographical scope 903c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0x01, //serial number 913c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0x01, //serial number 923c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0x01, //message identifier 933c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0x01, //message identifier 943c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan (byte)0x01 953c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan }); 963c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan TelephonyTestUtils.waitForMs(50); 973c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); 983c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan verify(mContextFixture.getTestDouble()).sendBroadcast(intentArgumentCaptor.capture()); 993c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan assertTrue(intentArgumentCaptor.getValue().getAction().equals( 1003c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION) || 1013c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan intentArgumentCaptor.getValue().getAction().equals( 1023c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION)); 1033c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan } 1043c7c2c2dfecfe11991f707a09ce79863e0ffdaa7Amit Mahajan} 105