summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ben Lin <linben@google.com> 2020-11-06 19:07:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-11-06 19:07:15 +0000
commit5ad6ca668d1c751703aed32f466dbbcbb61c4b04 (patch)
treee18c71c6ceb3c4e0cf5d602742066b7f053e302b
parentd1bd9998e1ebe936ad60aa44f7fca4008144d17e (diff)
parentd4459553dcbff6d48c48a4fcfeb008b244697a90 (diff)
Merge "Move attach/detach PiP menu calls to onTaskAppear/Vanish."
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuActivityController.java18
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);
}