diff options
5 files changed, 35 insertions, 28 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index e784261daa7e..c11c5777e818 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -318,6 +318,7 @@ public abstract class WMShellModule { ShellCommandHandler shellCommandHandler, ShellController shellController, DisplayController displayController, + PipAnimationController pipAnimationController, PipAppOpsListener pipAppOpsListener, PipBoundsAlgorithm pipBoundsAlgorithm, PhonePipKeepClearAlgorithm pipKeepClearAlgorithm, @@ -337,11 +338,12 @@ public abstract class WMShellModule { @ShellMainThread ShellExecutor mainExecutor) { return Optional.ofNullable(PipController.create( context, shellInit, shellCommandHandler, shellController, - displayController, pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm, - pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController, - pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController, - windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder, - displayInsetsController, oneHandedController, mainExecutor)); + displayController, pipAnimationController, pipAppOpsListener, pipBoundsAlgorithm, + pipKeepClearAlgorithm, pipBoundsState, pipMotionHelper, pipMediaController, + phonePipMenuController, pipTaskOrganizer, pipTransitionState, pipTouchHandler, + pipTransitionController, windowManagerShellWrapper, taskStackListener, + pipParamsChangedForwarder, displayInsetsController, oneHandedController, + mainExecutor)); } @WMSingleton diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java index b32c3eed2fb4..6728c00af51b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipAnimationController.java @@ -195,6 +195,17 @@ public class PipAnimationController { } /** + * 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. */ static void quietCancel(@NonNull ValueAnimator animator) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 1a52d8c395ba..f170e774739f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -324,19 +324,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, 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() { PipAnimationController.PipTransitionAnimator animator = mPipAnimationController.getCurrentAnimator(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index bc8191d2af46..af47666efa5a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -130,6 +130,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb private DisplayController mDisplayController; private PipInputConsumer mPipInputConsumer; private WindowManagerShellWrapper mWindowManagerShellWrapper; + private PipAnimationController mPipAnimationController; private PipAppOpsListener mAppOpsListener; private PipMediaController mMediaController; private PipBoundsAlgorithm mPipBoundsAlgorithm; @@ -158,7 +159,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb return; } // if there is another animation ongoing, wait for it to finish and try again - if (mPipTaskOrganizer.isAnimating()) { + if (mPipAnimationController.isAnimating()) { mMainExecutor.removeCallbacks( mMovePipInResponseToKeepClearAreasChangeCallback); mMainExecutor.executeDelayed( @@ -368,6 +369,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb ShellCommandHandler shellCommandHandler, ShellController shellController, DisplayController displayController, + PipAnimationController pipAnimationController, PipAppOpsListener pipAppOpsListener, PipBoundsAlgorithm pipBoundsAlgorithm, PipKeepClearAlgorithm pipKeepClearAlgorithm, @@ -392,11 +394,12 @@ public class PipController implements PipTransitionController.PipTransitionCallb } return new PipController(context, shellInit, shellCommandHandler, shellController, - displayController, pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm, - pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController, - pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController, - windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder, - displayInsetsController, oneHandedController, mainExecutor) + displayController, pipAnimationController, pipAppOpsListener, + pipBoundsAlgorithm, pipKeepClearAlgorithm, pipBoundsState, pipMotionHelper, + pipMediaController, phonePipMenuController, pipTaskOrganizer, pipTransitionState, + pipTouchHandler, pipTransitionController, windowManagerShellWrapper, + taskStackListener, pipParamsChangedForwarder, displayInsetsController, + oneHandedController, mainExecutor) .mImpl; } @@ -405,6 +408,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb ShellCommandHandler shellCommandHandler, ShellController shellController, DisplayController displayController, + PipAnimationController pipAnimationController, PipAppOpsListener pipAppOpsListener, PipBoundsAlgorithm pipBoundsAlgorithm, PipKeepClearAlgorithm pipKeepClearAlgorithm, @@ -445,6 +449,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb mMediaController = pipMediaController; mMenuController = phonePipMenuController; mTouchHandler = pipTouchHandler; + mPipAnimationController = pipAnimationController; mAppOpsListener = pipAppOpsListener; mOneHandedController = oneHandedController; mPipTransitionController = pipTransitionController; diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java index a8d3bdcb7c96..1e08f1e55797 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java @@ -48,6 +48,7 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.TaskStackListenerImpl; 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.PipBoundsAlgorithm; import com.android.wm.shell.pip.PipBoundsState; @@ -85,6 +86,7 @@ public class PipControllerTest extends ShellTestCase { @Mock private ShellCommandHandler mMockShellCommandHandler; @Mock private DisplayController mMockDisplayController; @Mock private PhonePipMenuController mMockPhonePipMenuController; + @Mock private PipAnimationController mMockPipAnimationController; @Mock private PipAppOpsListener mMockPipAppOpsListener; @Mock private PipBoundsAlgorithm mMockPipBoundsAlgorithm; @Mock private PhonePipKeepClearAlgorithm mMockPipKeepClearAlgorithm; @@ -117,8 +119,8 @@ public class PipControllerTest extends ShellTestCase { mShellController = spy(new ShellController(mShellInit, mMockShellCommandHandler, mMockExecutor)); mPipController = new PipController(mContext, mShellInit, mMockShellCommandHandler, - mShellController, mMockDisplayController, mMockPipAppOpsListener, - mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, + mShellController, mMockDisplayController, mMockPipAnimationController, + mMockPipAppOpsListener, mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController, mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState, mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper, @@ -183,8 +185,8 @@ public class PipControllerTest extends ShellTestCase { ShellInit shellInit = new ShellInit(mMockExecutor); assertNull(PipController.create(spyContext, shellInit, mMockShellCommandHandler, - mShellController, mMockDisplayController, mMockPipAppOpsListener, - mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, + mShellController, mMockDisplayController, mMockPipAnimationController, + mMockPipAppOpsListener, mMockPipBoundsAlgorithm, mMockPipKeepClearAlgorithm, mMockPipBoundsState, mMockPipMotionHelper, mMockPipMediaController, mMockPhonePipMenuController, mMockPipTaskOrganizer, mMockPipTransitionState, mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper, |