diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java index 1ae3d4f482f40..fb348f483c46f 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java @@ -42,6 +42,8 @@ import android.view.WindowManagerGlobal; import java.io.PrintWriter; +import javax.inject.Inject; + /** * Handles bounds calculation for PIP on Phone and other form factors, it keeps tracking variant * state changes originated from Window Manager and is the source of truth for PiP window bounds. @@ -81,9 +83,10 @@ public class PipBoundsHandler { private boolean mIsShelfShowing; private int mShelfHeight; - public PipBoundsHandler(Context context) { + @Inject + public PipBoundsHandler(Context context, PipSnapAlgorithm pipSnapAlgorithm) { mContext = context; - mSnapAlgorithm = new PipSnapAlgorithm(context); + mSnapAlgorithm = pipSnapAlgorithm; mWindowManager = WindowManagerGlobal.getWindowManagerService(); reloadResources(); // Initialize the aspect ratio to the default aspect ratio. Don't do this in reload diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipSnapAlgorithm.java b/packages/SystemUI/src/com/android/systemui/pip/PipSnapAlgorithm.java index 6b89718acee82..b5d23a5214ef8 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipSnapAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipSnapAlgorithm.java @@ -28,6 +28,8 @@ import android.view.Gravity; import java.io.PrintWriter; import java.util.ArrayList; +import javax.inject.Inject; + /** * Calculates the snap targets and the snap position for the PIP given a position and a velocity. * All bounds are relative to the display top/left. @@ -63,6 +65,7 @@ public class PipSnapAlgorithm { private int mOrientation = Configuration.ORIENTATION_UNDEFINED; + @Inject public PipSnapAlgorithm(Context context) { Resources res = context.getResources(); mContext = context; 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 8ada3c393222b..4b97d134761e6 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java @@ -41,6 +41,7 @@ import com.android.systemui.UiOffloadThread; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.pip.BasePipManager; import com.android.systemui.pip.PipBoundsHandler; +import com.android.systemui.pip.PipSnapAlgorithm; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.system.ActivityManagerWrapper; @@ -205,7 +206,9 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio public PipManager(Context context, BroadcastDispatcher broadcastDispatcher, DisplayController displayController, FloatingContentCoordinator floatingContentCoordinator, - DeviceConfigProxy deviceConfig) { + DeviceConfigProxy deviceConfig, + PipBoundsHandler pipBoundsHandler, + PipSnapAlgorithm pipSnapAlgorithm) { mContext = context; mActivityManager = ActivityManager.getService(); @@ -218,7 +221,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); final IActivityTaskManager activityTaskManager = ActivityTaskManager.getService(); - mPipBoundsHandler = new PipBoundsHandler(context); + mPipBoundsHandler = pipBoundsHandler; mPipTaskOrganizer = new PipTaskOrganizer(mContext, mPipBoundsHandler); mPipTaskOrganizer.registerPipTransitionCallback(this); mInputConsumerController = InputConsumerController.getPipInputConsumer(); @@ -227,7 +230,7 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mInputConsumerController); mTouchHandler = new PipTouchHandler(context, mActivityManager, activityTaskManager, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, - floatingContentCoordinator, deviceConfig); + floatingContentCoordinator, deviceConfig, pipSnapAlgorithm); mAppOpsListener = new PipAppOpsListener(context, mActivityManager, mTouchHandler.getMotionHelper()); displayController.addDisplayChangingController(mRotationController); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java index 3f73d0194cd6b..322f5cb7d5f3d 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java @@ -166,7 +166,8 @@ public class PipTouchHandler { PipBoundsHandler pipBoundsHandler, PipTaskOrganizer pipTaskOrganizer, FloatingContentCoordinator floatingContentCoordinator, - DeviceConfigProxy deviceConfig) { + DeviceConfigProxy deviceConfig, + PipSnapAlgorithm pipSnapAlgorithm) { // Initialize the Pip input consumer mContext = context; mActivityManager = activityManager; @@ -174,7 +175,7 @@ public class PipTouchHandler { mMenuController = menuController; mMenuController.addListener(new PipMenuListener()); mDismissViewController = new PipDismissViewController(context); - mSnapAlgorithm = new PipSnapAlgorithm(mContext); + mSnapAlgorithm = pipSnapAlgorithm; mFlingAnimationUtils = new FlingAnimationUtils(context.getResources().getDisplayMetrics(), 2.5f); mGesture = new DefaultPipTouchGesture(); diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java index cb1a218af954f..003e2721b93e9 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java @@ -228,13 +228,14 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio } @Inject - public PipManager(Context context, BroadcastDispatcher broadcastDispatcher) { + public PipManager(Context context, BroadcastDispatcher broadcastDispatcher, + PipBoundsHandler pipBoundsHandler) { if (mInitialized) { return; } mInitialized = true; mContext = context; - mPipBoundsHandler = new PipBoundsHandler(context); + mPipBoundsHandler = pipBoundsHandler; mPipTaskOrganizer = new PipTaskOrganizer(mContext, mPipBoundsHandler); mPipTaskOrganizer.registerPipTransitionCallback(this); mActivityTaskManager = ActivityTaskManager.getService(); 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 3b00684786b82..b12db2b44e3db 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/pip/PipBoundsHandlerTest.java @@ -58,7 +58,7 @@ public class PipBoundsHandlerTest extends SysuiTestCase { @Before public void setUp() throws Exception { initializeMockResources(); - mPipBoundsHandler = new PipBoundsHandler(mContext); + mPipBoundsHandler = new PipBoundsHandler(mContext, new PipSnapAlgorithm(mContext)); mPipBoundsHandler.onDisplayInfoChanged(mDefaultDisplayInfo); }