Merge "Use PipBoundsState to access current bounds"

This commit is contained in:
Jorge Gil
2020-11-16 17:53:29 +00:00
committed by Android (Google) Code Review
4 changed files with 25 additions and 26 deletions

View File

@@ -105,8 +105,8 @@ public class PipAccessibilityInteractionConnection
// R constants are not final so this cannot be put in the switch-case.
if (action == R.id.action_pip_resize) {
if (mMotionHelper.getBounds().width() == mNormalBounds.width()
&& mMotionHelper.getBounds().height() == mNormalBounds.height()) {
if (mPipBoundsState.getBounds().width() == mNormalBounds.width()
&& mPipBoundsState.getBounds().height() == mNormalBounds.height()) {
setToExpandedBounds();
} else {
setToNormalBounds();
@@ -130,7 +130,7 @@ public class PipAccessibilityInteractionConnection
int newY = arguments.getInt(
AccessibilityNodeInfo.ACTION_ARGUMENT_MOVE_WINDOW_Y);
Rect pipBounds = new Rect();
pipBounds.set(mMotionHelper.getBounds());
pipBounds.set(mPipBoundsState.getBounds());
mTmpBounds.offsetTo(newX, newY);
mMotionHelper.movePip(mTmpBounds);
result = true;

View File

@@ -348,10 +348,8 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
/**
* @return the PiP bounds.
*
* TODO(b/169373982): can be private, outside callers can use PipBoundsState directly.
*/
Rect getBounds() {
private Rect getBounds() {
return mPipBoundsState.getBounds();
}

View File

@@ -296,7 +296,7 @@ public class PipResizeGestureHandler {
* |_|_| |_|_|
*/
public boolean isWithinTouchRegion(int x, int y) {
final Rect currentPipBounds = mMotionHelper.getBounds();
final Rect currentPipBounds = mPipBoundsState.getBounds();
if (currentPipBounds == null) {
return false;
}
@@ -349,8 +349,8 @@ public class PipResizeGestureHandler {
}
private void setCtrlTypeForPinchToZoom() {
final Rect currentPipBounds = mMotionHelper.getBounds();
mLastDownBounds.set(mMotionHelper.getBounds());
final Rect currentPipBounds = mPipBoundsState.getBounds();
mLastDownBounds.set(mPipBoundsState.getBounds());
Rect movementBounds = mMovementBoundsSupplier.apply(currentPipBounds);
mDisplayBounds.set(movementBounds.left,
@@ -372,7 +372,7 @@ public class PipResizeGestureHandler {
}
private void setCtrlType(int x, int y) {
final Rect currentPipBounds = mMotionHelper.getBounds();
final Rect currentPipBounds = mPipBoundsState.getBounds();
Rect movementBounds = mMovementBoundsSupplier.apply(currentPipBounds);
mDisplayBounds.set(movementBounds.left,
@@ -413,13 +413,13 @@ public class PipResizeGestureHandler {
float x = ev.getX();
float y = ev.getY();
if (action == MotionEvent.ACTION_DOWN) {
final Rect currentPipBounds = mMotionHelper.getBounds();
final Rect currentPipBounds = mPipBoundsState.getBounds();
mLastResizeBounds.setEmpty();
mAllowGesture = isInValidSysUiState() && isWithinTouchRegion((int) x, (int) y);
if (mAllowGesture) {
setCtrlType((int) x, (int) y);
mDownPoint.set(x, y);
mLastDownBounds.set(mMotionHelper.getBounds());
mLastDownBounds.set(mPipBoundsState.getBounds());
}
if (!currentPipBounds.contains((int) ev.getX(), (int) ev.getY())
&& mPipMenuActivityController.isMenuVisible()) {
@@ -446,7 +446,7 @@ public class PipResizeGestureHandler {
mPipMenuActivityController.hideMenuWithoutResize();
mPipMenuActivityController.hideMenu();
}
final Rect currentPipBounds = mMotionHelper.getBounds();
final Rect currentPipBounds = mPipBoundsState.getBounds();
mLastResizeBounds.set(TaskResizingAlgorithm.resizeDrag(x, y,
mDownPoint.x, mDownPoint.y, currentPipBounds, mCtrlType, mMinSize.x,
mMinSize.y, mMaxSize, true,

View File

@@ -145,7 +145,7 @@ public class PipTouchHandler {
@Override
public void onPipShowMenu() {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_FULL, mPipBoundsState.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle());
}
}
@@ -176,8 +176,9 @@ public class PipTouchHandler {
mPipDismissTargetHandler = new PipDismissTargetHandler(context, pipUiEventLogger,
mMotionHelper, mHandler);
mTouchState = new PipTouchState(ViewConfiguration.get(context), mHandler,
() -> mMenuController.showMenuWithDelay(MENU_STATE_FULL, mMotionHelper.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(), shouldShowResizeHandle()),
() -> mMenuController.showMenuWithDelay(MENU_STATE_FULL,
mPipBoundsState.getBounds(), true /* allowMenuTimeout */, willResizeMenu(),
shouldShowResizeHandle()),
menuController::hideMenu);
Resources res = context.getResources();
@@ -229,7 +230,7 @@ public class PipTouchHandler {
public void showPictureInPictureMenu() {
// Only show the menu if the user isn't currently interacting with the PiP
if (!mTouchState.isUserInteracting()) {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_FULL, mPipBoundsState.getBounds(),
false /* allowMenuTimeout */, willResizeMenu(),
shouldShowResizeHandle());
}
@@ -265,11 +266,11 @@ public class PipTouchHandler {
updateMovementBounds();
if (direction == TRANSITION_DIRECTION_TO_PIP) {
// Set the initial bounds as the user resize bounds.
mPipResizeGestureHandler.setUserResizeBounds(mMotionHelper.getBounds());
mPipResizeGestureHandler.setUserResizeBounds(mPipBoundsState.getBounds());
}
if (mShowPipMenuOnAnimationEnd) {
mMenuController.showMenu(MENU_STATE_CLOSE, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_CLOSE, mPipBoundsState.getBounds(),
true /* allowMenuTimeout */, false /* willResizeMenu */,
shouldShowResizeHandle());
mShowPipMenuOnAnimationEnd = false;
@@ -446,7 +447,7 @@ public class PipTouchHandler {
}
private void onAccessibilityShowMenu() {
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_FULL, mPipBoundsState.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(),
shouldShowResizeHandle());
}
@@ -529,7 +530,7 @@ public class PipTouchHandler {
// Let's not enable menu show/hide for a11y services.
if (!mAccessibilityManager.isTouchExplorationEnabled()) {
mTouchState.removeHoverExitTimeoutCallback();
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_FULL, mPipBoundsState.getBounds(),
false /* allowMenuTimeout */, false /* willResizeMenu */,
shouldShowResizeHandle());
}
@@ -773,7 +774,7 @@ public class PipTouchHandler {
if (mMenuState != MENU_STATE_NONE) {
// If the menu is still visible, then just poke the menu so that
// it will timeout after the user stops touching it
mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(),
mMenuController.showMenu(mMenuState, mPipBoundsState.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(),
shouldShowResizeHandle());
}
@@ -797,9 +798,9 @@ public class PipTouchHandler {
} else if (mTouchState.isDoubleTap() && !mPipBoundsState.isStashed()) {
// If using pinch to zoom, double-tap functions as resizing between max/min size
if (mPipResizeGestureHandler.isUsingPinchToZoom()) {
final boolean toExpand = mMotionHelper.getBounds().width()
final boolean toExpand = mPipBoundsState.getBounds().width()
< mPipBoundsState.getExpandedBounds().width()
&& mMotionHelper.getBounds().height()
&& mPipBoundsState.getBounds().height()
< mPipBoundsState.getExpandedBounds().height();
mPipResizeGestureHandler.setUserResizeBounds(toExpand
? mPipBoundsState.getExpandedBounds()
@@ -819,7 +820,7 @@ public class PipTouchHandler {
if (!mTouchState.isWaitingForDoubleTap()) {
// User has stalled long enough for this not to be a drag or a double tap, just
// expand the menu
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
mMenuController.showMenu(MENU_STATE_FULL, mPipBoundsState.getBounds(),
true /* allowMenuTimeout */, willResizeMenu(),
shouldShowResizeHandle());
} else {
@@ -864,7 +865,7 @@ public class PipTouchHandler {
* resized.
*/
private void updateMovementBounds() {
mPipBoundsAlgorithm.getSnapAlgorithm().getMovementBounds(mMotionHelper.getBounds(),
mPipBoundsAlgorithm.getSnapAlgorithm().getMovementBounds(mPipBoundsState.getBounds(),
mInsetBounds, mPipBoundsState.getMovementBounds(), mIsImeShowing ? mImeHeight : 0);
mMotionHelper.onMovementBoundsChanged();