Merge "Refactor isAnimating to PipAnimationController, and update references." into tm-qpr-dev am: 5e05a02c9c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20002275

Change-Id: I5c4a2abf0453b9694ec9e05bc4057cc5992e922a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Mateusz Cicheński
2022-09-28 19:42:21 +00:00
committed by Automerger Merge Worker
5 changed files with 35 additions and 28 deletions

View File

@@ -318,6 +318,7 @@ public abstract class WMShellModule {
ShellCommandHandler shellCommandHandler, ShellCommandHandler shellCommandHandler,
ShellController shellController, ShellController shellController,
DisplayController displayController, DisplayController displayController,
PipAnimationController pipAnimationController,
PipAppOpsListener pipAppOpsListener, PipAppOpsListener pipAppOpsListener,
PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm,
PhonePipKeepClearAlgorithm pipKeepClearAlgorithm, PhonePipKeepClearAlgorithm pipKeepClearAlgorithm,
@@ -337,11 +338,12 @@ public abstract class WMShellModule {
@ShellMainThread ShellExecutor mainExecutor) { @ShellMainThread ShellExecutor mainExecutor) {
return Optional.ofNullable(PipController.create( return Optional.ofNullable(PipController.create(
context, shellInit, shellCommandHandler, shellController, context, shellInit, shellCommandHandler, shellController,
displayController, pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm, displayController, pipAnimationController, pipAppOpsListener, pipBoundsAlgorithm,
pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController, pipKeepClearAlgorithm, pipBoundsState, pipMotionHelper, pipMediaController,
pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController, phonePipMenuController, pipTaskOrganizer, pipTransitionState, pipTouchHandler,
windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder, pipTransitionController, windowManagerShellWrapper, taskStackListener,
displayInsetsController, oneHandedController, mainExecutor)); pipParamsChangedForwarder, displayInsetsController, oneHandedController,
mainExecutor));
} }
@WMSingleton @WMSingleton

View File

@@ -194,6 +194,17 @@ public class PipAnimationController {
return animator; return animator;
} }
/**
* Returns true if the PiP window is currently being animated.
*/
public boolean isAnimating() {
PipAnimationController.PipTransitionAnimator animator = getCurrentAnimator();
if (animator != null && animator.isRunning()) {
return true;
}
return false;
}
/** /**
* Quietly cancel the animator by removing the listeners first. * Quietly cancel the animator by removing the listeners first.
*/ */

View File

@@ -324,19 +324,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
return mPipTransitionController; return mPipTransitionController;
} }
/**
* Returns true if the PiP window is currently being animated.
*/
public boolean isAnimating() {
// TODO(b/183746978) move this to PipAnimationController, and inject that in PipController
PipAnimationController.PipTransitionAnimator animator =
mPipAnimationController.getCurrentAnimator();
if (animator != null && animator.isRunning()) {
return true;
}
return false;
}
public Rect getCurrentOrAnimatingBounds() { public Rect getCurrentOrAnimatingBounds() {
PipAnimationController.PipTransitionAnimator animator = PipAnimationController.PipTransitionAnimator animator =
mPipAnimationController.getCurrentAnimator(); mPipAnimationController.getCurrentAnimator();

View File

@@ -130,6 +130,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
private DisplayController mDisplayController; private DisplayController mDisplayController;
private PipInputConsumer mPipInputConsumer; private PipInputConsumer mPipInputConsumer;
private WindowManagerShellWrapper mWindowManagerShellWrapper; private WindowManagerShellWrapper mWindowManagerShellWrapper;
private PipAnimationController mPipAnimationController;
private PipAppOpsListener mAppOpsListener; private PipAppOpsListener mAppOpsListener;
private PipMediaController mMediaController; private PipMediaController mMediaController;
private PipBoundsAlgorithm mPipBoundsAlgorithm; private PipBoundsAlgorithm mPipBoundsAlgorithm;
@@ -158,7 +159,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
return; return;
} }
// if there is another animation ongoing, wait for it to finish and try again // if there is another animation ongoing, wait for it to finish and try again
if (mPipTaskOrganizer.isAnimating()) { if (mPipAnimationController.isAnimating()) {
mMainExecutor.removeCallbacks( mMainExecutor.removeCallbacks(
mMovePipInResponseToKeepClearAreasChangeCallback); mMovePipInResponseToKeepClearAreasChangeCallback);
mMainExecutor.executeDelayed( mMainExecutor.executeDelayed(
@@ -368,6 +369,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
ShellCommandHandler shellCommandHandler, ShellCommandHandler shellCommandHandler,
ShellController shellController, ShellController shellController,
DisplayController displayController, DisplayController displayController,
PipAnimationController pipAnimationController,
PipAppOpsListener pipAppOpsListener, PipAppOpsListener pipAppOpsListener,
PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm,
PipKeepClearAlgorithm pipKeepClearAlgorithm, PipKeepClearAlgorithm pipKeepClearAlgorithm,
@@ -392,11 +394,12 @@ public class PipController implements PipTransitionController.PipTransitionCallb
} }
return new PipController(context, shellInit, shellCommandHandler, shellController, return new PipController(context, shellInit, shellCommandHandler, shellController,
displayController, pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm, displayController, pipAnimationController, pipAppOpsListener,
pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController, pipBoundsAlgorithm, pipKeepClearAlgorithm, pipBoundsState, pipMotionHelper,
pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController, pipMediaController, phonePipMenuController, pipTaskOrganizer, pipTransitionState,
windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder, pipTouchHandler, pipTransitionController, windowManagerShellWrapper,
displayInsetsController, oneHandedController, mainExecutor) taskStackListener, pipParamsChangedForwarder, displayInsetsController,
oneHandedController, mainExecutor)
.mImpl; .mImpl;
} }
@@ -405,6 +408,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
ShellCommandHandler shellCommandHandler, ShellCommandHandler shellCommandHandler,
ShellController shellController, ShellController shellController,
DisplayController displayController, DisplayController displayController,
PipAnimationController pipAnimationController,
PipAppOpsListener pipAppOpsListener, PipAppOpsListener pipAppOpsListener,
PipBoundsAlgorithm pipBoundsAlgorithm, PipBoundsAlgorithm pipBoundsAlgorithm,
PipKeepClearAlgorithm pipKeepClearAlgorithm, PipKeepClearAlgorithm pipKeepClearAlgorithm,
@@ -445,6 +449,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb
mMediaController = pipMediaController; mMediaController = pipMediaController;
mMenuController = phonePipMenuController; mMenuController = phonePipMenuController;
mTouchHandler = pipTouchHandler; mTouchHandler = pipTouchHandler;
mPipAnimationController = pipAnimationController;
mAppOpsListener = pipAppOpsListener; mAppOpsListener = pipAppOpsListener;
mOneHandedController = oneHandedController; mOneHandedController = oneHandedController;
mPipTransitionController = pipTransitionController; mPipTransitionController = pipTransitionController;

View File

@@ -48,6 +48,7 @@ import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.onehanded.OneHandedController;
import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipAppOpsListener; import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsAlgorithm; import com.android.wm.shell.pip.PipBoundsAlgorithm;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
@@ -85,6 +86,7 @@ public class PipControllerTest extends ShellTestCase {
@Mock private ShellCommandHandler mMockShellCommandHandler; @Mock private ShellCommandHandler mMockShellCommandHandler;
@Mock private DisplayController mMockDisplayController; @Mock private DisplayController mMockDisplayController;
@Mock private PhonePipMenuController mMockPhonePipMenuController; @Mock private PhonePipMenuController mMockPhonePipMenuController;
@Mock private PipAnimationController mMockPipAnimationController;
@Mock private PipAppOpsListener mMockPipAppOpsListener; @Mock private PipAppOpsListener mMockPipAppOpsListener;
@Mock private PipBoundsAlgorithm mMockPipBoundsAlgorithm; @Mock private PipBoundsAlgorithm mMockPipBoundsAlgorithm;
@Mock private PhonePipKeepClearAlgorithm mMockPipKeepClearAlgorithm; @Mock private PhonePipKeepClearAlgorithm mMockPipKeepClearAlgorithm;
@@ -117,8 +119,8 @@ public class PipControllerTest extends ShellTestCase {
mShellController = spy(new ShellController(mShellInit, mMockShellCommandHandler, mShellController = spy(new ShellController(mShellInit, mMockShellCommandHandler,
mMockExecutor)); mMockExecutor));
mPipController = new PipController(mContext, mShellInit, mMockShellCommandHandler, mPipController = new PipController(mContext, mShellInit, mMockShellCommandHandler,
mShellController, mMockDisplayController, mMockPipAppOpsListener, mShellController, mMockDisplayController, mMockPipAnimationController,
mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, mMockPipAppOpsListener, mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm,
mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController, mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController,
mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState, mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState,
mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper, mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,
@@ -183,8 +185,8 @@ public class PipControllerTest extends ShellTestCase {
ShellInit shellInit = new ShellInit(mMockExecutor); ShellInit shellInit = new ShellInit(mMockExecutor);
assertNull(PipController.create(spyContext, shellInit, mMockShellCommandHandler, assertNull(PipController.create(spyContext, shellInit, mMockShellCommandHandler,
mShellController, mMockDisplayController, mMockPipAppOpsListener, mShellController, mMockDisplayController, mMockPipAnimationController,
mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, mMockPipAppOpsListener, mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm,
mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController, mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController,
mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState, mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState,
mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper, mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,