From e714cb1ab2498a4573fd9eb86f94efcf9dbef152 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Thu, 14 Apr 2022 13:42:48 +0800 Subject: [PATCH] Set the candidate task windowing mode A fullscreen task was unable to be started in to freefrom mode. The behavior was broken after commit bbcd3435. Bug: 229052728 Test: Start a recent task in freefrom Test: atest ActivityStarterTests Test: atest PinnedStackTests#testDisplayMetricsPinUnpin Change-Id: I11bc49983a876da3f903dd2753fd8d2d447e2626 --- .../core/java/com/android/server/wm/ActivityStarter.java | 5 ----- .../core/java/com/android/server/wm/TaskDisplayArea.java | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 75d462131aae7..34c083aa8ac15 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2809,11 +2809,6 @@ class ActivityStarter { } } - if (mPreferredWindowingMode != WINDOWING_MODE_UNDEFINED - && intentTask.getWindowingMode() != mPreferredWindowingMode) { - intentTask.setWindowingMode(mPreferredWindowingMode); - } - // Update the target's launch cookie to those specified in the options if set if (mStartActivity.mLaunchCookie != null) { intentActivity.mLaunchCookie = mStartActivity.mLaunchCookie; diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 7a7bf1f877b93..ad1f12119c4b3 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -977,6 +977,11 @@ final class TaskDisplayArea extends DisplayArea { candidateTask.reparent(this, onTop); } } + // Update windowing mode if necessary, e.g. launch into a different windowing mode. + if (windowingMode != WINDOWING_MODE_UNDEFINED && candidateTask.isRootTask() + && candidateTask.getWindowingMode() != windowingMode) { + candidateTask.setWindowingMode(windowingMode); + } return candidateTask.getRootTask(); } return new Task.Builder(mAtmService)