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
This commit is contained in:
Darrell Shi
2022-10-10 20:17:05 +00:00
parent 402cb85a6f
commit 312db22a14
5 changed files with 19 additions and 15 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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*/);
}
}

View File

@@ -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