From fe7c92ec40108db3d5e6bcd9a4ddf3b53e0f0292 Mon Sep 17 00:00:00 2001 From: "jorgegil@google.com" Date: Fri, 24 Sep 2021 15:56:49 -0700 Subject: [PATCH] Do not change launch mode to FF is FS explicitly requested When a non-resizable activity is launched in a freeform display, it is launched in freeform windowing mode when its orientation is different than that of its parent. This always happens even if the activity requested to be launched in fullscreen mode explicitly. This CL changes the launch parameters so that the windowing mode is only changed to freeform if it was not explicitly requested that it be fullscreen. Bug: 200058556 Test: atest CompatChangeTests Change-Id: I0ad673a6a93c8e1cb1787d12feb49124f7d9c171 --- .../com/android/server/wm/TaskLaunchParamsModifier.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index f43cd7a80ede6..9cc24e2b2120e 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -261,7 +261,8 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { if (launchMode == WINDOWING_MODE_PINNED) { if (DEBUG) appendLog("picture-in-picture"); } else if (!root.isResizeable()) { - if (shouldLaunchUnresizableAppInFreeform(root, suggestedDisplayArea)) { + if (shouldLaunchUnresizableAppInFreeform(root, suggestedDisplayArea, + options.getLaunchWindowingMode())) { launchMode = WINDOWING_MODE_FREEFORM; if (outParams.mBounds.isEmpty()) { getTaskBounds(root, suggestedDisplayArea, layout, launchMode, @@ -617,7 +618,11 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { } private boolean shouldLaunchUnresizableAppInFreeform(ActivityRecord activity, - TaskDisplayArea displayArea) { + TaskDisplayArea displayArea, int launchWindowingMode) { + if (launchWindowingMode == WINDOWING_MODE_FULLSCREEN) { + // Do not launch the activity in freeform if it explicitly requested fullscreen mode. + return false; + } if (!activity.supportsFreeformInDisplayArea(displayArea) || activity.isResizeable()) { return false; }