diff options
| author | 2020-11-06 19:07:15 +0000 | |
|---|---|---|
| committer | 2020-11-06 19:07:15 +0000 | |
| commit | 5ad6ca668d1c751703aed32f466dbbcbb61c4b04 (patch) | |
| tree | e18c71c6ceb3c4e0cf5d602742066b7f053e302b | |
| parent | d1bd9998e1ebe936ad60aa44f7fca4008144d17e (diff) | |
| parent | d4459553dcbff6d48c48a4fcfeb008b244697a90 (diff) | |
Merge "Move attach/detach PiP menu calls to onTaskAppear/Vanish."
3 files changed, 16 insertions, 7 deletions
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 39772fb7b7ae..b2f4b5500300 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 @@ -495,6 +495,8 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mOnDisplayIdChangeCallback.accept(info.displayId); } + mMenuActivityController.onTaskAppeared(); + if (mShouldIgnoreEnteringPipTransition) { final Rect destinationBounds = mPipBoundsState.getBounds(); // animation is finished in the Launcher and here we directly apply the final touch. @@ -666,6 +668,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, mPictureInPictureParams = null; mState = State.UNDEFINED; mPipUiEventLoggerLogger.setTaskInfo(null); + mMenuActivityController.onTaskVanished(); } @Override 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 b68cf4f883d7..6e1fc83a87fb 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 @@ -277,7 +277,6 @@ public class PipController implements Pip, PipTaskOrganizer.PipTransitionCallbac mMainExecutor.execute(() -> { mTouchHandler.onActivityPinned(); mMediaController.onActivityPinned(); - mMenuController.onActivityPinned(); mAppOpsListener.onActivityPinned(packageName); }); } @@ -285,7 +284,6 @@ public class PipController implements Pip, PipTaskOrganizer.PipTransitionCallbac @Override public void onActivityUnpinned(ComponentName topActivity) { mMainExecutor.execute(() -> { - mMenuController.onActivityUnpinned(); mTouchHandler.onActivityUnpinned(topActivity); mAppOpsListener.onActivityUnpinned(); }); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java index 105a7900833a..1d5430008501 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java @@ -135,15 +135,22 @@ public class PipMenuActivityController { return mPipMenuView != null && mMenuState != MENU_STATE_NONE; } - public void onActivityPinned() { + /** + * Attach the menu when the PiP task first appears. + */ + public void onTaskAppeared() { attachPipMenuView(); } - public void onActivityUnpinned() { + /** + * Detach the menu when the PiP task is gone. + */ + public void onTaskVanished() { hideMenu(); detachPipMenuView(); } + public void onPinnedStackAnimationEnded() { if (isMenuVisible()) { mPipMenuView.onPipAnimationEnded(); @@ -151,10 +158,11 @@ public class PipMenuActivityController { } private void attachPipMenuView() { - if (mPipMenuView == null) { - mPipMenuView = new PipMenuView(mContext, this); + // In case detach was not called (e.g. PIP unexpectedly closed) + if (mPipMenuView != null) { + detachPipMenuView(); } - + mPipMenuView = new PipMenuView(mContext, this); mSystemWindows.addView(mPipMenuView, getPipMenuLayoutParams(0, 0), 0, SHELL_ROOT_LAYER_PIP); } |