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

Commit 60450ddb authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "Content inset hint should consult PolicyControl."

parents 587f43d8 1db8b682
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2569,7 +2569,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    @Override
    public void getContentInsetHintLw(WindowManager.LayoutParams attrs, Rect contentInset) {
        final int fl = PolicyControl.getWindowFlags(null, attrs);
        final int systemUiVisibility = (attrs.systemUiVisibility|attrs.subtreeSystemUiVisibility);
        final int sysuiVis = PolicyControl.getSystemUiVisibility(null, attrs);
        final int systemUiVisibility = (sysuiVis | attrs.subtreeSystemUiVisibility);

        if ((fl & (FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR))
                == (FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR)) {
@@ -2953,7 +2954,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {

        final int fl = PolicyControl.getWindowFlags(win, attrs);
        final int sim = attrs.softInputMode;
        final int sysUiFl = PolicyControl.getSystemUiVisibility(win);
        final int sysUiFl = PolicyControl.getSystemUiVisibility(win, null);

        final Rect pf = mTmpParentFrame;
        final Rect df = mTmpDisplayFrame;
@@ -5078,7 +5079,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            return 0;
        }

        int tmpVisibility = PolicyControl.getSystemUiVisibility(win)
        int tmpVisibility = PolicyControl.getSystemUiVisibility(win, null)
                & ~mResettingSystemUiFlags
                & ~mForceClearedSystemUiFlags;
        if (mForcingShowNavBar && win.getSurfaceLayer() < mForcingShowNavBarLayer) {
+12 −11
Original line number Diff line number Diff line
@@ -61,16 +61,17 @@ public class PolicyControl {
    private static Filter sImmersiveStatusFilter;
    private static Filter sImmersiveNavigationFilter;

    public static int getSystemUiVisibility(WindowState win) {
        int vis = win.getSystemUiVisibility();
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(win)) {
    public static int getSystemUiVisibility(WindowState win, LayoutParams attrs) {
        attrs = attrs != null ? attrs : win.getAttrs();
        int vis = win != null ? win.getSystemUiVisibility() : attrs.systemUiVisibility;
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(attrs)) {
            vis |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
            vis &= ~(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.STATUS_BAR_TRANSLUCENT);
        }
        if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(win)) {
        if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(attrs)) {
            vis |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
@@ -81,20 +82,22 @@ public class PolicyControl {
    }

    public static int getWindowFlags(WindowState win, LayoutParams attrs) {
        int flags = (attrs != null ? attrs : win.getAttrs()).flags;
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(win)) {
        attrs = attrs != null ? attrs : win.getAttrs();
        int flags = attrs.flags;
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(attrs)) {
            flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
            flags &= ~(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        }
        if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(win)) {
        if (sImmersiveNavigationFilter != null && sImmersiveNavigationFilter.matches(attrs)) {
            flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
        }
        return flags;
    }

    public static int adjustClearableFlags(WindowState win, int clearableFlags) {
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(win)) {
        final LayoutParams attrs = win != null ? win.getAttrs() : null;
        if (sImmersiveStatusFilter != null && sImmersiveStatusFilter.matches(attrs)) {
            clearableFlags &= ~View.SYSTEM_UI_FLAG_FULLSCREEN;
        }
        return clearableFlags;
@@ -187,9 +190,7 @@ public class PolicyControl {
            mBlacklist = blacklist;
        }

        boolean matches(WindowState win) {
            if (win == null) return false;
            LayoutParams attrs = win.getAttrs();
        boolean matches(LayoutParams attrs) {
            if (attrs == null) return false;
            boolean isApp = attrs.type >= WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW
                    && attrs.type <= WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;