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

Commit 800c1b5c authored by Lais Andrade's avatar Lais Andrade
Browse files

Use onBootPhase for PowerManagerService bring-up

Change PowerManagerService to remove the extra systemReady method called
from SystemServer and use the boot phase for system services ready
instead.

Fix: 218847044
Test: PowerManagerServiceTest
Change-Id: Ib69f0a0a5168e270e413c25d75f739809787eded
parent 5dc8ee52
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -1172,7 +1172,10 @@ public final class PowerManagerService extends SystemService
    @Override
    @Override
    public void onBootPhase(int phase) {
    public void onBootPhase(int phase) {
        synchronized (mLock) {
        synchronized (mLock) {
            if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
            if (phase == PHASE_SYSTEM_SERVICES_READY) {
                systemReady();

            } else if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
                incrementBootCount();
                incrementBootCount();


            } else if (phase == PHASE_BOOT_COMPLETED) {
            } else if (phase == PHASE_BOOT_COMPLETED) {
@@ -1198,7 +1201,7 @@ public final class PowerManagerService extends SystemService
        }
        }
    }
    }


    public void systemReady() {
    private void systemReady() {
        synchronized (mLock) {
        synchronized (mLock) {
            mSystemReady = true;
            mSystemReady = true;
            mDreamManager = getLocalService(DreamManagerInternal.class);
            mDreamManager = getLocalService(DreamManagerInternal.class);
+1 −1
Original line number Original line Diff line number Diff line
@@ -276,7 +276,7 @@ public class BatterySaverPolicy extends ContentObserver implements
    }
    }


    /**
    /**
     * Called by {@link PowerManagerService#systemReady}, *with no lock held.*
     * Called by {@link PowerManagerService#onBootPhase}, *with no lock held.*
     */
     */
    public void systemReady() {
    public void systemReady() {
        ConcurrentUtils.wtfIfLockHeld(TAG, mLock);
        ConcurrentUtils.wtfIfLockHeld(TAG, mLock);
+0 −9
Original line number Original line Diff line number Diff line
@@ -2689,15 +2689,6 @@ public final class SystemServer implements Dumpable {
            systemTheme.rebase();
            systemTheme.rebase();
        }
        }


        t.traceBegin("MakePowerManagerServiceReady");
        try {
            // TODO: use boot phase
            mPowerManagerService.systemReady();
        } catch (Throwable e) {
            reportWtf("making Power Manager Service ready", e);
        }
        t.traceEnd();

        // Permission policy service
        // Permission policy service
        t.traceBegin("StartPermissionPolicyService");
        t.traceBegin("StartPermissionPolicyService");
        mSystemServiceManager.startService(PermissionPolicyService.class);
        mSystemServiceManager.startService(PermissionPolicyService.class);
+1 −1
Original line number Original line Diff line number Diff line
@@ -263,7 +263,7 @@ public class PowerManagerServiceMockingTest {
    @Test
    @Test
    public void testUserActivityOnDeviceStateChange() {
    public void testUserActivityOnDeviceStateChange() {
        createService();
        createService();
        mService.systemReady();
        mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);


        final DisplayInfo info = new DisplayInfo();
        final DisplayInfo info = new DisplayInfo();
+18 −22
Original line number Original line Diff line number Diff line
@@ -319,7 +319,7 @@ public class PowerManagerServiceTest {
    }
    }


    private void startSystem() {
    private void startSystem() {
        mService.systemReady();
        mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);


        // Grab the BatteryReceiver
        // Grab the BatteryReceiver
        ArgumentCaptor<BatteryReceiver> batCaptor = ArgumentCaptor.forClass(BatteryReceiver.class);
        ArgumentCaptor<BatteryReceiver> batCaptor = ArgumentCaptor.forClass(BatteryReceiver.class);
@@ -419,7 +419,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testGetDesiredScreenPolicy_WithVR() {
    public void testGetDesiredScreenPolicy_WithVR() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        // Brighten up the screen
        // Brighten up the screen
        mService.setWakefulnessLocked(Display.DEFAULT_DISPLAY_GROUP, WAKEFULNESS_AWAKE, 0, 0, 0, 0,
        mService.setWakefulnessLocked(Display.DEFAULT_DISPLAY_GROUP, WAKEFULNESS_AWAKE, 0, 0, 0, 0,
                null, null);
                null, null);
@@ -607,8 +607,7 @@ public class PowerManagerServiceTest {
    public void testWasDeviceIdleFor_true() {
    public void testWasDeviceIdleFor_true() {
        int interval = 1000;
        int interval = 1000;
        createService();
        createService();
        mService.systemReady();
        startSystem();
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
        mService.onUserActivity();
        mService.onUserActivity();
        advanceTime(interval + 1 /* just a little more */);
        advanceTime(interval + 1 /* just a little more */);
        assertThat(mService.wasDeviceIdleForInternal(interval)).isTrue();
        assertThat(mService.wasDeviceIdleForInternal(interval)).isTrue();
@@ -618,8 +617,7 @@ public class PowerManagerServiceTest {
    public void testWasDeviceIdleFor_false() {
    public void testWasDeviceIdleFor_false() {
        int interval = 1000;
        int interval = 1000;
        createService();
        createService();
        mService.systemReady();
        startSystem();
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
        mService.onUserActivity();
        mService.onUserActivity();
        assertThat(mService.wasDeviceIdleForInternal(interval)).isFalse();
        assertThat(mService.wasDeviceIdleForInternal(interval)).isFalse();
    }
    }
@@ -627,8 +625,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testForceSuspend_putsDeviceToSleep() {
    public void testForceSuspend_putsDeviceToSleep() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);


        // Verify that we start awake
        // Verify that we start awake
        assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
        assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
@@ -673,8 +670,7 @@ public class PowerManagerServiceTest {
        //
        //
        // TEST STARTS HERE
        // TEST STARTS HERE
        //
        //
        mService.systemReady();
        startSystem();
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);


        // Verify that we start awake
        // Verify that we start awake
        assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
        assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
@@ -772,7 +768,7 @@ public class PowerManagerServiceTest {
        createService();
        createService();
        assertTrue(isAcquired[0]);
        assertTrue(isAcquired[0]);


        mService.systemReady();
        mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);
        assertTrue(isAcquired[0]);
        assertTrue(isAcquired[0]);


        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
        mService.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
@@ -1146,7 +1142,7 @@ public class PowerManagerServiceTest {
    public void testQuiescentBoot_WakeKeyBeforeBootCompleted_AwakeAfterBootCompleted() {
    public void testQuiescentBoot_WakeKeyBeforeBootCompleted_AwakeAfterBootCompleted() {
        when(mSystemPropertiesMock.get(eq(SYSTEM_PROPERTY_QUIESCENT), any())).thenReturn("1");
        when(mSystemPropertiesMock.get(eq(SYSTEM_PROPERTY_QUIESCENT), any())).thenReturn("1");
        createService();
        createService();
        mService.systemReady();
        startSystem();


        mService.getBinderServiceInstance().wakeUp(mClock.now(),
        mService.getBinderServiceInstance().wakeUp(mClock.now(),
                PowerManager.WAKE_REASON_UNKNOWN, "testing IPowerManager.wakeUp()", "pkg.name");
                PowerManager.WAKE_REASON_UNKNOWN, "testing IPowerManager.wakeUp()", "pkg.name");
@@ -1359,7 +1355,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testSetPowerBoost_redirectsCallToNativeWrapper() {
    public void testSetPowerBoost_redirectsCallToNativeWrapper() {
        createService();
        createService();
        mService.systemReady();
        startSystem();


        mService.getBinderServiceInstance().setPowerBoost(Boost.INTERACTION, 1234);
        mService.getBinderServiceInstance().setPowerBoost(Boost.INTERACTION, 1234);


@@ -1369,7 +1365,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testSetPowerMode_redirectsCallToNativeWrapper() {
    public void testSetPowerMode_redirectsCallToNativeWrapper() {
        createService();
        createService();
        mService.systemReady();
        startSystem();


        // Enabled launch boost in BatterySaverController to allow setting launch mode.
        // Enabled launch boost in BatterySaverController to allow setting launch mode.
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(false);
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(false);
@@ -1385,7 +1381,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testSetPowerMode_withLaunchBoostDisabledAndModeLaunch_ignoresCallToEnable() {
    public void testSetPowerMode_withLaunchBoostDisabledAndModeLaunch_ignoresCallToEnable() {
        createService();
        createService();
        mService.systemReady();
        startSystem();


        // Disables launch boost in BatterySaverController.
        // Disables launch boost in BatterySaverController.
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(true);
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(true);
@@ -1401,7 +1397,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testSetPowerModeChecked_returnsNativeCallResult() {
    public void testSetPowerModeChecked_returnsNativeCallResult() {
        createService();
        createService();
        mService.systemReady();
        startSystem();


        // Disables launch boost in BatterySaverController.
        // Disables launch boost in BatterySaverController.
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(true);
        when(mBatterySaverControllerMock.isLaunchBoostDisabled()).thenReturn(true);
@@ -1564,7 +1560,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testGetFullPowerSavePolicy_returnsStateMachineResult() {
    public void testGetFullPowerSavePolicy_returnsStateMachineResult() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        BatterySaverPolicyConfig mockReturnConfig = new BatterySaverPolicyConfig.Builder().build();
        BatterySaverPolicyConfig mockReturnConfig = new BatterySaverPolicyConfig.Builder().build();
        when(mBatterySaverStateMachineMock.getFullBatterySaverPolicy())
        when(mBatterySaverStateMachineMock.getFullBatterySaverPolicy())
                .thenReturn(mockReturnConfig);
                .thenReturn(mockReturnConfig);
@@ -1579,7 +1575,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testSetFullPowerSavePolicy_callsStateMachine() {
    public void testSetFullPowerSavePolicy_callsStateMachine() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        BatterySaverPolicyConfig mockSetPolicyConfig =
        BatterySaverPolicyConfig mockSetPolicyConfig =
                new BatterySaverPolicyConfig.Builder().build();
                new BatterySaverPolicyConfig.Builder().build();
        when(mBatterySaverStateMachineMock.setFullBatterySaverPolicy(any())).thenReturn(true);
        when(mBatterySaverStateMachineMock.setFullBatterySaverPolicy(any())).thenReturn(true);
@@ -1593,7 +1589,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testLowPowerStandby_whenInactive_FgsWakeLockEnabled() {
    public void testLowPowerStandby_whenInactive_FgsWakeLockEnabled() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.setDeviceIdleModeInternal(true);
        mService.setDeviceIdleModeInternal(true);
@@ -1604,7 +1600,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testLowPowerStandby_whenActive_FgsWakeLockDisabled() {
    public void testLowPowerStandby_whenActive_FgsWakeLockDisabled() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.setDeviceIdleModeInternal(true);
        mService.setDeviceIdleModeInternal(true);
@@ -1616,7 +1612,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testLowPowerStandby_whenActive_FgsWakeLockEnabledIfAllowlisted() {
    public void testLowPowerStandby_whenActive_FgsWakeLockEnabledIfAllowlisted() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        WakeLock wakeLock = acquireWakeLock("fgsWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_FOREGROUND_SERVICE);
        mService.setDeviceIdleModeInternal(true);
        mService.setDeviceIdleModeInternal(true);
@@ -1629,7 +1625,7 @@ public class PowerManagerServiceTest {
    @Test
    @Test
    public void testLowPowerStandby_whenActive_BoundTopWakeLockDisabled() {
    public void testLowPowerStandby_whenActive_BoundTopWakeLockDisabled() {
        createService();
        createService();
        mService.systemReady();
        startSystem();
        WakeLock wakeLock = acquireWakeLock("BoundTopWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        WakeLock wakeLock = acquireWakeLock("BoundTopWakeLock", PowerManager.PARTIAL_WAKE_LOCK);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_BOUND_TOP);
        mService.updateUidProcStateInternal(wakeLock.mOwnerUid, PROCESS_STATE_BOUND_TOP);
        mService.setDeviceIdleModeInternal(true);
        mService.setDeviceIdleModeInternal(true);