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

Commit 3c7bda82 authored by Hunsuk Choi's avatar Hunsuk Choi
Browse files

Change emergency mode from CALLBACK to WWAN when starting a call

Bug: 325667283
Test: atest EmergencyStateTrackerTest
Change-Id: Ic4ceeb32588b330a5b4c428306c961105c3656f7
parent b8a76d63
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -498,17 +498,23 @@ public class EmergencyStateTracker {
                exitEmergencySmsCallbackMode();
                mOngoingConnection = c;
                mIsTestEmergencyNumber = isTestEmergencyNumber;
                // Ensure that domain selector requests scan.
                mLastEmergencyRegistrationResult = new EmergencyRegistrationResult(
                        AccessNetworkConstants.AccessNetworkType.UNKNOWN,
                        NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN,
                        NetworkRegistrationInfo.DOMAIN_UNKNOWN, false, false, 0, 0, "", "", "");
                if (isInEcm()) {
                    // Remove pending exit ECM runnable.
                    mHandler.removeCallbacks(mExitEcmRunnable);
                    releaseWakeLock();
                    ((GsmCdmaPhone) mPhone).notifyEcbmTimerReset(Boolean.TRUE);

                    mOngoingCallProperties = 0;
                    mCallEmergencyModeFuture = new CompletableFuture<>();
                    setEmergencyMode(mPhone, EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WWAN,
                            MSG_SET_EMERGENCY_MODE_DONE);
                    return mCallEmergencyModeFuture;
                }
                // Ensure that domain selector requests scan.
                mLastEmergencyRegistrationResult = new EmergencyRegistrationResult(
                        AccessNetworkConstants.AccessNetworkType.UNKNOWN,
                        NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN,
                        NetworkRegistrationInfo.DOMAIN_UNKNOWN, false, false, 0, 0, "", "", "");
                return CompletableFuture.completedFuture(DisconnectCause.NOT_DISCONNECTED);
            }

+6 −6
Original line number Diff line number Diff line
@@ -951,14 +951,16 @@ public class EmergencyStateTrackerTest extends TelephonyTest {
        processAllMessages();

        assertTrue(emergencyStateTracker.isInEcm());
        verify(phone0, times(1)).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
        verify(phone0, times(1)).setEmergencyMode(eq(MODE_EMERGENCY_CALLBACK), any(Message.class));

        // Second emergency call started.
        CompletableFuture<Integer> future = emergencyStateTracker.startEmergencyCall(phone0,
                mTestConnection2, false);

        // Returns DisconnectCause#NOT_DISCONNECTED immediately.
        assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
        assertFalse(future.isDone());
        verify(phone0, times(2)).setEmergencyMode(eq(MODE_EMERGENCY_WWAN), any(Message.class));
        verify(phone0, times(1)).setEmergencyMode(eq(MODE_EMERGENCY_CALLBACK), any(Message.class));
    }

    @Test
@@ -1021,9 +1023,7 @@ public class EmergencyStateTrackerTest extends TelephonyTest {
        future = emergencyStateTracker.startEmergencyCall(phone0, mTestConnection2, false);

        assertTrue(emergencyStateTracker.isInEmergencyMode());
        // Returns DisconnectCause#NOT_DISCONNECTED immediately.
        assertEquals(future.getNow(DisconnectCause.ERROR_UNSPECIFIED),
                Integer.valueOf(DisconnectCause.NOT_DISCONNECTED));
        assertFalse(future.isDone());

        emergencyStateTracker.onEmergencyTransportChanged(
                EmergencyStateTracker.EMERGENCY_TYPE_CALL, MODE_EMERGENCY_WLAN);