diff options
-rw-r--r-- | core/java/android/service/dreams/DreamService.java | 49 |
1 files changed, 40 insertions, 9 deletions
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index df3b8baa40c8..50a646284a8e 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -1211,13 +1211,23 @@ public class DreamService extends Service implements Window.Callback { mOverlayCallback = new IDreamOverlayCallback.Stub() { @Override public void onExitRequested() { - // Simply finish dream when exit is requested. - mHandler.post(() -> finishInternal()); + final long token = Binder.clearCallingIdentity(); + try { + // Simply finish dream when exit is requested. + mHandler.post(() -> finishInternal()); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override public void onRedirectWake(boolean redirect) { - mRedirectWake = redirect; + final long token = Binder.clearCallingIdentity(); + try { + mRedirectWake = redirect; + } finally { + Binder.restoreCallingIdentity(token); + } } }; @@ -1883,25 +1893,46 @@ public class DreamService extends Service implements Window.Callback { @Override public void attach(final IBinder dreamToken, final boolean canDoze, final boolean isPreviewMode, IRemoteCallback started) { - post(dreamService -> dreamService.attach(dreamToken, canDoze, isPreviewMode, started)); + final long token = Binder.clearCallingIdentity(); + try { + post(dreamService -> dreamService.attach(dreamToken, canDoze, isPreviewMode, + started)); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override public void detach() { - post(DreamService::detach); + final long token = Binder.clearCallingIdentity(); + try { + post(DreamService::detach); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override public void wakeUp() { - post(dreamService -> dreamService.wakeUp(true /*fromSystem*/)); + final long token = Binder.clearCallingIdentity(); + try { + post(dreamService -> dreamService.wakeUp(true /*fromSystem*/)); + } finally { + Binder.restoreCallingIdentity(token); + } } @Override public void comeToFront() { - if (!dreamHandlesBeingObscured()) { - return; + final long token = Binder.clearCallingIdentity(); + try { + if (!dreamHandlesBeingObscured()) { + return; + } + post(DreamService::comeToFront); + } finally { + Binder.restoreCallingIdentity(token); } - post(DreamService::comeToFront); } } |