diff --git a/core/java/android/service/dreams/DreamManagerInternal.java b/core/java/android/service/dreams/DreamManagerInternal.java index 6956cd4cae6b8..295171ca9bbd2 100644 --- a/core/java/android/service/dreams/DreamManagerInternal.java +++ b/core/java/android/service/dreams/DreamManagerInternal.java @@ -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. diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index df3a5e3b7b358..7964fd550266f 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -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 diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 05cb42973a00c..62b21ed0171af 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -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; } diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index dbf05f1cd7c7f..097a66e0a2536 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -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*/); } } diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java index 9ff7d69e09a61..2a6e6d8765999 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -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