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

Commit 82b980d2 authored by Hwangoo Park's avatar Hwangoo Park Committed by Android (Google) Code Review
Browse files

Merge "Add exception handling for radio power off during emergency call" into main

parents 3fc9d063 5b477048
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1251,10 +1251,15 @@ public class EmergencyStateTracker {
            exitEmergencyMode(gsmCdmaPhone, EMERGENCY_TYPE_CALL);
        }

        // If an emergency call is in progress, even if this method is called for any reason,
        // we should not initialize the Phone object so that the application can normally end
        // the emergency call.
        if (mOngoingConnection == null) {
            mEmergencyCallDomain = NetworkRegistrationInfo.DOMAIN_UNKNOWN;
            mIsTestEmergencyNumber = false;
            mPhone = null;
        }
    }

    private void releaseWakeLock() {
        // Release wakeLock.
+26 −0
Original line number Diff line number Diff line
@@ -1113,6 +1113,32 @@ public class EmergencyStateTrackerTest extends TelephonyTest {
                eq(EMERGENCY_CALLBACK_MODE_CALL), anyInt());
    }

    @Test
    @SmallTest
    public void testEndCallAfterExitEmergencyCallbackModeIsCalledInNonEcbm() throws Exception {
        // Setup EmergencyStateTracker
        EmergencyStateTracker emergencyStateTracker = setupEmergencyStateTracker(
                /* isSuplDdsSwitchRequiredForEmergencyCall= */ true);
        // Create test Phone
        GsmCdmaPhone testPhone = (GsmCdmaPhone) setupTestPhoneForEmergencyCall(
                /* isRoaming= */ true, /* isRadioOn= */ true);
        setUpAsyncResultForSetEmergencyMode(testPhone, E_REG_RESULT);
        setUpAsyncResultForExitEmergencyMode(testPhone);
        // Start emergency call then enter ECM
        CompletableFuture<Integer> unused = emergencyStateTracker.startEmergencyCall(testPhone,
                mTestConnection1, false);
        processAllMessages();

        // Exit emergency mode explicitly
        emergencyStateTracker.exitEmergencyCallbackMode();

        emergencyStateTracker.endCall(mTestConnection1);
        processAllMessages();

        // Verify exitEmergencyMode() is called.
        verify(testPhone).exitEmergencyMode(any(Message.class));
    }

    @Test
    @SmallTest
    public void testRecoverNormalInCellularWhenVoWiFiConnected() {