summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson Chung <winsonc@google.com> 2017-09-02 01:02:57 +0000
committer android-build-merger <android-build-merger@google.com> 2017-09-02 01:02:57 +0000
commit98790fa7f0a273a615f13dcd32b985005010df0e (patch)
tree25277503c71ee51c6810faa124f150551ff64c06
parenta6790ea3c1b1a7788e6e4527caa9632c374a2f52 (diff)
parent7affe0160939324d9c2d9404e771b139e7a7f2b9 (diff)
Merge "Fix issue with PiP menu activity disallowing touches" into oc-mr1-dev
am: 7affe01609 Change-Id: I3f683b510b23eaf2f07ea835b6823bfcfc423fde
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java20
3 files changed, 35 insertions, 16 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java
index 13ba7c160526..901b0b0a4e85 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java
@@ -19,6 +19,7 @@ package com.android.systemui.pip.phone;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ACTIONS;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_ALLOW_TIMEOUT;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_CONTROLLER_MESSENGER;
+import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_WILL_RESIZE_MENU;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_DISMISS_FRACTION;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MOVEMENT_BOUNDS;
import static com.android.systemui.pip.phone.PipMenuActivityController.EXTRA_MENU_STATE;
@@ -132,7 +133,8 @@ public class PipMenuActivity extends Activity {
showMenu(data.getInt(EXTRA_MENU_STATE),
data.getParcelable(EXTRA_STACK_BOUNDS),
data.getParcelable(EXTRA_MOVEMENT_BOUNDS),
- data.getBoolean(EXTRA_ALLOW_TIMEOUT));
+ data.getBoolean(EXTRA_ALLOW_TIMEOUT),
+ data.getBoolean(EXTRA_WILL_RESIZE_MENU));
break;
}
case MESSAGE_POKE_MENU:
@@ -307,12 +309,14 @@ public class PipMenuActivity extends Activity {
}
private void showMenu(int menuState, Rect stackBounds, Rect movementBounds,
- boolean allowMenuTimeout) {
+ boolean allowMenuTimeout, boolean resizeMenuOnShow) {
mAllowMenuTimeout = allowMenuTimeout;
if (mMenuState != menuState) {
- boolean deferTouchesUntilAnimationEnds = (mMenuState == MENU_STATE_FULL) ||
- (menuState == MENU_STATE_FULL);
- mAllowTouches = !deferTouchesUntilAnimationEnds;
+ // Disallow touches if the menu needs to resize while showing, and we are transitioning
+ // to/from a full menu state.
+ boolean disallowTouchesUntilAnimationEnd = resizeMenuOnShow &&
+ (mMenuState == MENU_STATE_FULL || menuState == MENU_STATE_FULL);
+ mAllowTouches = !disallowTouchesUntilAnimationEnd;
cancelDelayedFinish();
updateActionViews(stackBounds);
if (mMenuContainerAnimator != null) {
@@ -409,7 +413,8 @@ public class PipMenuActivity extends Activity {
Rect stackBounds = intent.getParcelableExtra(EXTRA_STACK_BOUNDS);
Rect movementBounds = intent.getParcelableExtra(EXTRA_MOVEMENT_BOUNDS);
boolean allowMenuTimeout = intent.getBooleanExtra(EXTRA_ALLOW_TIMEOUT, true);
- showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout);
+ boolean willResizeMenu = intent.getBooleanExtra(EXTRA_WILL_RESIZE_MENU, false);
+ showMenu(menuState, stackBounds, movementBounds, allowMenuTimeout, willResizeMenu);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
index c558056530b6..e898a51de33c 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
@@ -63,6 +63,7 @@ public class PipMenuActivityController {
public static final String EXTRA_STACK_BOUNDS = "stack_bounds";
public static final String EXTRA_MOVEMENT_BOUNDS = "movement_bounds";
public static final String EXTRA_ALLOW_TIMEOUT = "allow_timeout";
+ public static final String EXTRA_WILL_RESIZE_MENU = "resize_menu_on_show";
public static final String EXTRA_DISMISS_FRACTION = "dismiss_fraction";
public static final String EXTRA_MENU_STATE = "menu_state";
@@ -268,7 +269,8 @@ public class PipMenuActivityController {
// If we haven't requested the start activity, or if it previously took too long to
// start, then start it
startMenuActivity(MENU_STATE_NONE, null /* stackBounds */,
- null /* movementBounds */, false /* allowMenuTimeout */);
+ null /* movementBounds */, false /* allowMenuTimeout */,
+ false /* resizeMenuOnShow */);
}
}
@@ -276,18 +278,20 @@ public class PipMenuActivityController {
* Shows the menu activity.
*/
public void showMenu(int menuState, Rect stackBounds, Rect movementBounds,
- boolean allowMenuTimeout) {
+ boolean allowMenuTimeout, boolean willResizeMenu) {
if (DEBUG) {
Log.d(TAG, "showMenu() state=" + menuState
+ " hasActivity=" + (mToActivityMessenger != null)
+ " callers=\n" + Debug.getCallers(5, " "));
}
+
if (mToActivityMessenger != null) {
Bundle data = new Bundle();
data.putInt(EXTRA_MENU_STATE, menuState);
data.putParcelable(EXTRA_STACK_BOUNDS, stackBounds);
data.putParcelable(EXTRA_MOVEMENT_BOUNDS, movementBounds);
data.putBoolean(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout);
+ data.putBoolean(EXTRA_WILL_RESIZE_MENU, willResizeMenu);
Message m = Message.obtain();
m.what = PipMenuActivity.MESSAGE_SHOW_MENU;
m.obj = data;
@@ -299,7 +303,8 @@ public class PipMenuActivityController {
} else if (!mStartActivityRequested || isStartActivityRequestedElapsed()) {
// If we haven't requested the start activity, or if it previously took too long to
// start, then start it
- startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout);
+ startMenuActivity(menuState, stackBounds, movementBounds, allowMenuTimeout,
+ willResizeMenu);
}
}
@@ -372,7 +377,7 @@ public class PipMenuActivityController {
* Starts the menu activity on the top task of the pinned stack.
*/
private void startMenuActivity(int menuState, Rect stackBounds, Rect movementBounds,
- boolean allowMenuTimeout) {
+ boolean allowMenuTimeout, boolean willResizeMenu) {
try {
StackInfo pinnedStackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID);
if (pinnedStackInfo != null && pinnedStackInfo.taskIds != null &&
@@ -388,6 +393,7 @@ public class PipMenuActivityController {
}
intent.putExtra(EXTRA_MENU_STATE, menuState);
intent.putExtra(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout);
+ intent.putExtra(EXTRA_WILL_RESIZE_MENU, willResizeMenu);
ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0);
options.setLaunchTaskId(
pinnedStackInfo.taskIds[pinnedStackInfo.taskIds.length - 1]);
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
index 8ddd8882788b..31814818303b 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
@@ -170,7 +170,7 @@ public class PipTouchHandler {
@Override
public void onPipShowMenu() {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
- mMovementBounds, true /* allowMenuTimeout */);
+ mMovementBounds, true /* allowMenuTimeout */, willResizeMenu());
}
}
@@ -214,7 +214,7 @@ public class PipTouchHandler {
// Only show the menu if the user isn't currently interacting with the PiP
if (!mTouchState.isUserInteracting()) {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
- mMovementBounds, false /* allowMenuTimeout */);
+ mMovementBounds, false /* allowMenuTimeout */, willResizeMenu());
}
}
@@ -236,7 +236,7 @@ public class PipTouchHandler {
if (mShowPipMenuOnAnimationEnd) {
mMenuController.showMenu(MENU_STATE_CLOSE, mMotionHelper.getBounds(),
- mMovementBounds, true /* allowMenuTimeout */);
+ mMovementBounds, true /* allowMenuTimeout */, false /* willResizeMenu */);
mShowPipMenuOnAnimationEnd = false;
}
}
@@ -337,7 +337,7 @@ public class PipTouchHandler {
private void onAccessibilityShowMenu() {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
- mMovementBounds, false /* allowMenuTimeout */);
+ mMovementBounds, false /* allowMenuTimeout */, willResizeMenu());
}
private boolean handleTouchEvent(MotionEvent ev) {
@@ -704,7 +704,7 @@ public class PipTouchHandler {
// If the menu is still visible, and we aren't minimized, then just poke the
// menu so that it will timeout after the user stops touching it
mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(),
- mMovementBounds, true /* allowMenuTimeout */);
+ mMovementBounds, true /* allowMenuTimeout */, willResizeMenu());
} else {
// If the menu is not visible, then we can still be showing the activity for the
// dismiss overlay, so just finish it after the animation completes
@@ -731,7 +731,7 @@ public class PipTouchHandler {
setMinimizedStateInternal(false);
} else if (mMenuState != MENU_STATE_FULL) {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
- mMovementBounds, true /* allowMenuTimeout */);
+ mMovementBounds, true /* allowMenuTimeout */, willResizeMenu());
} else {
mMenuController.hideMenu();
mMotionHelper.expandPip();
@@ -773,6 +773,14 @@ public class PipTouchHandler {
cleanUpDismissTarget();
}
+ /**
+ * @return whether the menu will resize as a part of showing the full menu.
+ */
+ private boolean willResizeMenu() {
+ return mExpandedBounds.width() != mNormalBounds.width() ||
+ mExpandedBounds.height() != mNormalBounds.height();
+ }
+
public void dump(PrintWriter pw, String prefix) {
final String innerPrefix = prefix + " ";
pw.println(prefix + TAG);