Merge "[RESTRICT AUTOMERGE] Ignore small source rect hint" into sc-v2-dev

This commit is contained in:
Hongwei Wang
2023-08-08 03:04:36 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 4 deletions

View File

@@ -182,6 +182,21 @@ public class PipBoundsAlgorithm {
return null; return null;
} }
/**
* Returns the source hint rect if it is valid (if provided and is contained by the current
* task bounds and not too small).
*/
public static Rect getValidSourceHintRect(PictureInPictureParams params, Rect sourceBounds,
@NonNull Rect destinationBounds) {
final Rect sourceHintRect = getValidSourceHintRect(params, sourceBounds);
if (sourceHintRect != null
&& sourceHintRect.width() > destinationBounds.width()
&& sourceHintRect.height() > destinationBounds.height()) {
return sourceHintRect;
}
return null;
}
public float getDefaultAspectRatio() { public float getDefaultAspectRatio() {
return mDefaultAspectRatio; return mDefaultAspectRatio;
} }

View File

@@ -553,7 +553,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
if (mOneShotAnimationType == ANIM_TYPE_BOUNDS) { if (mOneShotAnimationType == ANIM_TYPE_BOUNDS) {
mPipMenuController.attach(mLeash); mPipMenuController.attach(mLeash);
final Rect sourceHintRect = PipBoundsAlgorithm.getValidSourceHintRect( final Rect sourceHintRect = PipBoundsAlgorithm.getValidSourceHintRect(
info.pictureInPictureParams, currentBounds); info.pictureInPictureParams, currentBounds, destinationBounds);
scheduleAnimateResizePip(currentBounds, destinationBounds, 0 /* startingAngle */, scheduleAnimateResizePip(currentBounds, destinationBounds, 0 /* startingAngle */,
sourceHintRect, TRANSITION_DIRECTION_TO_PIP, mEnterAnimationDuration, sourceHintRect, TRANSITION_DIRECTION_TO_PIP, mEnterAnimationDuration,
null /* updateBoundsCallback */); null /* updateBoundsCallback */);
@@ -579,9 +579,9 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
return; return;
} }
final Rect currentBounds = mTaskInfo.configuration.windowConfiguration.getBounds(); final Rect currentBounds = mTaskInfo.configuration.windowConfiguration.getBounds();
final Rect sourceHintRect = PipBoundsAlgorithm.getValidSourceHintRect(
mPictureInPictureParams, currentBounds);
final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds(); final Rect destinationBounds = mPipBoundsAlgorithm.getEntryDestinationBounds();
final Rect sourceHintRect = PipBoundsAlgorithm.getValidSourceHintRect(
mPictureInPictureParams, currentBounds, destinationBounds);
animateResizePip(currentBounds, destinationBounds, sourceHintRect, animateResizePip(currentBounds, destinationBounds, sourceHintRect,
TRANSITION_DIRECTION_TO_PIP, mEnterAnimationDuration, 0 /* startingAngle */); TRANSITION_DIRECTION_TO_PIP, mEnterAnimationDuration, 0 /* startingAngle */);
mPipTransitionState.setTransitionState(PipTransitionState.ENTERING_PIP); mPipTransitionState.setTransitionState(PipTransitionState.ENTERING_PIP);

View File

@@ -318,7 +318,7 @@ public class PipTransition extends PipTransitionController {
if (mOneShotAnimationType == ANIM_TYPE_BOUNDS) { if (mOneShotAnimationType == ANIM_TYPE_BOUNDS) {
final Rect sourceHintRect = final Rect sourceHintRect =
PipBoundsAlgorithm.getValidSourceHintRect( PipBoundsAlgorithm.getValidSourceHintRect(
taskInfo.pictureInPictureParams, currentBounds); taskInfo.pictureInPictureParams, currentBounds, destinationBounds);
animator = mPipAnimationController.getAnimator(taskInfo, leash, currentBounds, animator = mPipAnimationController.getAnimator(taskInfo, leash, currentBounds,
currentBounds, destinationBounds, sourceHintRect, TRANSITION_DIRECTION_TO_PIP, currentBounds, destinationBounds, sourceHintRect, TRANSITION_DIRECTION_TO_PIP,
0 /* startingAngle */, rotationDelta); 0 /* startingAngle */, rotationDelta);