Merge "Update PiP movement bounds on TaskBar inset change" into tm-qpr-dev
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user