summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tracy Zhou <tracyzhou@google.com> 2021-09-03 23:43:54 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-09-03 23:43:54 +0000
commit24bea48811fbf4758d896eaa7905f0dd6abdb82d (patch)
tree87ec74f72b29b8685f2dcdd5a9f4a240b8ecf249
parent5e68bf3be310e3321badd7883f4ed528c3120f0f (diff)
parent962eab3009eec10068edeae0342a6bfd75011366 (diff)
Merge "Revert "Revert "Support immersive mode with task bar""" into sc-v2-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
index e0caf125084a..3167070e2c3e 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
@@ -18,20 +18,27 @@ package com.android.systemui.navigationbar;
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;
+import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
+import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
+import android.app.StatusBarManager;
+import android.app.StatusBarManager.WindowVisibleState;
import android.content.Context;
import android.inputmethodservice.InputMethodService;
import android.os.IBinder;
import android.view.InsetsVisibilities;
import android.view.View;
+import android.view.WindowInsetsController.Behavior;
import com.android.internal.view.AppearanceRegion;
import com.android.systemui.Dependency;
@@ -60,6 +67,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
private final NavigationBarA11yHelper.NavA11yEventListener mNavA11yEventListener =
this::updateSysuiFlags;
private int mDisabledFlags;
+ private @WindowVisibleState int mTaskBarWindowState = WINDOW_STATE_SHOWING;
+ private @Behavior int mBehavior;
@Inject
public TaskbarDelegate(Context context) {
@@ -114,6 +123,9 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
(mDisabledFlags & View.STATUS_BAR_DISABLE_HOME) != 0)
.setFlag(SYSUI_STATE_BACK_DISABLED,
(mDisabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0)
+ .setFlag(SYSUI_STATE_NAV_BAR_HIDDEN, !isWindowVisible())
+ .setFlag(SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY,
+ allowSystemGestureIgnoringBarVisibility())
.commitUpdate(mDisplayId);
}
@@ -130,6 +142,16 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
}
@Override
+ public void setWindowState(int displayId, int window, int state) {
+ if (displayId == mDisplayId
+ && window == StatusBarManager.WINDOW_NAVIGATION_BAR
+ && mTaskBarWindowState != state) {
+ mTaskBarWindowState = state;
+ updateSysuiFlags();
+ }
+ }
+
+ @Override
public void onRotationProposal(int rotation, boolean isValid) {
mOverviewProxyService.onRotationProposal(rotation, isValid);
}
@@ -146,6 +168,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
InsetsVisibilities requestedVisibilities, String packageName) {
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
+ if (mBehavior != behavior) {
+ mBehavior = behavior;
+ updateSysuiFlags();
+ }
}
@Override
@@ -161,4 +187,12 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
public void onNavigationModeChanged(int mode) {
mEdgeBackGestureHandler.onNavigationModeChanged(mode);
}
+
+ private boolean isWindowVisible() {
+ return mTaskBarWindowState == WINDOW_STATE_SHOWING;
+ }
+
+ private boolean allowSystemGestureIgnoringBarVisibility() {
+ return mBehavior != BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
+ }
}