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

Commit 1ca52f00 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove opposite position of nav bar for short aspect ratio app"

parents bee38836 8ab8dacb
Loading
Loading
Loading
Loading
+0 −24
Original line number Diff line number Diff line
@@ -87,8 +87,6 @@ import static android.os.Build.VERSION_CODES.HONEYCOMB;
import static android.os.Build.VERSION_CODES.O;
import static android.os.Process.SYSTEM_UID;
import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_LEFT;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_RIGHT;

import static com.android.server.am.ActivityRecordProto.CONFIGURATION_CONTAINER;
import static com.android.server.am.ActivityRecordProto.FRONT_OF_TASK;
@@ -2828,28 +2826,6 @@ final class ActivityRecord extends ConfigurationContainer {
            outAppBounds.setEmpty();
        }

        // TODO(b/112288258): Remove below calculation because the position information in bounds
        // will be replaced by the offset of surface.
        final Rect appBounds = parentConfig.windowConfiguration.getAppBounds();
        if (appBounds != null) {
            final Rect outBounds = inOutConfig.windowConfiguration.getBounds();
            final int activityWidth = outBounds.width();
            final int navBarPosition = mAtmService.mWindowManager.getNavBarPosition(getDisplayId());
            if (navBarPosition == NAV_BAR_LEFT) {
                // Position the activity frame on the opposite side of the nav bar.
                outBounds.left = appBounds.right - activityWidth;
                outBounds.right = appBounds.right;
            } else if (navBarPosition == NAV_BAR_RIGHT) {
                // Position the activity frame on the opposite side of the nav bar.
                outBounds.left = 0;
                outBounds.right = activityWidth + appBounds.left;
            } else if (appBounds.width() > activityWidth) {
                // Horizontally center the frame.
                outBounds.left = appBounds.left + (appBounds.width() - activityWidth) / 2;
                outBounds.right = outBounds.left + activityWidth;
            }
        }

        task.computeConfigResourceOverrides(inOutConfig, parentConfig, insideParentBounds);
    }

+0 −3
Original line number Diff line number Diff line
@@ -2164,9 +2164,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
                // A modal window uses the whole compatibility bounds.
                flags |= FLAG_NOT_TOUCH_MODAL;
                mTmpRect.set(mAppToken.getResolvedOverrideBounds());
                // TODO(b/112288258): Remove the forced offset when the override bounds always
                // starts from zero (See {@link ActivityRecord#resolveOverrideConfiguration}).
                mTmpRect.offsetTo(0, 0);
            } else {
                // Non-modal uses the application based frame.
                mTmpRect.set(mWindowFrames.mCompatFrame);
+0 −32
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
import static com.android.server.policy.WindowManagerPolicy.NAV_BAR_BOTTOM;
import static com.android.server.policy.WindowManagerPolicy.NAV_BAR_LEFT;
import static com.android.server.policy.WindowManagerPolicy.NAV_BAR_RIGHT;
import static com.android.server.wm.ActivityStack.ActivityState.INITIALIZING;
import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
@@ -158,35 +155,6 @@ public class ActivityRecordTests extends ActivityTestsBase {
        assertTrue(mActivity.isState(STOPPED));
    }

    @Test
    public void testPositionLimitedAspectRatioNavBarBottom() {
        verifyPositionWithLimitedAspectRatio(NAV_BAR_BOTTOM, new Rect(0, 0, 1000, 2000), 1.5f,
                new Rect(0, 0, 1000, 1500));
    }

    @Test
    public void testPositionLimitedAspectRatioNavBarLeft() {
        verifyPositionWithLimitedAspectRatio(NAV_BAR_LEFT, new Rect(0, 0, 2000, 1000), 1.5f,
                new Rect(500, 0, 2000, 1000));
    }

    @Test
    public void testPositionLimitedAspectRatioNavBarRight() {
        verifyPositionWithLimitedAspectRatio(NAV_BAR_RIGHT, new Rect(0, 0, 2000, 1000), 1.5f,
                new Rect(0, 0, 1500, 1000));
    }

    private void verifyPositionWithLimitedAspectRatio(int navBarPosition, Rect taskBounds,
            float aspectRatio, Rect expectedActivityBounds) {
        // Verify with nav bar on the right.
        when(mService.mWindowManager.getNavBarPosition(mActivity.getDisplayId()))
                .thenReturn(navBarPosition);
        mTask.getConfiguration().windowConfiguration.setAppBounds(taskBounds);
        mActivity.info.maxAspectRatio = aspectRatio;
        ensureActivityConfiguration();
        assertEquals(expectedActivityBounds, mActivity.getBounds());
    }

    private void ensureActivityConfiguration() {
        mActivity.ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */);
    }