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

Commit 533f9319 authored by Tiger's avatar Tiger
Browse files

Treat non-existing types as controllable types for compatibility

If a device doesn't have a navigation bar, the legacy system UI flag
framework would still work as if there is a navigation bar. This CL
makes the behavior compatible.

It has been broken since cfebf43a

Fix: 283882543
Test: atest LayoutTests#testAddingImmersiveWindow
Change-Id: I0f9f659f87222e081716c2093e187e10f7d3bdde
parent fa25a8e1
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -658,6 +658,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
    /** Set of inset types which cannot be controlled by the user animation */
    private @InsetsType int mDisabledUserAnimationInsetsTypes;

    /** Set of inset types which are existing */
    private @InsetsType int mExistingTypes = 0;

    /** Set of inset types which are visible */
    private @InsetsType int mVisibleTypes = WindowInsets.Type.defaultVisible();

@@ -906,6 +909,12 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
            }
            mVisibleTypes = visibleTypes;
        }
        if (mExistingTypes != existingTypes) {
            if (WindowInsets.Type.hasCompatSystemBars(mExistingTypes ^ existingTypes)) {
                mCompatSysUiVisibilityStaled = true;
            }
            mExistingTypes = existingTypes;
        }
        InsetsState.traverse(mState, newState, mRemoveGoneSources);

        updateDisabledUserAnimationTypes(disabledUserAnimationTypes);
@@ -1662,7 +1671,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
        if (mCompatSysUiVisibilityStaled) {
            mCompatSysUiVisibilityStaled = false;
            mHost.updateCompatSysUiVisibility(
                    mVisibleTypes, mRequestedVisibleTypes, mControllableTypes);
                    // Treat non-existing types as controllable types for compatibility.
                    mVisibleTypes, mRequestedVisibleTypes, mControllableTypes | ~mExistingTypes);
        }
    }