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

Commit 755cbd5e authored by Jack Nudelman's avatar Jack Nudelman Committed by Gerrit Code Review
Browse files

Merge "Check for specific radio off reason for phone."

parents e2eb1e1b 2f7f416a
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);
    }