Merge "Fix Transparent bounds from client layout" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9b65a0b75e
@@ -1311,6 +1311,16 @@ final class LetterboxUiController {
|
|||||||
|
|
||||||
final Rect cropBounds = new Rect(mActivityRecord.getBounds());
|
final Rect cropBounds = new Rect(mActivityRecord.getBounds());
|
||||||
|
|
||||||
|
// In case of translucent activities we check if the requested size is different from
|
||||||
|
// the size provided using inherited bounds. In that case we decide to not apply rounded
|
||||||
|
// corners because we assume the specific layout would. This is the case when the layout
|
||||||
|
// of the translucent activity uses only a part of all the bounds because of the use of
|
||||||
|
// LayoutParams.WRAP_CONTENT.
|
||||||
|
if (hasInheritedLetterboxBehavior() && (cropBounds.width() != mainWindow.mRequestedWidth
|
||||||
|
|| cropBounds.height() != mainWindow.mRequestedHeight)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// It is important to call {@link #adjustBoundsIfNeeded} before {@link cropBounds.offsetTo}
|
// It is important to call {@link #adjustBoundsIfNeeded} before {@link cropBounds.offsetTo}
|
||||||
// because taskbar bounds used in {@link #adjustBoundsIfNeeded}
|
// because taskbar bounds used in {@link #adjustBoundsIfNeeded}
|
||||||
// are in screen coordinates
|
// are in screen coordinates
|
||||||
|
|||||||
@@ -454,6 +454,29 @@ public class LetterboxUiControllerTest extends WindowTestsBase {
|
|||||||
assertTrue(mController.shouldForceRotateForCameraCompat());
|
assertTrue(mController.shouldForceRotateForCameraCompat());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetCropBoundsIfNeeded_handleCropForTransparentActivityBasedOnOpaqueBounds() {
|
||||||
|
final InsetsSource taskbar = new InsetsSource(/*id=*/ 0,
|
||||||
|
WindowInsets.Type.navigationBars());
|
||||||
|
taskbar.setInsetsRoundedCornerFrame(true);
|
||||||
|
final WindowState mainWindow = mockForGetCropBoundsAndRoundedCorners(taskbar);
|
||||||
|
final Rect opaqueBounds = new Rect(0, 0, 500, 300);
|
||||||
|
doReturn(opaqueBounds).when(mActivity).getBounds();
|
||||||
|
// Activity is translucent
|
||||||
|
spyOn(mActivity.mLetterboxUiController);
|
||||||
|
doReturn(true).when(mActivity.mLetterboxUiController).hasInheritedLetterboxBehavior();
|
||||||
|
|
||||||
|
// Makes requested sizes different
|
||||||
|
mainWindow.mRequestedWidth = opaqueBounds.width() - 1;
|
||||||
|
mainWindow.mRequestedHeight = opaqueBounds.height() - 1;
|
||||||
|
assertNull(mActivity.mLetterboxUiController.getCropBoundsIfNeeded(mainWindow));
|
||||||
|
|
||||||
|
// Makes requested sizes equals
|
||||||
|
mainWindow.mRequestedWidth = opaqueBounds.width();
|
||||||
|
mainWindow.mRequestedHeight = opaqueBounds.height();
|
||||||
|
assertNotNull(mActivity.mLetterboxUiController.getCropBoundsIfNeeded(mainWindow));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetCropBoundsIfNeeded_noCrop() {
|
public void testGetCropBoundsIfNeeded_noCrop() {
|
||||||
final InsetsSource taskbar = new InsetsSource(/*id=*/ 0,
|
final InsetsSource taskbar = new InsetsSource(/*id=*/ 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user