summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Galia Peycheva <galinap@google.com> 2022-10-18 15:33:16 +0200
committer Galia Peycheva <galinap@google.com> 2022-10-18 17:11:45 +0200
commitd8e0c0d64c81c44e78494d6db47da3c57f41b64c (patch)
treea9ee80252574b92f70d351c781e25bea4d7c35db
parentf3c69c3a6bacb3d63c9c05061822d4c760581521 (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.java11
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);