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

Commit b17c19e1 authored by Alex Stetson's avatar Alex Stetson
Browse files

Mark system bars as consumed when using remote insets

When using a remote insets controller, the system bars should be marked
as forced consumed to prevent individual applications from assuming the
bars are hidden via SystemUI flags.

Bug: 242592137
Test: manual
Change-Id: I4b29dfd48b573c68304c46f7ee45dc3be1792612
parent d184d81f
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -362,6 +362,7 @@ public class DisplayPolicy {
    private WindowState mTopFullscreenOpaqueWindowState;
    private boolean mTopIsFullscreen;
    private int mNavBarOpacityMode = NAV_BAR_OPAQUE_WHEN_FREEFORM_OR_DOCKED;
    private boolean mForceConsumeSystemBars;
    private boolean mForceShowSystemBars;

    private boolean mShowingDream;
@@ -1561,6 +1562,13 @@ public class DisplayPolicy {
        return ANIMATION_STYLEABLE;
    }

    /**
     * @return true if the system bars are forced to be consumed
     */
    public boolean areSystemBarsForcedConsumedLw() {
        return mForceConsumeSystemBars;
    }

    /**
     * @return true if the system bars are forced to stay visible
     */
@@ -2463,6 +2471,10 @@ public class DisplayPolicy {
        // We need to force showing system bars when the multi-window or freeform root task is
        // visible.
        mForceShowSystemBars = multiWindowTaskVisible || freeformRootTaskVisible;
        // We need to force the consumption of the system bars if they are force shown or if they
        // are controlled by a remote insets controller.
        mForceConsumeSystemBars = mForceShowSystemBars
                || mDisplayContent.getInsetsPolicy().remoteInsetsControllerControlsSystemBars(win);
        mDisplayContent.getInsetsPolicy().updateBarControlTarget(win);

        final boolean topAppHidesStatusBar = topAppHidesStatusBar();
+3 −3
Original line number Diff line number Diff line
@@ -1831,7 +1831,7 @@ public class WindowManagerService extends IWindowManager.Stub
                prepareNoneTransitionForRelaunching(activity);
            }

            if (displayPolicy.areSystemBarsForcedShownLw()) {
            if (displayPolicy.areSystemBarsForcedConsumedLw()) {
                res |= WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS;
            }

@@ -2557,7 +2557,7 @@ public class WindowManagerService extends IWindowManager.Stub
            if (win.mActivityRecord != null) {
                win.mActivityRecord.updateReportedVisibilityLocked();
            }
            if (displayPolicy.areSystemBarsForcedShownLw()) {
            if (displayPolicy.areSystemBarsForcedConsumedLw()) {
                result |= WindowManagerGlobal.RELAYOUT_RES_CONSUME_ALWAYS_SYSTEM_BARS;
            }
            if (!win.isGoneForLayout()) {
@@ -8879,7 +8879,7 @@ public class WindowManagerService extends IWindowManager.Stub
                            : overrideScale;
                    outInsetsState.scale(1f / compatScale);
                }
                return dc.getDisplayPolicy().areSystemBarsForcedShownLw();
                return dc.getDisplayPolicy().areSystemBarsForcedConsumedLw();
            }
        } finally {
            Binder.restoreCallingIdentity(origId);
+1 −1
Original line number Diff line number Diff line
@@ -3918,7 +3918,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        final boolean forceRelayout = syncWithBuffers || isDragResizeChanged;
        final DisplayContent displayContent = getDisplayContent();
        final boolean alwaysConsumeSystemBars =
                displayContent.getDisplayPolicy().areSystemBarsForcedShownLw();
                displayContent.getDisplayPolicy().areSystemBarsForcedConsumedLw();
        final int displayId = displayContent.getDisplayId();

        if (isDragResizeChanged) {