diff options
3 files changed, 29 insertions, 29 deletions
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index 8c7ac731b3e3..d7a5d68ea404 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -1692,13 +1692,13 @@ public interface WindowManager extends ViewManager { 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}. + * Flag to indicate that the status bar window is in a state such that it forces showing + * the navigation bar unless the navigation bar window is explicitly set to + * {@link View#GONE}. + * It only takes effects if this is set by {@link LayoutParams#TYPE_STATUS_BAR}. * @hide */ - public static final int PRIVATE_FLAG_STATUS_BAR_EXPANDED = 0x00800000; + public static final int PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION = 0x00800000; /** * Control flags that are private to the platform. @@ -1790,9 +1790,9 @@ public interface WindowManager extends ViewManager { equals = PRIVATE_FLAG_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") + mask = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, + equals = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, + name = "STATUS_FORCE_SHOW_NAVIGATION") }) @TestApi public int privateFlags; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java index a38328a8161e..a5716f2c2c09 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java @@ -180,12 +180,12 @@ 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 + private void applyForceShowNavigationFlag(State state) { + if (state.panelExpanded || state.bouncerShowing || ENABLE_REMOTE_INPUT && state.remoteInputActive) { - mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_STATUS_BAR_EXPANDED; + mLpChanged.privateFlags |= LayoutParams.PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION; } else { - mLpChanged.privateFlags &= ~LayoutParams.PRIVATE_FLAG_STATUS_BAR_EXPANDED; + mLpChanged.privateFlags &= ~LayoutParams.PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION; } } @@ -243,7 +243,7 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D applyKeyguardFlags(state); applyForceStatusBarVisibleFlag(state); applyFocusableFlag(state); - applyExpandedFlag(state); + applyForceShowNavigationFlag(state); adjustScreenOrientation(state); applyHeight(state); applyUserActivityTimeout(state); diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 5769207e8536..d15271cc2730 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -76,7 +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_STATUS_FORCE_SHOW_NAVIGATION; 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; @@ -128,7 +128,6 @@ import static android.view.WindowManagerGlobal.ADD_PERMISSION_DENIED; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVERED; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_COVER_ABSENT; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.CAMERA_LENS_UNCOVERED; -import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_ABSENT; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_CLOSED; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_OPEN; import static com.android.server.wm.WindowManagerPolicyProto.FOCUSED_APP_TOKEN; @@ -223,7 +222,6 @@ import android.service.vr.IPersistentVrStateCallbacks; import android.speech.RecognizerIntent; import android.telecom.TelecomManager; import android.util.ArraySet; -import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Log; import android.util.LongSparseArray; @@ -269,7 +267,6 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.policy.IKeyguardDismissCallback; import com.android.internal.policy.IShortcutService; -import com.android.internal.policy.KeyguardDismissCallback; import com.android.internal.policy.PhoneWindow; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.ArrayUtils; @@ -4331,8 +4328,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!isKeyguardShowing) { navTranslucent &= areTranslucentBarsAllowed(); } - boolean statusBarExpandedNotKeyguard = !isKeyguardShowing && mStatusBar != null - && (mStatusBar.getAttrs().privateFlags & PRIVATE_FLAG_STATUS_BAR_EXPANDED) != 0; + boolean statusBarForcesShowingNavigation = !isKeyguardShowing && mStatusBar != null + && (mStatusBar.getAttrs().privateFlags + & PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION) != 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 @@ -4358,7 +4356,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { navVisible |= !canHideNavigationBar(); boolean updateSysUiVisibility = layoutNavigationBar(displayFrames, uiMode, navVisible, - navTranslucent, navAllowedHidden, statusBarExpandedNotKeyguard); + navTranslucent, navAllowedHidden, statusBarForcesShowingNavigation); if (DEBUG_LAYOUT) Slog.i(TAG, "mDock rect:" + displayFrames.mDock); updateSysUiVisibility |= layoutStatusBar(displayFrames, sysui, isKeyguardShowing); if (updateSysUiVisibility) { @@ -4511,7 +4509,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean layoutNavigationBar(DisplayFrames displayFrames, int uiMode, boolean navVisible, boolean navTranslucent, boolean navAllowedHidden, - boolean statusBarExpandedNotKeyguard) { + boolean statusBarForcesShowingNavigation) { if (mNavigationBar == null) { return false; } @@ -4545,7 +4543,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { = displayFrames.mRestrictedOverscan.bottom = top; } else { // We currently want to hide the navigation UI - unless we expanded the status bar. - mNavigationBarController.setBarShowingLw(statusBarExpandedNotKeyguard); + mNavigationBarController.setBarShowingLw(statusBarForcesShowingNavigation); } if (navVisible && !navTranslucent && !navAllowedHidden && !mNavigationBar.isAnimatingLw() @@ -4568,7 +4566,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { = displayFrames.mRestrictedOverscan.right = left; } else { // We currently want to hide the navigation UI - unless we expanded the status bar. - mNavigationBarController.setBarShowingLw(statusBarExpandedNotKeyguard); + mNavigationBarController.setBarShowingLw(statusBarForcesShowingNavigation); } if (navVisible && !navTranslucent && !navAllowedHidden && !mNavigationBar.isAnimatingLw() @@ -4591,7 +4589,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { displayFrames.mRestrictedOverscan.left = right; } else { // We currently want to hide the navigation UI - unless we expanded the status bar. - mNavigationBarController.setBarShowingLw(statusBarExpandedNotKeyguard); + mNavigationBarController.setBarShowingLw(statusBarForcesShowingNavigation); } if (navVisible && !navTranslucent && !navAllowedHidden && !mNavigationBar.isAnimatingLw() @@ -5401,19 +5399,21 @@ public class PhoneWindowManager implements WindowManagerPolicy { mStatusBarController.setShowTransparent(true /* transparent */); } - boolean statusBarExpanded = - (mStatusBar.getAttrs().privateFlags & PRIVATE_FLAG_STATUS_BAR_EXPANDED) != 0; + boolean statusBarForcesShowingNavigation + = (mStatusBar.getAttrs().privateFlags + & PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION) != 0; boolean topAppHidesStatusBar = topAppHidesStatusBar(); if (mForceStatusBar || mForceStatusBarFromKeyguard || mForceStatusBarTransparent - || statusBarExpanded) { + || statusBarForcesShowingNavigation) { if (DEBUG_LAYOUT) Slog.v(TAG, "Showing status bar: forced"); if (mStatusBarController.setBarShowingLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; } // Maintain fullscreen layout until incoming animation is complete. topIsFullscreen = mTopIsFullscreen && mStatusBar.isAnimatingLw(); - // Transient status bar on the lockscreen is not allowed - if ((mForceStatusBarFromKeyguard || statusBarExpanded) + // Transient status bar is not allowed if status bar is on lockscreen or status bar + // is expecting the navigation keys from the user. + if ((mForceStatusBarFromKeyguard || statusBarForcesShowingNavigation) && mStatusBarController.isTransientShowing()) { mStatusBarController.updateVisibilityLw(false /*transientAllowed*/, mLastSystemUiFlags, mLastSystemUiFlags); |