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

Commit 98e1a7a0 authored by Jack Nudelman's avatar Jack Nudelman Committed by Automerger Merge Worker
Browse files

Merge "Check for specific radio off reason for phone." am: 755cbd5e

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1740464

Change-Id: Id6b91b528f422d6fc12c31a50976a946580145db
parents f673ed26 755cbd5e
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1844,6 +1844,17 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return null;
    }

    /**
     * Check whether the radio is off for thermal reason.
     *
     * @return {@code true} only if thermal mitigation is one of the reason for which radio is off.
     */
    public boolean isRadioOffForThermalMitigation() {
        ServiceStateTracker sst = getServiceStateTracker();
        return sst != null && sst.getRadioPowerOffReasons()
                .contains(Phone.RADIO_POWER_REASON_THERMAL);
    }

    /**
     * Retrieves the EmergencyNumberTracker of the phone instance.
     */
+1 −2
Original line number Diff line number Diff line
@@ -1083,8 +1083,7 @@ public class ServiceStateTracker extends Handler {
    /**
     * @return the current reasons for which the radio is off.
     */
    @VisibleForTesting
    public Set<Integer> getRadioPowerOffReasonsForTest() {
    public Set<Integer> getRadioPowerOffReasons() {
        return sRadioPowerOffReasons;
    }

+9 −9
Original line number Diff line number Diff line
@@ -404,33 +404,33 @@ public class ServiceStateTrackerTest extends TelephonyTest {
    public void testSetRadioPowerForReason() {
        // Radio does not turn on if off for other reason and not emergency call.
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_ON);
        assertTrue(sst.getRadioPowerOffReasonsForTest().isEmpty());
        assertTrue(sst.getRadioPowerOffReasons().isEmpty());
        sst.setRadioPowerForReason(false, false, false, false, Phone.RADIO_POWER_REASON_THERMAL);
        assertTrue(sst.getRadioPowerOffReasonsForTest().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasonsForTest().size() == 1);
        assertTrue(sst.getRadioPowerOffReasons().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasons().size() == 1);
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_OFF);
        sst.setRadioPowerForReason(true, false, false, false, Phone.RADIO_POWER_REASON_USER);
        assertTrue(sst.getRadioPowerOffReasonsForTest().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasonsForTest().size() == 1);
        assertTrue(sst.getRadioPowerOffReasons().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasons().size() == 1);
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_OFF);

        // Radio power state reason is removed and radio turns on if turned on for same reason it
        // had been turned off for.
        sst.setRadioPowerForReason(true, false, false, false, Phone.RADIO_POWER_REASON_THERMAL);
        assertTrue(sst.getRadioPowerOffReasonsForTest().isEmpty());
        assertTrue(sst.getRadioPowerOffReasons().isEmpty());
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_ON);

        // Turn radio off, then successfully turn radio on for emergency call.
        sst.setRadioPowerForReason(false, false, false, false, Phone.RADIO_POWER_REASON_THERMAL);
        assertTrue(sst.getRadioPowerOffReasonsForTest().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasonsForTest().size() == 1);
        assertTrue(sst.getRadioPowerOffReasons().contains(Phone.RADIO_POWER_REASON_THERMAL));
        assertTrue(sst.getRadioPowerOffReasons().size() == 1);
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_OFF);
        sst.setRadioPower(true, true, true, false);
        assertTrue(sst.getRadioPowerOffReasonsForTest().isEmpty());
        assertTrue(sst.getRadioPowerOffReasons().isEmpty());
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertTrue(mSimulatedCommands.getRadioState() == TelephonyManager.RADIO_POWER_ON);
    }