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

Commit f2a52f2b authored by Jack Nudelman's avatar Jack Nudelman Committed by Android (Google) Code Review
Browse files

Merge "Check for specific radio off reason for phone." into sc-dev

parents 9f4843e4 3725f9eb
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1847,6 +1847,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
@@ -1084,8 +1084,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
@@ -405,33 +405,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);
    }