From f1c1fd27b4072945fa295fdb8f3e18a5614e41a4 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Fri, 2 Oct 2020 13:58:38 -0700 Subject: [PATCH] Added WindowManagerWrapper#setProvidesInsetsTypes Allows launcher to set providesInsetsType on a window Also, cleaned up ctor for ShellTaskOrganizer to reduce duplicate code. Bug: 169054709 Test: builds Change-Id: I9e1f4a27b924013c0b6b17f0a5e10ac3411cbf4e --- core/java/android/window/TaskOrganizer.java | 5 +++-- .../com/android/wm/shell/ShellTaskOrganizer.java | 5 +---- .../com/android/wm/shell/pip/PipTaskOrganizer.java | 2 +- .../shared/system/WindowManagerWrapper.java | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/core/java/android/window/TaskOrganizer.java b/core/java/android/window/TaskOrganizer.java index d8f2bb248fd1d..a7cb642b83f93 100644 --- a/core/java/android/window/TaskOrganizer.java +++ b/core/java/android/window/TaskOrganizer.java @@ -39,13 +39,14 @@ public class TaskOrganizer extends WindowOrganizer { private ITaskOrganizerController mTaskOrganizerController; public TaskOrganizer() { - mTaskOrganizerController = getController(); + this(null); } /** @hide */ @VisibleForTesting public TaskOrganizer(ITaskOrganizerController taskOrganizerController) { - mTaskOrganizerController = taskOrganizerController; + mTaskOrganizerController = taskOrganizerController != null + ? taskOrganizerController : getController(); } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java index 8f496d01c83b1..f6edc073ac4f6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java @@ -66,10 +66,7 @@ public class ShellTaskOrganizer extends TaskOrganizer { public ShellTaskOrganizer(SyncTransactionQueue syncQueue, TransactionPool transactionPool, ShellExecutor mainExecutor, ShellExecutor animExecutor) { - super(); - addListener(new FullscreenTaskListener(syncQueue), WINDOWING_MODE_FULLSCREEN); - mTransitions = new Transitions(this, transactionPool, mainExecutor, animExecutor); - if (Transitions.ENABLE_SHELL_TRANSITIONS) registerTransitionPlayer(mTransitions); + this(null, syncQueue, transactionPool, mainExecutor, animExecutor); } @VisibleForTesting diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index bb501fb050e6c..e236d24334b36 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -88,7 +88,7 @@ import java.util.function.Consumer; * This class is also responsible for general resize/offset PiP operations within SysUI component, * see also {@link PipMotionHelper}. */ -public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganizer.TaskListener, +public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, DisplayController.OnDisplaysChangedListener { private static final String TAG = PipTaskOrganizer.class.getSimpleName(); private static final boolean DEBUG = false; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java index e5f2ad5b75864..5122f6cf31a16 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java @@ -27,6 +27,7 @@ import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.util.Log; +import android.view.InsetsState; import android.view.SurfaceControl; import android.view.WindowManager; import android.view.WindowManagerGlobal; @@ -81,12 +82,25 @@ public class WindowManagerWrapper { WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; public static final int WINDOWING_MODE_FREEFORM = WindowConfiguration.WINDOWING_MODE_FREEFORM; + public static final int ITYPE_EXTRA_NAVIGATION_BAR = InsetsState.ITYPE_EXTRA_NAVIGATION_BAR; + private static final WindowManagerWrapper sInstance = new WindowManagerWrapper(); public static WindowManagerWrapper getInstance() { return sInstance; } + + /** + * Sets {@param providesInsetsTypes} as the inset types provided by {@param params}. + * @param params The window layout params. + * @param providesInsetsTypes The inset types we would like this layout params to provide. + */ + public void setProvidesInsetsTypes(WindowManager.LayoutParams params, + int[] providesInsetsTypes) { + params.providesInsetsTypes = providesInsetsTypes; + } + /** * @return the stable insets for the primary display. */