diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index f1670cd792cf8..4459f57a13566 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -27,6 +27,7 @@ import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.logging.UiEventLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.launcher3.icons.IconProvider; +import com.android.wm.shell.RootDisplayAreaOrganizer; import com.android.wm.shell.RootTaskDisplayAreaOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.TaskViewTransitions; @@ -271,11 +272,12 @@ public abstract class WMShellModule { TaskStackListenerImpl taskStackListener, UiEventLogger uiEventLogger, InteractionJankMonitor jankMonitor, + RootDisplayAreaOrganizer rootDisplayAreaOrganizer, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return OneHandedController.create(context, shellInit, shellCommandHandler, shellController, windowManager, displayController, displayLayout, taskStackListener, jankMonitor, - uiEventLogger, mainExecutor, mainHandler); + uiEventLogger, rootDisplayAreaOrganizer, mainExecutor, mainHandler); } // diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java index b310ee2095bff..b5ed509b6935e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java @@ -34,6 +34,7 @@ import android.graphics.Rect; import android.os.Binder; import android.util.Slog; import android.view.ContextThemeWrapper; +import android.view.Display; import android.view.IWindow; import android.view.LayoutInflater; import android.view.SurfaceControl; @@ -47,6 +48,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.wm.shell.R; +import com.android.wm.shell.RootDisplayAreaOrganizer; import com.android.wm.shell.common.DisplayLayout; import java.io.PrintWriter; @@ -67,11 +69,14 @@ public final class BackgroundWindowManager extends WindowlessWindowManager { private SurfaceControl mLeash; private View mBackgroundView; private @OneHandedState.State int mCurrentState; + private RootDisplayAreaOrganizer mRootDisplayAreaOrganizer; - public BackgroundWindowManager(Context context) { + public BackgroundWindowManager(Context context, + RootDisplayAreaOrganizer rootDisplayAreaOrganizer) { super(context.getResources().getConfiguration(), null /* rootSurface */, null /* hostInputToken */); mContext = context; + mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer; mTransactionFactory = SurfaceControl.Transaction::new; } @@ -112,6 +117,7 @@ public final class BackgroundWindowManager extends WindowlessWindowManager { .setOpaque(true) .setName(TAG) .setCallsite("BackgroundWindowManager#attachToParentSurface"); + mRootDisplayAreaOrganizer.attachToDisplayArea(Display.DEFAULT_DISPLAY, builder); mLeash = builder.build(); b.setParent(mLeash); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java index 679d4ca2ac488..ad135d1baa147 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java @@ -47,6 +47,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.logging.UiEventLogger; import com.android.wm.shell.R; +import com.android.wm.shell.RootDisplayAreaOrganizer; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayLayout; @@ -204,12 +205,14 @@ public class OneHandedController implements RemoteCallable, DisplayController displayController, DisplayLayout displayLayout, TaskStackListenerImpl taskStackListener, InteractionJankMonitor jankMonitor, UiEventLogger uiEventLogger, + RootDisplayAreaOrganizer rootDisplayAreaOrganizer, ShellExecutor mainExecutor, Handler mainHandler) { OneHandedSettingsUtil settingsUtil = new OneHandedSettingsUtil(); OneHandedAccessibilityUtil accessibilityUtil = new OneHandedAccessibilityUtil(context); OneHandedTimeoutHandler timeoutHandler = new OneHandedTimeoutHandler(mainExecutor); OneHandedState oneHandedState = new OneHandedState(); - BackgroundWindowManager backgroundWindowManager = new BackgroundWindowManager(context); + BackgroundWindowManager backgroundWindowManager = + new BackgroundWindowManager(context, rootDisplayAreaOrganizer); OneHandedTutorialHandler tutorialHandler = new OneHandedTutorialHandler(context, settingsUtil, windowManager, backgroundWindowManager); OneHandedAnimationController animationController = diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/BackgroundWindowManagerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/BackgroundWindowManagerTest.java index f3f70673b332f..11948dbf96599 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/BackgroundWindowManagerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/BackgroundWindowManagerTest.java @@ -24,6 +24,7 @@ import androidx.test.annotation.UiThreadTest; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; +import com.android.wm.shell.RootDisplayAreaOrganizer; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.common.DisplayLayout; @@ -41,11 +42,13 @@ public class BackgroundWindowManagerTest extends ShellTestCase { private BackgroundWindowManager mBackgroundWindowManager; @Mock private DisplayLayout mMockDisplayLayout; + @Mock + private RootDisplayAreaOrganizer mRootDisplayAreaOrganizer; @Before public void setup() { MockitoAnnotations.initMocks(this); - mBackgroundWindowManager = new BackgroundWindowManager(mContext); + mBackgroundWindowManager = new BackgroundWindowManager(mContext, mRootDisplayAreaOrganizer); mBackgroundWindowManager.onDisplayChanged(mMockDisplayLayout); }