diff options
| author | 2022-08-17 18:51:28 +0000 | |
|---|---|---|
| committer | 2022-08-17 18:51:28 +0000 | |
| commit | 3448c2fe1cbb984689402a93ab3bc86570cc9abb (patch) | |
| tree | ce810dc0551bb3278fe8abe37757395d0969b931 | |
| parent | a53fd2a5cd4e6bc9f526403342f1aef18c3002e9 (diff) | |
| parent | a652dac675fa49ed5c87e4f0598a2a9d559d504b (diff) | |
Merge "Add a method in IDreamManager to check if dreaming OR in dream preview" into tm-qpr-dev
| -rw-r--r-- | core/java/android/service/dreams/IDreamManager.aidl | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/dreams/DreamManagerService.java | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/service/dreams/IDreamManager.aidl b/core/java/android/service/dreams/IDreamManager.aidl index 3e0deeb556e9..53ae6576ef95 100644 --- a/core/java/android/service/dreams/IDreamManager.aidl +++ b/core/java/android/service/dreams/IDreamManager.aidl @@ -35,6 +35,8 @@ interface IDreamManager { void testDream(int userId, in ComponentName componentName); @UnsupportedAppUsage boolean isDreaming(); + @UnsupportedAppUsage + boolean isDreamingOrInPreview(); void finishSelf(in IBinder token, boolean immediate); void startDozing(in IBinder token, int screenState, int screenBrightness); void stopDozing(in IBinder token); diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index 7b60345caf87..4e0489a5c4bc 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -218,6 +218,7 @@ public final class DreamManagerService extends SystemService { }, pw, "", 200); } + /** Whether a real dream is occurring. */ private boolean isDreamingInternal() { synchronized (mLock) { return mCurrentDreamToken != null && !mCurrentDreamIsPreview @@ -225,6 +226,13 @@ public final class DreamManagerService extends SystemService { } } + /** Whether a real dream, or a dream preview is occurring. */ + private boolean isDreamingOrInPreviewInternal() { + synchronized (mLock) { + return mCurrentDreamToken != null && !mCurrentDreamIsWaking; + } + } + protected void requestStartDreamFromShell() { requestDreamInternal(); } @@ -695,6 +703,19 @@ public final class DreamManagerService extends SystemService { } @Override // Binder call + public boolean isDreamingOrInPreview() { + checkPermission(android.Manifest.permission.READ_DREAM_STATE); + + final long ident = Binder.clearCallingIdentity(); + try { + return isDreamingOrInPreviewInternal(); + } finally { + Binder.restoreCallingIdentity(ident); + } + } + + + @Override // Binder call public void dream() { checkPermission(android.Manifest.permission.WRITE_DREAM_STATE); |