Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 265b7d33 authored by Iver Hsieh's avatar Iver Hsieh Committed by Ben Lin
Browse files

Make PipMotionHelper injectable

This change allows PipMotionHelper
and PipSnapAlgorithm can be injected
for customization.

Bug: 181956433
Test: manual test - test snapping PIP windows
      atest PipBoundsAlgorithmTest PipTaskOrganizerTest PipTouchHandlerTest
Change-Id: Ic6e54f178b40ae21f8e198d8953db619b3ac9ec4
parent 3076233c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -57,9 +57,10 @@ public class PipBoundsAlgorithm {
    private int mOverridableMinSize;
    private Point mScreenEdgeInsets;

    public PipBoundsAlgorithm(Context context, @NonNull PipBoundsState pipBoundsState) {
    public PipBoundsAlgorithm(Context context, @NonNull PipBoundsState pipBoundsState,
            @NonNull PipSnapAlgorithm pipSnapAlgorithm) {
        mPipBoundsState = pipBoundsState;
        mSnapAlgorithm = new PipSnapAlgorithm();
        mSnapAlgorithm = pipSnapAlgorithm;
        reloadResources(context);
        // Initialize the aspect ratio to the default aspect ratio.  Don't do this in reload
        // resources as it would clobber mAspectRatio when entering PiP from fullscreen which
+2 −5
Original line number Diff line number Diff line
@@ -53,7 +53,6 @@ import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipBoundsAlgorithm;
import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipTaskOrganizer;
import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip.PipUiEventLogger;

import java.io.PrintWriter;
@@ -158,7 +157,7 @@ public class PipTouchHandler {
            PipBoundsAlgorithm pipBoundsAlgorithm,
            @NonNull PipBoundsState pipBoundsState,
            PipTaskOrganizer pipTaskOrganizer,
            PipTransitionController pipTransitionController,
            PipMotionHelper pipMotionHelper,
            FloatingContentCoordinator floatingContentCoordinator,
            PipUiEventLogger pipUiEventLogger,
            ShellExecutor mainExecutor) {
@@ -173,9 +172,7 @@ public class PipTouchHandler {
        mFloatingContentCoordinator = floatingContentCoordinator;
        mMenuController.addListener(new PipMenuListener());
        mGesture = new DefaultPipTouchGesture();
        mMotionHelper = new PipMotionHelper(mContext, pipBoundsState, pipTaskOrganizer,
                mMenuController, mPipBoundsAlgorithm.getSnapAlgorithm(), pipTransitionController,
                floatingContentCoordinator);
        mMotionHelper = pipMotionHelper;
        mPipDismissTargetHandler = new PipDismissTargetHandler(context, pipUiEventLogger,
                mMotionHelper, mainExecutor);
        mPipResizeGestureHandler =
+3 −2
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableResources;
import android.util.Size;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.Gravity;

@@ -58,11 +57,13 @@ public class PipBoundsAlgorithmTest extends ShellTestCase {
    private DisplayInfo mDefaultDisplayInfo;
    private PipBoundsState mPipBoundsState;


    @Before
    public void setUp() throws Exception {
        initializeMockResources();
        mPipBoundsState = new PipBoundsState(mContext);
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState);
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState,
                new PipSnapAlgorithm());

        mPipBoundsState.setDisplayLayout(
                new DisplayLayout(mDefaultDisplayInfo, mContext.getResources(), true, true));
+2 −1
Original line number Diff line number Diff line
@@ -88,7 +88,8 @@ public class PipTaskOrganizerTest extends ShellTestCase {
        mComponent1 = new ComponentName(mContext, "component1");
        mComponent2 = new ComponentName(mContext, "component2");
        mPipBoundsState = new PipBoundsState(mContext);
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState);
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState,
                new PipSnapAlgorithm());
        mMainExecutor = new TestShellExecutor();
        mSpiedPipTaskOrganizer = spy(new PipTaskOrganizer(mContext,
                mMockSyncTransactionQueue, mPipBoundsState,
+5 −3
Original line number Diff line number Diff line
@@ -99,12 +99,14 @@ public class PipTouchHandlerTest extends ShellTestCase {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mPipBoundsState = new PipBoundsState(mContext);
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState);
        mPipSnapAlgorithm = mPipBoundsAlgorithm.getSnapAlgorithm();
        mPipSnapAlgorithm = new PipSnapAlgorithm();
        mPipBoundsAlgorithm = new PipBoundsAlgorithm(mContext, mPipBoundsState, mPipSnapAlgorithm);
        PipMotionHelper pipMotionHelper = new PipMotionHelper(mContext, mPipBoundsState,
                mPipTaskOrganizer, mPhonePipMenuController, mPipSnapAlgorithm,
                mMockPipTransitionController, mFloatingContentCoordinator);
        mPipTouchHandler = new PipTouchHandler(mContext, mPhonePipMenuController,
                mPipBoundsAlgorithm, mPipBoundsState, mPipTaskOrganizer,
                mMockPipTransitionController, mFloatingContentCoordinator, mPipUiEventLogger,
                pipMotionHelper, mFloatingContentCoordinator, mPipUiEventLogger,
                mMainExecutor);
        mPipTouchHandler.init();
        mMotionHelper = Mockito.spy(mPipTouchHandler.getMotionHelper());
Loading