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

Commit 312db22a authored by Darrell Shi's avatar Darrell Shi
Browse files

Add more specific start/stop dream reasons.

As dreams get more complex, we would like more specific loggings for how
dreams are started/stopped for better debugging.

This CL adds "reason" as a required parameter in the start/stop dream
internal/private API. This allows callers to specify reasons.

Bug: 252796782
Fix: 252796782
Test: verified reasons are correctly logged on device
Change-Id: Icea03eb6e23ca113f50fa047f6d57e6e1d0b5604
parent 402cb85a
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -29,16 +29,18 @@ public abstract class DreamManagerInternal {
     *
     * @param doze If true, starts the doze dream component if one has been configured,
     * otherwise starts the user-specified dream.
     * @param reason The reason to start dreaming, which is logged to help debugging.
     */
    public abstract void startDream(boolean doze);
    public abstract void startDream(boolean doze, String reason);

    /**
     * Called by the power manager to stop a dream.
     *
     * @param immediate If true, ends the dream summarily, otherwise gives it some time
     * to perform a proper exit transition.
     * @param reason The reason to stop dreaming, which is logged to help debugging.
     */
    public abstract void stopDream(boolean immediate);
    public abstract void stopDream(boolean immediate, String reason);

    /**
     * Called by the power manager to determine whether a dream is running.
+4 −4
Original line number Diff line number Diff line
@@ -856,13 +856,13 @@ public final class DreamManagerService extends SystemService {

    private final class LocalService extends DreamManagerInternal {
        @Override
        public void startDream(boolean doze) {
            startDreamInternal(doze, "dream manager request" /*reason*/);
        public void startDream(boolean doze, String reason) {
            startDreamInternal(doze, reason);
        }

        @Override
        public void stopDream(boolean immediate) {
            stopDreamInternal(immediate, "dream manager request" /*reason*/);
        public void stopDream(boolean immediate, String reason) {
            stopDreamInternal(immediate, reason);
        }

        @Override
+1 −1
Original line number Diff line number Diff line
@@ -1597,7 +1597,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        // If there's a dream running then use home to escape the dream
        // but don't actually go home.
        if (mDreamManagerInternal != null && mDreamManagerInternal.isDreaming()) {
            mDreamManagerInternal.stopDream(false /*immediate*/);
            mDreamManagerInternal.stopDream(false /*immediate*/, "short press on home" /*reason*/);
            return;
        }

+5 −3
Original line number Diff line number Diff line
@@ -3218,8 +3218,10 @@ public final class PowerManagerService extends SystemService
        if (mDreamManager != null) {
            // Restart the dream whenever the sandman is summoned.
            if (startDreaming) {
                mDreamManager.stopDream(/* immediate= */ false);
                mDreamManager.startDream(wakefulness == WAKEFULNESS_DOZING);
                mDreamManager.stopDream(/* immediate= */ false,
                        "power manager request before starting dream" /*reason*/);
                mDreamManager.startDream(wakefulness == WAKEFULNESS_DOZING,
                        "power manager request" /*reason*/);
            }
            isDreaming = mDreamManager.isDreaming();
        } else {
@@ -3304,7 +3306,7 @@ public final class PowerManagerService extends SystemService

        // Stop dream.
        if (isDreaming) {
            mDreamManager.stopDream(/* immediate= */ false);
            mDreamManager.stopDream(/* immediate= */ false, "power manager request" /*reason*/);
        }
    }

+5 −5
Original line number Diff line number Diff line
@@ -731,7 +731,7 @@ public class PowerManagerServiceTest {
        doAnswer(inv -> {
            when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
            return null;
        }).when(mDreamManagerInternalMock).startDream(anyBoolean());
        }).when(mDreamManagerInternalMock).startDream(anyBoolean(), anyString());

        setMinimumScreenOffTimeoutConfig(5);
        createService();
@@ -753,7 +753,7 @@ public class PowerManagerServiceTest {
        doAnswer(inv -> {
            when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
            return null;
        }).when(mDreamManagerInternalMock).startDream(anyBoolean());
        }).when(mDreamManagerInternalMock).startDream(anyBoolean(), anyString());

        setMinimumScreenOffTimeoutConfig(5);
        createService();
@@ -1168,7 +1168,7 @@ public class PowerManagerServiceTest {
        doAnswer(inv -> {
            when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
            return null;
        }).when(mDreamManagerInternalMock).startDream(anyBoolean());
        }).when(mDreamManagerInternalMock).startDream(anyBoolean(), anyString());

        final String pkg = mContextSpy.getOpPackageName();
        final Binder token = new Binder();
@@ -1662,7 +1662,7 @@ public class PowerManagerServiceTest {
        forceDozing();
        // Allow handleSandman() to be called asynchronously
        advanceTime(500);
        verify(mDreamManagerInternalMock).startDream(eq(true));
        verify(mDreamManagerInternalMock).startDream(eq(true), anyString());
    }

    @Test
@@ -1700,7 +1700,7 @@ public class PowerManagerServiceTest {

        // Allow handleSandman() to be called asynchronously
        advanceTime(500);
        verify(mDreamManagerInternalMock).startDream(eq(true));
        verify(mDreamManagerInternalMock).startDream(eq(true), anyString());
    }

    @Test