Prevent updating aspect ratio unless it is different.

- The old check of the bounds assumed there was no expanded state, so when
  a PiP activity tries to set the aspect ratio from a a menu action, it
  will cause an animation to the normal bounds again.

Bug: 36462497
Test: Set aspect ratio in pip action handler
Change-Id: Iba5e9571a3024c8369c2a24d32c2d8f34831ede4
This commit is contained in:
Winson Chung
2017-03-21 10:20:20 -07:00
parent 914c4ab1ed
commit c95ff8433a
2 changed files with 16 additions and 11 deletions

View File

@@ -298,6 +298,13 @@ class PinnedStackController {
}
}
/**
* @return the current aspect ratio.
*/
float getAspectRatio() {
return mAspectRatio;
}
/**
* Sets the current set of actions.
*/

View File

@@ -79,19 +79,17 @@ public class PinnedStackWindowController extends StackWindowController {
return;
}
final int displayId = mContainer.getDisplayContent().getDisplayId();
final Rect toBounds = mService.getPictureInPictureBounds(displayId, aspectRatio);
final Rect targetBounds = new Rect();
mContainer.getAnimatingBounds(targetBounds);
if (!toBounds.equals(targetBounds)) {
animateResizePinnedStack(toBounds, -1 /* duration */);
}
final PinnedStackController pinnedStackController =
mContainer.getDisplayContent().getPinnedStackController();
pinnedStackController.setAspectRatio(
pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)
? aspectRatio : -1f);
if (Float.compare(aspectRatio, pinnedStackController.getAspectRatio()) != 0) {
final int displayId = mContainer.getDisplayContent().getDisplayId();
final Rect toBounds = mService.getPictureInPictureBounds(displayId, aspectRatio);
animateResizePinnedStack(toBounds, -1 /* duration */);
pinnedStackController.setAspectRatio(
pinnedStackController.isValidPictureInPictureAspectRatio(aspectRatio)
? aspectRatio : -1f);
}
}
}