diff options
| author | 2022-10-18 15:33:16 +0200 | |
|---|---|---|
| committer | 2022-10-18 17:11:45 +0200 | |
| commit | d8e0c0d64c81c44e78494d6db47da3c57f41b64c (patch) | |
| tree | a9ee80252574b92f70d351c781e25bea4d7c35db | |
| parent | f3c69c3a6bacb3d63c9c05061822d4c760581521 (diff) | |
Force remove DreamActivity from system server
Bug: 243385408
Test: comment out the finishAndRemoveTask lines from DreamService and
      run `atest DreamManagerServiceTests#testForceStopStubbornDream`
      (this test fails without this CL)
Test: atest DreamServiceTest
Test: atest DreamManagerServiceTests
Test: atest SystemDreamTest
Change-Id: I7f3c25ef63ea0a01ed8b466ef2be2658b60c623b
| -rw-r--r-- | services/core/java/com/android/server/dreams/DreamController.java | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/services/core/java/com/android/server/dreams/DreamController.java b/services/core/java/com/android/server/dreams/DreamController.java index b8af1bfcc254..819b719dd22e 100644 --- a/services/core/java/com/android/server/dreams/DreamController.java +++ b/services/core/java/com/android/server/dreams/DreamController.java @@ -16,6 +16,9 @@  package com.android.server.dreams; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; + +import android.app.ActivityTaskManager;  import android.content.ComponentName;  import android.content.Context;  import android.content.Intent; @@ -34,8 +37,6 @@ import android.os.UserHandle;  import android.service.dreams.DreamService;  import android.service.dreams.IDreamService;  import android.util.Slog; -import android.view.IWindowManager; -import android.view.WindowManagerGlobal;  import com.android.internal.logging.MetricsLogger;  import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -60,7 +61,7 @@ final class DreamController {      private final Context mContext;      private final Handler mHandler;      private final Listener mListener; -    private final IWindowManager mIWindowManager; +    private final ActivityTaskManager mActivityTaskManager;      private long mDreamStartTime;      private String mSavedStopReason; @@ -93,7 +94,7 @@ final class DreamController {          mContext = context;          mHandler = handler;          mListener = listener; -        mIWindowManager = WindowManagerGlobal.getWindowManagerService(); +        mActivityTaskManager = mContext.getSystemService(ActivityTaskManager.class);          mCloseNotificationShadeIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);          mCloseNotificationShadeIntent.putExtra("reason", "dream");      } @@ -229,6 +230,8 @@ final class DreamController {              }              oldDream.releaseWakeLockIfNeeded(); +            mActivityTaskManager.removeRootTasksWithActivityTypes(new int[] {ACTIVITY_TYPE_DREAM}); +              mHandler.post(() -> mListener.onDreamStopped(oldDream.mToken));          } finally {              Trace.traceEnd(Trace.TRACE_TAG_POWER); |