diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayChangeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java similarity index 99% rename from packages/SystemUI/src/com/android/systemui/wm/DisplayChangeController.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java index 6eba9acbab4eb..3263f79888d6a 100644 --- a/packages/SystemUI/src/com/android/systemui/wm/DisplayChangeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import android.os.Handler; import android.os.RemoteException; diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java similarity index 96% rename from packages/SystemUI/src/com/android/systemui/wm/DisplayController.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java index 083c2439aa877..418973204add1 100644 --- a/packages/SystemUI/src/com/android/systemui/wm/DisplayController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import android.annotation.Nullable; import android.content.Context; @@ -28,21 +28,16 @@ import android.view.Display; import android.view.IDisplayWindowListener; import android.view.IWindowManager; -import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.wm.DisplayChangeController.OnDisplayChangingListener; +import com.android.wm.shell.common.DisplayChangeController.OnDisplayChangingListener; import java.util.ArrayList; -import javax.inject.Inject; -import javax.inject.Singleton; - /** * This module deals with display rotations coming from WM. When WM starts a rotation: after it has * frozen the screen, it will call into this class. This will then call all registered local * controllers and give them a chance to queue up task changes to be applied synchronously with that * rotation. */ -@Singleton public class DisplayController { private static final String TAG = "DisplayController"; @@ -55,7 +50,7 @@ public class DisplayController { private final ArrayList mDisplayChangedListeners = new ArrayList<>(); /** - * Get's a display by id from DisplayManager. + * Gets a display by id from DisplayManager. */ public Display getDisplay(int displayId) { final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); @@ -169,10 +164,9 @@ public class DisplayController { } }; - @Inject - public DisplayController(Context context, @Main Handler mainHandler, + public DisplayController(Context context, Handler handler, IWindowManager wmService) { - mHandler = mainHandler; + mHandler = handler; mContext = context; mWmService = wmService; mChangeController = new DisplayChangeController(mHandler, mWmService); diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java similarity index 95% rename from packages/SystemUI/src/com/android/systemui/wm/DisplayImeController.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index 89f469a438a96..cb64796196ede 100644 --- a/packages/SystemUI/src/com/android/systemui/wm/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -40,18 +40,12 @@ import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; import com.android.internal.view.IInputMethodManager; -import com.android.systemui.TransactionPool; -import com.android.systemui.dagger.qualifiers.Main; import java.util.ArrayList; -import javax.inject.Inject; -import javax.inject.Singleton; - /** * Manages IME control at the display-level. This occurs when IME comes up in multi-window mode. */ -@Singleton public class DisplayImeController implements DisplayController.OnDisplaysChangedListener { private static final String TAG = "DisplayImeController"; @@ -66,18 +60,17 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged private static final int DIRECTION_HIDE = 2; private static final int FLOATING_IME_BOTTOM_INSET = -80; - SystemWindows mSystemWindows; - final Handler mHandler; + protected final SystemWindows mSystemWindows; + protected final Handler mHandler; final TransactionPool mTransactionPool; final SparseArray mImePerDisplay = new SparseArray<>(); final ArrayList mPositionProcessors = new ArrayList<>(); - @Inject public DisplayImeController(SystemWindows syswin, DisplayController displayController, - @Main Handler mainHandler, TransactionPool transactionPool) { - mHandler = mainHandler; + Handler handler, TransactionPool transactionPool) { + mHandler = handler; mSystemWindows = syswin; mTransactionPool = transactionPool; displayController.addDisplayWindowListener(this); @@ -305,8 +298,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged // pretend the ime has some size just below the screen. mImeFrame.set(newFrame); final int floatingInset = (int) ( - mSystemWindows.mDisplayController.getDisplayLayout(mDisplayId).density() - * FLOATING_IME_BOTTOM_INSET); + mSystemWindows.mDisplayController.getDisplayLayout(mDisplayId) + .density() * FLOATING_IME_BOTTOM_INSET); mImeFrame.bottom -= floatingInset; } else if (newFrame.height() != 0) { // Don't set a new frame if it's empty and hiding -- this maintains continuity @@ -364,6 +357,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged mAnimation.setInterpolator(INTERPOLATOR); mAnimation.addListener(new AnimatorListenerAdapter() { private boolean mCancelled = false; + @Override public void onAnimationStart(Animator animation) { SurfaceControl.Transaction t = mTransactionPool.acquire(); @@ -386,10 +380,12 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged t.apply(); mTransactionPool.release(t); } + @Override public void onAnimationCancel(Animator animation) { mCancelled = true; } + @Override public void onAnimationEnd(Animator animation) { if (DEBUG) Slog.d(TAG, "onAnimationEnd " + mCancelled); @@ -449,18 +445,19 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged int IME_ANIMATION_NO_ALPHA = 1; /** @hide */ - @IntDef(prefix = { "IME_ANIMATION_" }, value = { + @IntDef(prefix = {"IME_ANIMATION_"}, value = { IME_ANIMATION_NO_ALPHA, }) - @interface ImeAnimationFlags {} + @interface ImeAnimationFlags { + } /** * Called when the IME position is starting to animate. * - * @param hiddenTop The y position of the top of the IME surface when it is hidden. - * @param shownTop The y position of the top of the IME surface when it is shown. - * @param showing {@code true} when we are animating from hidden to shown, {@code false} - * when animating from shown to hidden. + * @param hiddenTop The y position of the top of the IME surface when it is hidden. + * @param shownTop The y position of the top of the IME surface when it is shown. + * @param showing {@code true} when we are animating from hidden to shown, {@code false} + * when animating from shown to hidden. * @param isFloating {@code true} when the ime is a floating ime (doesn't inset). * @return flags that may alter how ime itself is animated (eg. no-alpha). */ @@ -476,8 +473,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged * * @param imeTop The current y position of the top of the IME surface. */ - default void onImePositionChanged(int displayId, int imeTop, - SurfaceControl.Transaction t) {} + default void onImePositionChanged(int displayId, int imeTop, SurfaceControl.Transaction t) { + } /** * Called when the IME position is done animating. @@ -485,7 +482,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged * @param cancel {@code true} if this was cancelled. This implies another start is coming. */ default void onImeEndPositioning(int displayId, boolean cancel, - SurfaceControl.Transaction t) {} + SurfaceControl.Transaction t) { + } } public IInputMethodManager getImms() { diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java similarity index 98% rename from packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java index a341f3050ea6e..3181dbf74ace3 100644 --- a/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; @@ -52,7 +52,7 @@ import java.lang.annotation.RetentionPolicy; /** * Contains information about the layout-properties of a display. This refers to internal layout - * like insets/cutout/rotation. In general, this can be thought of as the System-UI analog to + * like insets/cutout/rotation. In general, this can be thought of as the shell analog to * DisplayPolicy. */ public class DisplayLayout { @@ -345,9 +345,9 @@ public class DisplayLayout { /** Retrieve the statusbar height from resources. */ static int getStatusBarHeight(boolean landscape, Resources res) { return landscape ? res.getDimensionPixelSize( - com.android.internal.R.dimen.status_bar_height_landscape) - : res.getDimensionPixelSize( - com.android.internal.R.dimen.status_bar_height_portrait); + com.android.internal.R.dimen.status_bar_height_landscape) + : res.getDimensionPixelSize( + com.android.internal.R.dimen.status_bar_height_portrait); } /** Calculate the DisplayCutout for a particular display size/rotation. */ diff --git a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java similarity index 97% rename from packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java index 21f67aef56044..34018e8cb3056 100644 --- a/packages/SystemUI/src/com/android/systemui/wm/SystemWindows.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; @@ -52,23 +52,19 @@ import com.android.internal.os.IResultReceiver; import java.util.HashMap; -import javax.inject.Inject; -import javax.inject.Singleton; - /** - * Represents the "windowing" layer of the System-UI. This layer allows system-ui components to - * place and manipulate windows without talking to WindowManager. + * Represents the "windowing" layer of the WM Shell. This layer allows shell components to place and + * manipulate windows without talking to WindowManager. */ -@Singleton public class SystemWindows { private static final String TAG = "SystemWindows"; private final SparseArray mPerDisplay = new SparseArray<>(); final HashMap mViewRoots = new HashMap<>(); - Context mContext; + public Context mContext; + public IWindowManager mWmService; IWindowSession mSession; DisplayController mDisplayController; - IWindowManager mWmService; private final DisplayController.OnDisplaysChangedListener mDisplayListener = new DisplayController.OnDisplaysChangedListener() { @@ -88,7 +84,6 @@ public class SystemWindows { public void onDisplayRemoved(int displayId) { } }; - @Inject public SystemWindows(Context context, DisplayController displayController, IWindowManager wmService) { mContext = context; @@ -172,7 +167,7 @@ public class SystemWindows { /** * Get the IWindow token for a specific root. * - * @param windowType A window type from {@link android.view.WindowManager}. + * @param windowType A window type from {@link WindowManager}. */ IWindow getWindow(int displayId, int windowType) { PerDisplay pd = mPerDisplay.get(displayId); diff --git a/packages/SystemUI/src/com/android/systemui/TransactionPool.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TransactionPool.java similarity index 91% rename from packages/SystemUI/src/com/android/systemui/TransactionPool.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/TransactionPool.java index 801cf8a7523b4..4c34566b0d982 100644 --- a/packages/SystemUI/src/com/android/systemui/TransactionPool.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/TransactionPool.java @@ -14,24 +14,19 @@ * limitations under the License. */ -package com.android.systemui; +package com.android.wm.shell.common; import android.util.Pools; import android.view.SurfaceControl; -import javax.inject.Inject; -import javax.inject.Singleton; - /** * Provides a synchronized pool of {@link SurfaceControl.Transaction}s to minimize allocations. */ -@Singleton public class TransactionPool { private final Pools.SynchronizedPool mTransactionPool = new Pools.SynchronizedPool<>(4); - @Inject - TransactionPool() { + public TransactionPool() { } /** Gets a transaction from the pool. */ diff --git a/libs/WindowManager/Shell/tests/Android.bp b/libs/WindowManager/Shell/tests/Android.bp index 78fa45ebdf949..9868879cebb90 100644 --- a/libs/WindowManager/Shell/tests/Android.bp +++ b/libs/WindowManager/Shell/tests/Android.bp @@ -36,9 +36,6 @@ android_test { "libstaticjvmtiagent", ], - sdk_version: "current", - platform_apis: true, - optimize: { enabled: false, }, diff --git a/libs/WindowManager/Shell/tests/src/com/android/wm/shell/tests/WindowManagerShellTest.java b/libs/WindowManager/Shell/tests/src/com/android/wm/shell/WindowManagerShellTest.java similarity index 87% rename from libs/WindowManager/Shell/tests/src/com/android/wm/shell/tests/WindowManagerShellTest.java rename to libs/WindowManager/Shell/tests/src/com/android/wm/shell/WindowManagerShellTest.java index 376875b143a12..f1ead3c8a4419 100644 --- a/libs/WindowManager/Shell/tests/src/com/android/wm/shell/tests/WindowManagerShellTest.java +++ b/libs/WindowManager/Shell/tests/src/com/android/wm/shell/WindowManagerShellTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,11 @@ * limitations under the License. */ -package com.android.wm.shell.tests; +package com.android.wm.shell; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; -import com.android.wm.shell.WindowManagerShell; - import org.junit.Test; import org.junit.runner.RunWith; diff --git a/packages/SystemUI/tests/src/com/android/systemui/wm/DisplayLayoutTest.java b/libs/WindowManager/Shell/tests/src/com/android/wm/shell/common/DisplayLayoutTest.java similarity index 97% rename from packages/SystemUI/tests/src/com/android/systemui/wm/DisplayLayoutTest.java rename to libs/WindowManager/Shell/tests/src/com/android/wm/shell/common/DisplayLayoutTest.java index 9596a73eaf3e8..2b5b77e49e3ab 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wm/DisplayLayoutTest.java +++ b/libs/WindowManager/Shell/tests/src/com/android/wm/shell/common/DisplayLayoutTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.wm; +package com.android.wm.shell.common; import static android.content.res.Configuration.UI_MODE_TYPE_NORMAL; import static android.view.Surface.ROTATION_0; @@ -35,12 +35,11 @@ import android.view.DisplayInfo; import androidx.test.filters.SmallTest; import com.android.internal.R; -import com.android.systemui.SysuiTestCase; import org.junit.Test; @SmallTest -public class DisplayLayoutTest extends SysuiTestCase { +public class DisplayLayoutTest { @Test public void testInsets() { diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index 4967426808936..e5fbbd87a91b5 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -22,6 +22,7 @@ import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.content.Context; import android.os.Handler; import android.os.PowerManager; +import android.view.IWindowManager; import com.android.keyguard.KeyguardViewController; import com.android.systemui.broadcast.BroadcastDispatcher; @@ -67,8 +68,11 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.volume.VolumeDialogComponent; -import com.android.systemui.wm.DisplayImeController; import com.android.systemui.wm.DisplaySystemBarsController; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; import javax.inject.Named; import javax.inject.Singleton; @@ -99,10 +103,6 @@ public abstract class CarSystemUIModule { groupManager, configurationController); } - @Binds - abstract DisplayImeController bindDisplayImeController( - DisplaySystemBarsController displaySystemBarsController); - @Singleton @Provides @Named(LEAK_REPORT_EMAIL_NAME) @@ -117,6 +117,31 @@ public abstract class CarSystemUIModule { return new Recents(context, recentsImplementation, commandQueue); } + @Singleton + @Provides + static TransactionPool provideTransactionPool() { + return new TransactionPool(); + } + + @Singleton + @Provides + static DisplayController providerDisplayController(Context context, @Main Handler handler, + IWindowManager wmService) { + return new DisplayController(context, handler, wmService); + } + + @Singleton + @Provides + static SystemWindows provideSystemWindows(Context context, DisplayController displayController, + IWindowManager wmService) { + return new SystemWindows(context, displayController, wmService); + } + + @Singleton + @Binds + abstract DisplayImeController bindDisplayImeController( + DisplaySystemBarsController displaySystemBarsController); + @Binds abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone); diff --git a/packages/CarSystemUI/src/com/android/systemui/wm/DisplaySystemBarsController.java b/packages/CarSystemUI/src/com/android/systemui/wm/DisplaySystemBarsController.java index a831464e7987a..63f8c72b354a3 100644 --- a/packages/CarSystemUI/src/com/android/systemui/wm/DisplaySystemBarsController.java +++ b/packages/CarSystemUI/src/com/android/systemui/wm/DisplaySystemBarsController.java @@ -29,8 +29,11 @@ import android.view.WindowInsets; import androidx.annotation.VisibleForTesting; -import com.android.systemui.TransactionPool; import com.android.systemui.dagger.qualifiers.Main; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; import javax.inject.Inject; import javax.inject.Singleton; diff --git a/packages/CarSystemUI/tests/src/com/android/systemui/wm/DisplaySystemBarsControllerTest.java b/packages/CarSystemUI/tests/src/com/android/systemui/wm/DisplaySystemBarsControllerTest.java index 29cc8eec4bc3e..0f28d38f78787 100644 --- a/packages/CarSystemUI/tests/src/com/android/systemui/wm/DisplaySystemBarsControllerTest.java +++ b/packages/CarSystemUI/tests/src/com/android/systemui/wm/DisplaySystemBarsControllerTest.java @@ -33,7 +33,9 @@ import android.view.IWindowManager; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.TransactionPool; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; import org.junit.Before; import org.junit.Test; diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index dfc47587b91c4..2fbd9ba058179 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -45,7 +45,7 @@ android_library { "WindowManager-Shell", "SystemUIPluginLib", "SystemUISharedLib", - "SystemUI-statsd", + "SystemUI-statsd", "SettingsLib", "androidx.viewpager2_viewpager2", "androidx.legacy_legacy-support-v4", diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index 02d2b8e4ef0f6..49a2328c5d181 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -122,9 +122,9 @@ import com.android.systemui.util.leak.GarbageMonitor; import com.android.systemui.util.leak.LeakDetector; import com.android.systemui.util.leak.LeakReporter; import com.android.systemui.util.sensors.AsyncSensorManager; -import com.android.systemui.wm.DisplayController; -import com.android.systemui.wm.DisplayImeController; -import com.android.systemui.wm.SystemWindows; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.SystemWindows; import java.util.function.Consumer; diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java index cd0ba290db466..803e56db8ff3d 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java @@ -59,6 +59,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl; import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.wmshell.WindowManagerShellModule; import javax.inject.Named; import javax.inject.Singleton; @@ -71,7 +72,7 @@ import dagger.Provides; * A dagger module for injecting default implementations of components of System UI that may be * overridden by the System UI implementation. */ -@Module(includes = {DividerModule.class, QSModule.class}) +@Module(includes = {DividerModule.class, QSModule.class, WindowManagerShellModule.class}) public abstract class SystemUIDefaultModule { @Singleton diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizer.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizer.java index 16e05f1e3f26a..c0b9258f39fdf 100644 --- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizer.java @@ -27,7 +27,6 @@ import android.graphics.Rect; import android.os.Handler; import android.os.Looper; import android.util.Log; -import android.view.Surface; import android.view.SurfaceControl; import android.window.DisplayAreaInfo; import android.window.DisplayAreaOrganizer; @@ -39,7 +38,7 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.systemui.Dumpable; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java index f995bf9eb2a10..71c5f80203301 100644 --- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java @@ -41,8 +41,8 @@ import androidx.annotation.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.statusbar.phone.NavigationModeController; -import com.android.systemui.wm.DisplayChangeController; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayChangeController; +import com.android.wm.shell.common.DisplayController; import javax.inject.Inject; import javax.inject.Singleton; diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java index 586761b0fc3d8..70a81aaed249a 100644 --- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java @@ -33,8 +33,8 @@ import com.android.systemui.R; import com.android.systemui.model.SysUiState; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; -import com.android.systemui.wm.DisplayChangeController; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayChangeController; +import com.android.wm.shell.common.DisplayController; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java index 665b90e299763..df3aeadaacd67 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java @@ -39,8 +39,8 @@ import android.view.DisplayInfo; import android.view.Gravity; import android.window.WindowContainerTransaction; -import com.android.systemui.wm.DisplayController; -import com.android.systemui.wm.DisplayLayout; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayLayout; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java index 35e56ee879676..312d6d62128f3 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java @@ -58,8 +58,8 @@ import android.window.WindowOrganizer; import com.android.internal.os.SomeArgs; import com.android.systemui.pip.phone.PipUpdateThread; import com.android.systemui.stackdivider.Divider; -import com.android.systemui.wm.DisplayController; import com.android.wm.shell.R; +import com.android.wm.shell.common.DisplayController; import java.io.PrintWriter; import java.util.ArrayList; diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java index 02bf475d5744a..eb73e137234cf 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java @@ -56,9 +56,8 @@ import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.FloatingContentCoordinator; -import com.android.systemui.wm.DisplayChangeController; -import com.android.systemui.wm.DisplayController; -import com.android.systemui.wm.DisplayLayout; +import com.android.wm.shell.common.DisplayChangeController; +import com.android.wm.shell.common.DisplayController; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java index 570a4bb3cd12f..eb7231211ea8f 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java @@ -39,16 +39,16 @@ import android.window.WindowOrganizer; import com.android.internal.policy.DividerSnapAlgorithm; import com.android.systemui.R; import com.android.systemui.SystemUI; -import com.android.systemui.TransactionPool; import com.android.systemui.recents.Recents; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.statusbar.policy.KeyguardStateController; -import com.android.systemui.wm.DisplayChangeController; -import com.android.systemui.wm.DisplayController; -import com.android.systemui.wm.DisplayImeController; -import com.android.systemui.wm.DisplayLayout; -import com.android.systemui.wm.SystemWindows; +import com.android.wm.shell.common.DisplayChangeController; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.DisplayLayout; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java index 5aeca5e07bdde..84ec38744e98d 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerImeController.java @@ -33,8 +33,8 @@ import android.window.WindowOrganizer; import androidx.annotation.Nullable; -import com.android.systemui.TransactionPool; -import com.android.systemui.wm.DisplayImeController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.TransactionPool; class DividerImeController implements DisplayImeController.ImePositionProcessor { private static final String TAG = "DividerImeController"; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java index 3b7f3152ec765..c24431c22d62b 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java @@ -19,13 +19,13 @@ package com.android.systemui.stackdivider; import android.content.Context; import android.os.Handler; -import com.android.systemui.TransactionPool; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.recents.Recents; import com.android.systemui.statusbar.policy.KeyguardStateController; -import com.android.systemui.wm.DisplayController; -import com.android.systemui.wm.DisplayImeController; -import com.android.systemui.wm.SystemWindows; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; import java.util.Optional; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerWindowManager.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerWindowManager.java index 6ea3132ac942f..d869333e11a7f 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerWindowManager.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerWindowManager.java @@ -32,7 +32,7 @@ import android.os.Binder; import android.view.View; import android.view.WindowManager; -import com.android.systemui.wm.SystemWindows; +import com.android.wm.shell.common.SystemWindows; /** * Manages the window parameters of the docked stack divider. diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java index 69095f7538c50..a34e855179531 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java @@ -34,7 +34,7 @@ import android.window.WindowContainerTransaction; import com.android.internal.policy.DividerSnapAlgorithm; import com.android.internal.policy.DockedDividerUtils; -import com.android.systemui.wm.DisplayLayout; +import com.android.wm.shell.common.DisplayLayout; /** * Handles split-screen related internal display layout. In general, this represents the diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/SyncTransactionQueue.java b/packages/SystemUI/src/com/android/systemui/stackdivider/SyncTransactionQueue.java index 1ff404677ea6d..6812f62422a7a 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/SyncTransactionQueue.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/SyncTransactionQueue.java @@ -25,7 +25,7 @@ import android.window.WindowOrganizer; import androidx.annotation.NonNull; -import com.android.systemui.TransactionPool; +import com.android.wm.shell.common.TransactionPool; import java.util.ArrayList; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java b/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java index 410e3dd39a0b2..2b3681281064a 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/WindowManagerProxy.java @@ -40,7 +40,7 @@ import android.window.WindowContainerTransaction; import android.window.WindowOrganizer; import com.android.internal.annotations.GuardedBy; -import com.android.systemui.TransactionPool; +import com.android.wm.shell.common.TransactionPool; import java.util.ArrayList; import java.util.List; diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java new file mode 100644 index 0000000000000..bba5ff5b54ca8 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.wmshell; + +import android.content.Context; +import android.os.Handler; +import android.view.IWindowManager; + +import com.android.systemui.dagger.qualifiers.Main; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayImeController; +import com.android.wm.shell.common.SystemWindows; +import com.android.wm.shell.common.TransactionPool; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Provides dependencies from {@link com.android.wm.shell}. + */ +@Module +// TODO(b/161116823) Clean up dependencies after wm shell migration finished. +public class WindowManagerShellModule { + @Singleton + @Provides + static TransactionPool provideTransactionPool() { + return new TransactionPool(); + } + + @Singleton + @Provides + static DisplayController provideDisplayController(Context context, @Main Handler handler, + IWindowManager wmService) { + return new DisplayController(context, handler, wmService); + } + + @Singleton + @Provides + static SystemWindows provideSystemWindows(Context context, DisplayController displayController, + IWindowManager wmService) { + return new SystemWindows(context, displayController, wmService); + } + + @Singleton + @Provides + static DisplayImeController provideDisplayImeController( + SystemWindows syswin, DisplayController displayController, + @Main Handler mainHandler, TransactionPool transactionPool) { + return new DisplayImeController(syswin, displayController, mainHandler, transactionPool); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizerTest.java b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizerTest.java index 84a261b6e7d29..3231b2852e7c4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedDisplayAreaOrganizerTest.java @@ -41,7 +41,7 @@ import android.window.WindowContainerToken; import androidx.test.filters.SmallTest; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import org.junit.Before; import org.junit.Ignore; diff --git a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedGestureHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedGestureHandlerTest.java index 180c4507bd091..3b284b14c36f4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedGestureHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedGestureHandlerTest.java @@ -33,7 +33,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import com.android.systemui.model.SysUiState; import com.android.systemui.statusbar.phone.NavigationModeController; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import org.junit.Before; import org.junit.Test; diff --git a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedManagerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedManagerImplTest.java index b6b2217837b2d..55bec54eacb8f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedManagerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedManagerImplTest.java @@ -33,7 +33,7 @@ import android.view.Display; import androidx.test.filters.SmallTest; import com.android.systemui.model.SysUiState; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import org.junit.Before; import org.junit.Test; diff --git a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedTouchHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedTouchHandlerTest.java index 80fe0f0950209..3a4ba6a213dc0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedTouchHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/onehanded/OneHandedTouchHandlerTest.java @@ -31,7 +31,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import com.android.systemui.model.SysUiState; import com.android.systemui.statusbar.phone.NavigationModeController; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import org.junit.Before; import org.junit.Test; diff --git a/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java index 70c2bba040a00..e9d2b73182e05 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java @@ -33,7 +33,7 @@ import android.view.Gravity; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.wm.DisplayController; +import com.android.wm.shell.common.DisplayController; import org.junit.Before; import org.junit.Test;