diff options
| author | 2018-08-03 17:20:17 +0800 | |
|---|---|---|
| committer | 2018-08-10 20:10:45 +0800 | |
| commit | a90dea4d070d4a9a369fa351259210eb418dd12f (patch) | |
| tree | 1178f9e851f3bf4620c814731b98455a45296fa1 | |
| parent | 60e224519c9419d0c9b71b4a5e138a227f2eb0be (diff) | |
Rename PRIVATE_FLAG_STATUS_BAR_EXPANDED
New name: PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION
This flag indicates that status bar is in a state that the user may
require navigation bar to interact with. So rename it to match its
meaning for better understanding.
Bug: 80147982
Test: 1. Launch a show-when-locked turn-screen-on immersive app on
AOD, and see if any system bar flashes.
2. Launch a show-when-locked turn-screen-on immersive app on
lockscreen, and see if any system bar flashes.
3. Launch an immersive app and drag down the status bar, see
if nav bar keeps there as long as status bar is expanded.
Change-Id: I8870814761d798aca06d18cf0ebf7655333e7c3b
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); |