Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8e0c0d6 authored by Galia Peycheva's avatar Galia Peycheva
Browse files

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
parent f3c69c3a
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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);