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

Commit 85418878 authored by Tiger Huang's avatar Tiger Huang Committed by android-build-merger
Browse files

Merge "Don't flash system bars while showing an immersive app on lockscreen" into pi-dev

am: 11768fd8

Change-Id: Ia6a5c56e2603c6e6fe06e7da1dd7dcade3465cd0
parents d2d0955e 11768fd8
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -1692,6 +1692,15 @@ public interface WindowManager extends ViewManager {
        @RequiresPermission(permission.STATUS_BAR_SERVICE)
        public static final int PRIVATE_FLAG_IS_SCREEN_DECOR = 0x00400000;

        /**
         * Flag to indicate that the status bar window is now in an explicit expanded state, meaning
         * that status bar will not be hidden by any window with flag {@link #FLAG_FULLSCREEN} or
         * {@link View#SYSTEM_UI_FLAG_FULLSCREEN} set.
         * This can only be set by {@link LayoutParams#TYPE_STATUS_BAR}.
         * @hide
         */
        public static final int PRIVATE_FLAG_STATUS_BAR_EXPANDED = 0x00800000;

        /**
         * Control flags that are private to the platform.
         * @hide
@@ -1780,7 +1789,11 @@ public interface WindowManager extends ViewManager {
                @ViewDebug.FlagToString(
                        mask = PRIVATE_FLAG_IS_SCREEN_DECOR,
                        equals = PRIVATE_FLAG_IS_SCREEN_DECOR,
                        name = "IS_SCREEN_DECOR")
                        name = "IS_SCREEN_DECOR"),
                @ViewDebug.FlagToString(
                        mask = PRIVATE_FLAG_STATUS_BAR_EXPANDED,
                        equals = PRIVATE_FLAG_STATUS_BAR_EXPANDED,
                        name = "STATUS_BAR_EXPANDED")
        })
        @TestApi
        public int privateFlags;
+10 −0
Original line number Diff line number Diff line
@@ -180,6 +180,15 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D
        mLpChanged.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
    }

    private void applyExpandedFlag(State state) {
        if (state.panelExpanded || state.isKeyguardShowingAndNotOccluded() || state.bouncerShowing
                || ENABLE_REMOTE_INPUT && state.remoteInputActive) {
            mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_STATUS_BAR_EXPANDED;
        } else {
            mLpChanged.privateFlags &= ~LayoutParams.PRIVATE_FLAG_STATUS_BAR_EXPANDED;
        }
    }

    private void applyHeight(State state) {
        boolean expanded = isExpanded(state);
        if (state.forcePluginOpen) {
@@ -234,6 +243,7 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D
        applyKeyguardFlags(state);
        applyForceStatusBarVisibleFlag(state);
        applyFocusableFlag(state);
        applyExpandedFlag(state);
        adjustScreenOrientation(state);
        applyHeight(state);
        applyUserActivityTimeout(state);
+1 −1
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ public class BarController {
    }

    protected boolean skipAnimation() {
        return false;
        return !mWin.isDrawnLw();
    }

    private int computeStateLw(boolean wasVis, boolean wasAnim, WindowState win, boolean change) {
+5 −6
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_ROUNDED_CO
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_STATUS_BAR_EXPANDED;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_SYSTEM_ERROR;
import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_CROSSFADE;
import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_JUMPCUT;
@@ -4684,8 +4685,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                navTranslucent &= areTranslucentBarsAllowed();
            }
            boolean statusBarExpandedNotKeyguard = !isKeyguardShowing && mStatusBar != null
                    && mStatusBar.getAttrs().height == MATCH_PARENT
                    && mStatusBar.getAttrs().width == MATCH_PARENT;
                    && (mStatusBar.getAttrs().privateFlags & PRIVATE_FLAG_STATUS_BAR_EXPANDED) != 0;

            // When the navigation bar isn't visible, we put up a fake input window to catch all
            // touch events. This way we can detect when the user presses anywhere to bring back the
@@ -5688,7 +5688,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }

        // Take note if a window wants to acquire a sleep token.
        if (win.isVisibleLw() && (attrs.privateFlags & PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN) != 0
        if ((attrs.privateFlags & PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN) != 0
                && win.canAcquireSleepToken()) {
            mWindowSleepTokenNeeded = true;
        }
@@ -5744,9 +5744,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                mStatusBarController.setShowTransparent(true /* transparent */);
            }

            WindowManager.LayoutParams statusBarAttrs = mStatusBar.getAttrs();
            boolean statusBarExpanded = statusBarAttrs.height == MATCH_PARENT
                    && statusBarAttrs.width == MATCH_PARENT;
            boolean statusBarExpanded =
                    (mStatusBar.getAttrs().privateFlags & PRIVATE_FLAG_STATUS_BAR_EXPANDED) != 0;
            boolean topAppHidesStatusBar = topAppHidesStatusBar();
            if (mForceStatusBar || mForceStatusBarFromKeyguard || mForceStatusBarTransparent
                    || statusBarExpanded) {