Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 514ca08c authored by Shuo Qian's avatar Shuo Qian Committed by sqian
Browse files

Add emergency number listener PhoneStateListenerTest in framework

Test: atest
Bug: 135204580
Change-Id: Iee1dbd4042f364137d5fa63153f360d1cba8a4cf
Merged-In: Iee1dbd4042f364137d5fa63153f360d1cba8a4cf
(cherry picked from commit 0f684a6a)
parent eaf076a9
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.HandlerThread;
import android.telephony.PhoneStateListener;
import android.telephony.PhysicalChannelConfig;
import android.telephony.ServiceState;
import android.telephony.emergency.EmergencyNumber;
import android.test.suitebuilder.annotation.SmallTest;

import org.junit.After;
@@ -31,6 +32,7 @@ import org.junit.Before;
import org.junit.Test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@@ -40,6 +42,8 @@ public class PhoneStateListenerTest extends TelephonyTest {
    private PhoneStateListenerHandler mPhoneStateListenerHandler;
    private boolean mUserMobileDataState = false;
    private List<PhysicalChannelConfig> mPhysicalChannelConfigs;
    private EmergencyNumber mCalledEmergencyNumber;
    private EmergencyNumber mTextedEmergencyNumber;

    private class PhoneStateListenerHandler extends HandlerThread {
        private PhoneStateListenerHandler(String name) {
@@ -64,6 +68,20 @@ public class PhoneStateListenerTest extends TelephonyTest {
                    setReady(true);
                }

                public void onOutgoingEmergencyCall(
                        EmergencyNumber emergencyNumber) {
                    logd("OutgoingCallEmergencyNumber Changed");
                    mCalledEmergencyNumber = emergencyNumber;
                    setReady(true);
                }

                public void onOutgoingEmergencySms(
                        EmergencyNumber emergencyNumber) {
                    logd("OutgoingSmsEmergencyNumber Changed");
                    mTextedEmergencyNumber = emergencyNumber;
                    setReady(true);
                }

                @Override
                public void onPhysicalChannelConfigurationChanged(
                        List<PhysicalChannelConfig> configs) {
@@ -121,6 +139,54 @@ public class PhoneStateListenerTest extends TelephonyTest {
        assertTrue(mUserMobileDataState);
    }

    @Test @SmallTest
    public void testTriggerOutgoingCallEmergencyNumberChanged() throws Exception {
        Field field = PhoneStateListener.class.getDeclaredField("callback");
        field.setAccessible(true);

        assertNull(mCalledEmergencyNumber);

        EmergencyNumber emergencyNumber = new EmergencyNumber(
                "911",
                "us",
                "30",
                EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                new ArrayList<String>(),
                EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING,
                EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL);

        setReady(false);
        ((IPhoneStateListener) field.get(mPhoneStateListenerUT)).onOutgoingEmergencyCall(
                emergencyNumber);
        waitUntilReady();

        assertTrue(mCalledEmergencyNumber.equals(emergencyNumber));
    }

    @Test @SmallTest
    public void testTriggerOutgoingSmsEmergencyNumberChanged() throws Exception {
        Field field = PhoneStateListener.class.getDeclaredField("callback");
        field.setAccessible(true);

        assertNull(mTextedEmergencyNumber);

        EmergencyNumber emergencyNumber = new EmergencyNumber(
                "911",
                "us",
                "30",
                EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
                new ArrayList<String>(),
                EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING,
                EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL);

        setReady(false);
        ((IPhoneStateListener) field.get(mPhoneStateListenerUT)).onOutgoingEmergencySms(
                emergencyNumber);
        waitUntilReady();

        assertTrue(mTextedEmergencyNumber.equals(emergencyNumber));
    }

    @Test @SmallTest
    public void testTriggerPhysicalChannelConfigurationChanged() throws Exception {
        Field field = PhoneStateListener.class.getDeclaredField("callback");