From 6be9f83cb000402ce3a734d8873f162bb400cd87 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Wed, 8 Jun 2022 17:10:22 -0700 Subject: [PATCH] Fix a bug in maximize buttons in legacy captions The bug was introduced in 939b27cb50696c5e48273c6f953fa8cdd8ec7167 which effectively removed the bounds resolution for fullscreen tasks. Therefore we need to remove the bounds manually. Also hide caption on shell behind the flag. Note we still let WM shell handle freeform resizing so that we don't have to reintroduce an exception for freeform windows to WM core. Bug: 165794636 Test: Maximize buttons in legacy captions work. Test: Caption in WM shell isn't shown when the feature is disabled and shown when it's enabled. Change-Id: I51d15556dabdc6713f31d7515c574dfb0db49b7a --- .../wm/shell/freeform/FreeformTaskListener.java | 2 -- .../wm/shell/windowdecor/WindowDecoration.java | 15 ++++++++++----- .../server/wm/ActivityClientController.java | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java index fb26cb64f0e71..692e6acb540c5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java @@ -106,8 +106,6 @@ public class FreeformTaskListener taskInfo.taskId); state.mTaskInfo = taskInfo; mWindowDecorationViewModel.onTaskInfoChanged(state.mTaskInfo, state.mWindowDecoration); - ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TASK_ORG, "Freeform Task Info Changed: #%d", - taskInfo.taskId); } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java index 00ecdf481343e..0c5022832162a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java @@ -30,6 +30,7 @@ import android.view.LayoutInflater; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.View; +import android.view.ViewRootImpl; import android.view.WindowManager; import android.view.WindowlessWindowManager; import android.window.WindowContainerTransaction; @@ -201,12 +202,16 @@ public class WindowDecoration implement mViewHost.relayout(lp); } - outResult.mRootView.setTaskFocusState(mTaskInfo.isFocused); + if (ViewRootImpl.CAPTION_ON_SHELL) { + outResult.mRootView.setTaskFocusState(mTaskInfo.isFocused); - // Caption insets - mCaptionInsetsRect.set(taskBounds); - mCaptionInsetsRect.bottom = mCaptionInsetsRect.top + captionHeight; - wct.addRectInsetsProvider(mTaskInfo.token, mCaptionInsetsRect, CAPTION_INSETS_TYPES); + // Caption insets + mCaptionInsetsRect.set(taskBounds); + mCaptionInsetsRect.bottom = mCaptionInsetsRect.top + captionHeight; + wct.addRectInsetsProvider(mTaskInfo.token, mCaptionInsetsRect, CAPTION_INSETS_TYPES); + } else { + outResult.mRootView.setVisibility(View.GONE); + } // Task surface itself Point taskPosition = mTaskInfo.positionInParent; diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index f53b51d705574..1ccdaf75821f0 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -949,6 +949,7 @@ class ActivityClientController extends IActivityClientController.Stub { if (rootTask.inFreeformWindowingMode()) { rootTask.setWindowingMode(WINDOWING_MODE_FULLSCREEN); + rootTask.setBounds(null); } else if (!r.supportsFreeform()) { throw new IllegalStateException( "This activity is currently not freeform-enabled");