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

Commit f9f3936c authored by Shuo Qian's avatar Shuo Qian Committed by Gerrit Code Review
Browse files

Merge "Add emergency number listener PhoneStateListenerTest in framework"

parents eaf076a9 514ca08c
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");