Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad7d89c2 authored by Louis Chang's avatar Louis Chang Committed by Charles Chen
Browse files

Skip letterboxing if the activity below is embedded

Embedded activities are resize-able and won't be letterboxed

Bug: 270681405
fixes: 280898266

Test: SizeCompatTests
Test: manual - repro step in bug

Merged-In: Ic7b1c4b40960fd04de9efbf4f6d7abee45c93025
Change-Id: Ic7b1c4b40960fd04de9efbf4f6d7abee45c93025
(cherry picked from commit b828087b)
parent 402d56a9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1595,9 +1595,9 @@ final class LetterboxUiController {
                FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE /* callback */,
                mActivityRecord /* boundary */, false /* includeBoundary */,
                true /* traverseTopToBottom */);
        if (firstOpaqueActivityBeneath == null) {
        if (firstOpaqueActivityBeneath == null || firstOpaqueActivityBeneath.isEmbedded()) {
            // We skip letterboxing if the translucent activity doesn't have any opaque
            // activities beneath
            // activities beneath or the activity below is embedded which never has letterbox.
            return;
        }
        inheritConfiguration(firstOpaqueActivityBeneath);
+19 −1
Original line number Diff line number Diff line
@@ -475,7 +475,25 @@ public class SizeCompatTests extends WindowTestsBase {
    }

    @Test
    public void testTranslucentActivitiesDontGoInSizeCompatMode() {
    public void testNotApplyStrategyToTranslucentActivitiesOverEmbeddedActivities() {
        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
        setUpDisplaySizeWithApp(2000, 1000);
        mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT;
        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
        // Mock the activity as embedded without additional TaskFragment layer in the task for
        // simplicity.
        doReturn(true).when(mActivity).isEmbedded();
        // Translucent Activity
        final ActivityRecord translucentActivity = new ActivityBuilder(mAtm).build();
        doReturn(false).when(translucentActivity).matchParentBounds();
        doReturn(false).when(translucentActivity).fillsParent();
        mTask.addChild(translucentActivity);
        // Check the strategy has not being applied
        assertFalse(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior());
    }

    @Test
    public void testTranslucentActivitiesDontGoInSizeCompactMode() {
        mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
        setUpDisplaySizeWithApp(2800, 1400);
        mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);