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

Commit f121693b authored by Hongwei Wang's avatar Hongwei Wang Committed by Android (Google) Code Review
Browse files

Merge "Update PiP movement bounds on TaskBar inset change" into tm-qpr-dev

parents cbccaaa6 f6fda177
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ public class DisplayLayout {

    /**
     * Different from {@link #equals(Object)}, this method compares the basic geometry properties
     * of two {@link DisplayLayout} objects including width, height, rotation, density and cutout.
     * of two {@link DisplayLayout} objects including width, height, rotation, density, cutout and
     * insets.
     * @return {@code true} if the given {@link DisplayLayout} is identical geometry wise.
     */
    public boolean isSameGeometry(@NonNull DisplayLayout other) {
@@ -104,7 +105,8 @@ public class DisplayLayout {
                && mHeight == other.mHeight
                && mRotation == other.mRotation
                && mDensityDpi == other.mDensityDpi
                && Objects.equals(mCutout, other.mCutout);
                && Objects.equals(mCutout, other.mCutout)
                && Objects.equals(mStableInsets, other.mStableInsets);
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ public abstract class WMShellModule {
            WindowManagerShellWrapper windowManagerShellWrapper,
            TaskStackListenerImpl taskStackListener,
            PipParamsChangedForwarder pipParamsChangedForwarder,
            DisplayInsetsController displayInsetsController,
            Optional<OneHandedController> oneHandedController,
            @ShellMainThread ShellExecutor mainExecutor) {
        return Optional.ofNullable(PipController.create(
@@ -341,7 +342,7 @@ public abstract class WMShellModule {
                pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController,
                pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController,
                windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder,
                oneHandedController, mainExecutor));
                displayInsetsController, oneHandedController, mainExecutor));
    }

    @WMSingleton
+17 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.os.UserManager;
import android.util.Pair;
import android.util.Size;
import android.view.DisplayInfo;
import android.view.InsetsState;
import android.view.SurfaceControl;
import android.view.WindowManagerGlobal;
import android.window.WindowContainerTransaction;
@@ -64,6 +65,7 @@ import com.android.wm.shell.R;
import com.android.wm.shell.WindowManagerShellWrapper;
import com.android.wm.shell.common.DisplayChangeController;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayInsetsController;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.RemoteCallable;
import com.android.wm.shell.common.ShellExecutor;
@@ -135,6 +137,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
    private PipTransitionController mPipTransitionController;
    private TaskStackListenerImpl mTaskStackListener;
    private PipParamsChangedForwarder mPipParamsChangedForwarder;
    private DisplayInsetsController mDisplayInsetsController;
    private Optional<OneHandedController> mOneHandedController;
    private final ShellCommandHandler mShellCommandHandler;
    private final ShellController mShellController;
@@ -338,6 +341,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
            WindowManagerShellWrapper windowManagerShellWrapper,
            TaskStackListenerImpl taskStackListener,
            PipParamsChangedForwarder pipParamsChangedForwarder,
            DisplayInsetsController displayInsetsController,
            Optional<OneHandedController> oneHandedController,
            ShellExecutor mainExecutor) {
        if (!context.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE)) {
@@ -351,7 +355,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
                pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController,
                pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController,
                windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder,
                oneHandedController, mainExecutor)
                displayInsetsController, oneHandedController, mainExecutor)
                .mImpl;
    }

@@ -374,6 +378,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
            WindowManagerShellWrapper windowManagerShellWrapper,
            TaskStackListenerImpl taskStackListener,
            PipParamsChangedForwarder pipParamsChangedForwarder,
            DisplayInsetsController displayInsetsController,
            Optional<OneHandedController> oneHandedController,
            ShellExecutor mainExecutor
    ) {
@@ -407,6 +412,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
        mEnterAnimationDuration = mContext.getResources()
                .getInteger(R.integer.config_pipEnterAnimationDuration);
        mPipParamsChangedForwarder = pipParamsChangedForwarder;
        mDisplayInsetsController = displayInsetsController;

        shellInit.addInitCallback(this::onInit, this);
    }
@@ -549,6 +555,16 @@ public class PipController implements PipTransitionController.PipTransitionCallb
                    }
                });

        mDisplayInsetsController.addInsetsChangedListener(mPipBoundsState.getDisplayId(),
                new DisplayInsetsController.OnInsetsChangedListener() {
                    @Override
                    public void insetsChanged(InsetsState insetsState) {
                        onDisplayChanged(
                                mDisplayController.getDisplayLayout(mPipBoundsState.getDisplayId()),
                                false /* saveRestoreSnapFraction */);
                    }
                });

        mOneHandedController.ifPresent(controller -> {
            controller.registerTransitionCallback(
                    new OneHandedTransitionCallback() {
+7 −5
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.util.Size;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.WindowManagerShellWrapper;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayInsetsController;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TaskStackListenerImpl;
@@ -99,7 +100,8 @@ public class PipControllerTest extends ShellTestCase {
    @Mock private TaskStackListenerImpl mMockTaskStackListener;
    @Mock private ShellExecutor mMockExecutor;
    @Mock private Optional<OneHandedController> mMockOneHandedController;
    @Mock private PipParamsChangedForwarder mPipParamsChangedForwarder;
    @Mock private PipParamsChangedForwarder mMockPipParamsChangedForwarder;
    @Mock private DisplayInsetsController mMockDisplayInsetsController;

    @Mock private DisplayLayout mMockDisplayLayout1;
    @Mock private DisplayLayout mMockDisplayLayout2;
@@ -120,8 +122,8 @@ public class PipControllerTest extends ShellTestCase {
                mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController,
                mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState,
                mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,
                mMockTaskStackListener, mPipParamsChangedForwarder,
                mMockOneHandedController, mMockExecutor);
                mMockTaskStackListener, mMockPipParamsChangedForwarder,
                mMockDisplayInsetsController, mMockOneHandedController, mMockExecutor);
        mShellInit.init();
        when(mMockPipBoundsAlgorithm.getSnapAlgorithm()).thenReturn(mMockPipSnapAlgorithm);
        when(mMockPipTouchHandler.getMotionHelper()).thenReturn(mMockPipMotionHelper);
@@ -186,8 +188,8 @@ public class PipControllerTest extends ShellTestCase {
                mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController,
                mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState,
                mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,
                mMockTaskStackListener, mPipParamsChangedForwarder,
                mMockOneHandedController, mMockExecutor));
                mMockTaskStackListener, mMockPipParamsChangedForwarder,
                mMockDisplayInsetsController, mMockOneHandedController, mMockExecutor));
    }

    @Test