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

Commit b4eac9b5 authored by Tiger Huang's avatar Tiger Huang
Browse files

Use the real behavior to decide the animation

If the appearance or the behavior are not controlled by APIs,
InsetsController will still return the default values, but the
internal logic will access the real value.

Fix: 192635471
Test: Open an app which hides system bars with
      SYSTEM_UI_FLAG_IMMERSIVE_STICKY, but not
      BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE.
Change-Id: I1c2f947e3707fcb4c151c1ad19c9cd16527e11d9
parent 2b14f17e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -128,6 +128,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
         */
        @Appearance int getSystemBarsAppearance();

        default boolean isSystemBarsAppearanceControlled() {
            return false;
        }

        /**
         * @see WindowInsetsController#setSystemBarsBehavior
         */
@@ -138,6 +142,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
         */
        @Behavior int getSystemBarsBehavior();

        default boolean isSystemBarsBehaviorControlled() {
            return false;
        }

        /**
         * Releases a surface and ensure that this is done after {@link #applySurfaceParams} has
         * finished applying params.
@@ -1520,6 +1528,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation

    @Override
    public @Appearance int getSystemBarsAppearance() {
        if (!mHost.isSystemBarsAppearanceControlled()) {
            // We only return the requested appearance, not the implied one.
            return 0;
        }
        return mHost.getSystemBarsAppearance();
    }

@@ -1544,6 +1556,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation

    @Override
    public @Behavior int getSystemBarsBehavior() {
        if (!mHost.isSystemBarsBehaviorControlled()) {
            // We only return the requested behavior, not the implied one.
            return 0;
        }
        return mHost.getSystemBarsBehavior();
    }

+10 −8
Original line number Diff line number Diff line
@@ -180,13 +180,14 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {

    @Override
    public int getSystemBarsAppearance() {
        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) == 0) {
            // We only return the requested appearance, not the implied one.
            return 0;
        }
        return mViewRoot.mWindowAttributes.insetsFlags.appearance;
    }

    @Override
    public boolean isSystemBarsAppearanceControlled() {
        return (mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) != 0;
    }

    @Override
    public void setSystemBarsBehavior(int behavior) {
        mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
@@ -199,13 +200,14 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {

    @Override
    public int getSystemBarsBehavior() {
        if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) == 0) {
            // We only return the requested behavior, not the implied one.
            return 0;
        }
        return mViewRoot.mWindowAttributes.insetsFlags.behavior;
    }

    @Override
    public boolean isSystemBarsBehaviorControlled() {
        return (mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) != 0;
    }

    @Override
    public void releaseSurfaceControlFromRt(SurfaceControl surfaceControl) {