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

Commit b32d2afc authored by Jack Nudelman's avatar Jack Nudelman
Browse files

Allow test emergency call to remove all radio off reasons.

Bug: 189365436
Test: Register mock number with
https://sites.google.com/a/google.com/android-telecom/testing/test-emergency-call,
trigger radio off thermal mitigation with
https://docs.google.com/document/d/1mRsIPGdb-zajRhCJm5N1jEKtwZ0yMcQzVST4p0Afj7c/edit?resourcekey=0-AtIFNnN8wNLBkrBYkkWbgg#,
then try ot place voice call. atest FrameworksTelephonyTests

Change-Id: I92cf8c8eeff2d44efffadfa9144342af0d6828dd
Merged-In: I92cf8c8eeff2d44efffadfa9144342af0d6828dd
parent a8efa11c
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1663,6 +1663,16 @@ public class GsmCdmaPhone extends Phone {
        }
    }

    @Override
    public void setRadioPowerOnForTestEmergencyCall(boolean isSelectedPhoneForEmergencyCall) {
        mSST.clearAllRadioOffReasons();

        // We don't want to have forEmergency call be true to prevent radio emergencyDial command
        // from being called for a test emergency number because the network may not be able to
        // find emergency routing for it and dial it do the default emergency services line.
        setRadioPower(true, false, isSelectedPhoneForEmergencyCall, false);
    }

    @Override
    public void setRadioPower(boolean power, boolean forEmergencyCall,
            boolean isSelectedPhoneForEmergencyCall, boolean forceApply) {
+8 −0
Original line number Diff line number Diff line
@@ -579,6 +579,14 @@ public interface PhoneInternalInterface {
        setRadioPower(power, false, false, false);
    }

    /**
     * Sets the radio power on for a test emergency number.
     *
     * @param isSelectedPhoneForEmergencyCall true means this phone / modem is selected to place
     *                                  emergency call after turning power on.
     */
    default void setRadioPowerOnForTestEmergencyCall(boolean isSelectedPhoneForEmergencyCall) {}

    /**
     * Sets the radio power on/off state with option to specify whether it's for emergency call
     * (off is sometimes called "airplane mode"). Current state can be gotten via
+10 −2
Original line number Diff line number Diff line
@@ -1092,6 +1092,14 @@ public class ServiceStateTracker extends Handler {
        return sRadioPowerOffReasons;
    }

    /**
     * Clear all the radio off reasons. This should be done when turning radio off for genuine or
     * test emergency calls.
     */
    public void clearAllRadioOffReasons() {
        sRadioPowerOffReasons.clear();
    }

    /**
     * Turn on or off radio power.
     */
@@ -1114,7 +1122,7 @@ public class ServiceStateTracker extends Handler {
     * Turn on or off radio power with option to specify whether it's for emergency call and specify
     * a reason for setting the power state.
     * More details check {@link PhoneInternalInterface#setRadioPower(
     * boolean, boolean, boolean, boolean, String)}.
     * boolean, boolean, boolean, boolean, int)}.
     */
    public void setRadioPowerForReason(boolean power, boolean forEmergencyCall,
            boolean isSelectedPhoneForEmergencyCall, boolean forceApply, int reason) {
@@ -1123,7 +1131,7 @@ public class ServiceStateTracker extends Handler {

        if (power) {
            if (forEmergencyCall) {
                sRadioPowerOffReasons.clear();
                clearAllRadioOffReasons();
            } else {
                sRadioPowerOffReasons.remove(reason);
            }
+13 −0
Original line number Diff line number Diff line
@@ -1412,6 +1412,19 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        verify(mSST).setRadioPowerForReason(true, true, false, true, Phone.RADIO_POWER_REASON_USER);
    }

    @Test
    @SmallTest
    public void testSetRadioPowerOnForTestEmergencyCall() {
        mPhoneUT.setRadioPower(false);
        verify(mSST).setRadioPowerForReason(false, false, false, false,
                Phone.RADIO_POWER_REASON_USER);

        mPhoneUT.setRadioPowerOnForTestEmergencyCall(false);
        verify(mSST).clearAllRadioOffReasons();
        verify(mSST).setRadioPowerForReason(eq(true), eq(false), anyBoolean(), eq(false),
                eq(Phone.RADIO_POWER_REASON_USER));
    }

    @Test
    @SmallTest
    public void testReapplyUiccApplicationEnablementRetry() throws Exception {