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

Commit 5bb40d1a authored by Sungcheol Ahn's avatar Sungcheol Ahn
Browse files

added eSOS test mode flag

Test: manual (b/365712434, b/368228789)
Bug: b/365556180
Flag: EXEMPT test only

Change-Id: If45c104519501e7eb8c3d36c55d8f76aa6b2c4d5
parent 22f4624b
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -124,6 +124,8 @@ public class SatelliteSOSMessageRecommender extends Handler {

    @Nullable private PersistentLogger mPersistentLogger = null;

    private boolean mIsTestEmergencyNumber = false;

    /**
     * Create an instance of SatelliteSOSMessageRecommender.
     *
@@ -213,11 +215,13 @@ public class SatelliteSOSMessageRecommender extends Handler {
     * @param connection The connection created by TelephonyConnectionService for the emergency
     *                   call.
     */
    public void onEmergencyCallStarted(@NonNull Connection connection) {
    public void onEmergencyCallStarted(@NonNull Connection connection,
            boolean isTestEmergencyNumber) {
        if (!isSatelliteSupported()) {
            plogd("onEmergencyCallStarted: satellite is not supported");
            return;
        }
        mIsTestEmergencyNumber = isTestEmergencyNumber;

        if (hasMessages(EVENT_EMERGENCY_CALL_STARTED)) {
            logd("onEmergencyCallStarted: Ignoring due to ongoing event:");
@@ -320,7 +324,8 @@ public class SatelliteSOSMessageRecommender extends Handler {
                    || isSatelliteConnectedViaCarrierWithinHysteresisTime())
                    && shouldTrackCall(mEmergencyConnection.getState())) {
                plogd("handleTimeoutEvent: Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer");
                Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
                Bundle extras = createExtraBundleForEventDisplayEmergencyMessage(
                        mIsTestEmergencyNumber);
                mEmergencyConnection.sendConnectionEvent(
                        TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras);
                isDialerNotified = true;
@@ -424,6 +429,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
            mIsTimerTimedOut = false;
            mCheckingAccessRestrictionInProgress = false;
            mIsSatelliteAllowedForCurrentLocation = false;
            mIsTestEmergencyNumber = false;
        }
    }

@@ -582,11 +588,13 @@ public class SatelliteSOSMessageRecommender extends Handler {

    @Nullable
    private static String getSatelliteEmergencyHandoverIntentActionFromOverlayConfig(
            @NonNull Context context) {
            @NonNull Context context, boolean isTestEmergencyNumber) {
        String action;
        try {
            action = context.getResources().getString(
                    R.string.config_satellite_emergency_handover_intent_action);
            int actionIntent = isTestEmergencyNumber
                    ? R.string.config_satellite_test_with_esp_replies_intent_action
                    : R.string.config_satellite_emergency_handover_intent_action;
            action = context.getResources().getString(actionIntent);
        } catch (Resources.NotFoundException ex) {
            loge("getSatelliteEmergencyHandoverIntentFilterActionFromOverlayConfig: ex=" + ex);
            action = null;
@@ -632,13 +640,15 @@ public class SatelliteSOSMessageRecommender extends Handler {
        return callback;
    }

    @NonNull private Bundle createExtraBundleForEventDisplayEmergencyMessage() {
    @NonNull private Bundle createExtraBundleForEventDisplayEmergencyMessage(
            boolean isTestEmergencyNumber) {
        int handoverType = EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS;
        Pair<String, String> oemSatelliteMessagingApp =
                getOemEnabledSatelliteHandoverAppFromOverlayConfig(mContext);
        String packageName = oemSatelliteMessagingApp.first;
        String className = oemSatelliteMessagingApp.second;
        String action = getSatelliteEmergencyHandoverIntentActionFromOverlayConfig(mContext);
        String action = getSatelliteEmergencyHandoverIntentActionFromOverlayConfig(mContext,
                isTestEmergencyNumber);

        if (isSatelliteConnectedViaCarrierWithinHysteresisTime()
                || isEmergencyCallToSatelliteHandoverTypeT911Enforced()) {
@@ -707,7 +717,8 @@ public class SatelliteSOSMessageRecommender extends Handler {
            @NonNull Connection connection) {
        plogd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully.");
        mEmergencyConnection = connection;
        Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
        Bundle extras = createExtraBundleForEventDisplayEmergencyMessage(
                /* isTestEmergencyNumber= */ true);
        connection.sendConnectionEvent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras);
        mEmergencyConnection = null;
    }
+22 −22
Original line number Diff line number Diff line
@@ -204,7 +204,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        when(mServiceState2.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(null);
        mTestSOSMessageRecommender.onEmergencyCallStarted(null, false);
        processAllMessages();
        assertFalse(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -213,7 +213,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    private void testTimeoutBeforeEmergencyCallEnd(int expectedHandoverType,
            String expectedPackageName, String expectedClassName, String expectedAction) {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertRegisterForStateChangedEventsTriggered(mPhone, 1,  1);
@@ -246,7 +246,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.setIsSatelliteViaOemProvisioned(false);
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertRegisterForStateChangedEventsTriggered(mPhone, 1, 1);
@@ -273,7 +273,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.isOemEnabledSatelliteSupported = false;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertRegisterForStateChangedEventsTriggered(mPhone, 1, 1);
@@ -312,7 +312,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Test
    public void testNetworkStateChangedBeforeTimeout() {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -341,7 +341,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

    @Test
    public void testSatelliteProvisionStateChangedBeforeTimeout() {
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();

        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
@@ -358,7 +358,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 1);
        assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 1);

        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -392,7 +392,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Test
    public void testEmergencyCallRedialBeforeTimeout() {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -400,7 +400,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        assertRegisterForStateChangedEventsTriggered(mPhone2, 1, 1);
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);

        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
@@ -454,7 +454,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

    @Test
    public void testOnEmergencyCallConnectionStateChangedWithWrongCallId() {
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();

        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
@@ -476,7 +476,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Test
    public void testSatelliteNotAllowedInCurrentLocation() {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
@@ -508,7 +508,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
                mContext,
                Looper.myLooper(),
                satelliteController, mTestImsManager);
        testSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        testSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();

        assertFalse(testSOSMessageRecommender.isTimerStarted());
@@ -538,13 +538,13 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        // Both OEM and carrier don't support satellite
        mTestSatelliteController.isSatelliteEmergencyMessagingSupportedViaCarrier = false;
        mTestSatelliteController.isOemEnabledSatelliteSupported = false;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(0, mTestSOSMessageRecommender.getTimeOutMillis());

        // Only OEM support satellite
        mTestSatelliteController.isOemEnabledSatelliteSupported = true;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(TEST_EMERGENCY_CALL_TO_SOS_MSG_HYSTERESIS_TIMEOUT_MILLIS,
                mTestSOSMessageRecommender.getTimeOutMillis());
@@ -556,7 +556,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.carrierEmergencyCallWaitForConnectionTimeoutMillis =
                carrierTimeoutMillis;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(TEST_EMERGENCY_CALL_TO_SOS_MSG_HYSTERESIS_TIMEOUT_MILLIS,
                mTestSOSMessageRecommender.getTimeOutMillis());
@@ -567,7 +567,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(true);
        mTestSatelliteController.carrierEmergencyCallWaitForConnectionTimeoutMillis =
                carrierTimeoutMillis;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertEquals(carrierTimeoutMillis, mTestSOSMessageRecommender.getTimeOutMillis());
    }
@@ -578,7 +578,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(true);
        mTestSatelliteController.mIsSatelliteViaOemProvisioned = true;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        assertEquals(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911,
                mTestSOSMessageRecommender.getEmergencyCallToSatelliteHandoverType());

@@ -591,7 +591,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(true);
        mTestSatelliteController.mIsSatelliteViaOemProvisioned = false;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        assertEquals(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911,
                mTestSOSMessageRecommender.getEmergencyCallToSatelliteHandoverType());

@@ -604,13 +604,13 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.mIsSatelliteViaOemProvisioned = true;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        assertEquals(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS,
                mTestSOSMessageRecommender.getEmergencyCallToSatelliteHandoverType());

        mTestSatelliteController.setSatelliteConnectedViaCarrierWithinHysteresisTime(false);
        mTestSatelliteController.mIsSatelliteViaOemProvisioned = false;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        assertEquals(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS,
                mTestSOSMessageRecommender.getEmergencyCallToSatelliteHandoverType());

@@ -619,7 +619,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

    private void testStopTrackingCallBeforeTimeout(
            @Connection.ConnectionState int connectionState) {
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();

        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
@@ -641,7 +641,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
            @ServiceState.RegState int availableServiceState,
            @ServiceState.RegState int unavailableServiceState) {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection, false);
        processAllMessages();
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());