Merge "Add flag to hide nav bar window in favor of taskbar." into tm-qpr-dev

This commit is contained in:
Vinit Nayak
2022-08-02 03:53:45 +00:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 4 deletions

View File

@@ -196,6 +196,10 @@ public class Flags {
new DeviceConfigBooleanFlag(1102, "record_task_content", new DeviceConfigBooleanFlag(1102, "record_task_content",
NAMESPACE_WINDOW_MANAGER, false, true); NAMESPACE_WINDOW_MANAGER, false, true);
@Keep
public static final SysPropBooleanFlag HIDE_NAVBAR_WINDOW =
new SysPropBooleanFlag(1103, "persist.wm.debug.hide_navbar_window", false);
// 1200 - predictive back // 1200 - predictive back
@Keep @Keep
public static final SysPropBooleanFlag WM_ENABLE_PREDICTIVE_BACK = new SysPropBooleanFlag( public static final SysPropBooleanFlag WM_ENABLE_PREDICTIVE_BACK = new SysPropBooleanFlag(

View File

@@ -51,6 +51,8 @@ import com.android.systemui.Dumpable;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.model.SysUiState; import com.android.systemui.model.SysUiState;
import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.QuickStepContract;
@@ -82,6 +84,7 @@ public class NavigationBarController implements
private final Context mContext; private final Context mContext;
private final Handler mHandler; private final Handler mHandler;
private final NavigationBarComponent.Factory mNavigationBarComponentFactory; private final NavigationBarComponent.Factory mNavigationBarComponentFactory;
private FeatureFlags mFeatureFlags;
private final DisplayManager mDisplayManager; private final DisplayManager mDisplayManager;
private final TaskbarDelegate mTaskbarDelegate; private final TaskbarDelegate mTaskbarDelegate;
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@@ -113,10 +116,12 @@ public class NavigationBarController implements
AutoHideController autoHideController, AutoHideController autoHideController,
LightBarController lightBarController, LightBarController lightBarController,
Optional<Pip> pipOptional, Optional<Pip> pipOptional,
Optional<BackAnimation> backAnimation) { Optional<BackAnimation> backAnimation,
FeatureFlags featureFlags) {
mContext = context; mContext = context;
mHandler = mainHandler; mHandler = mainHandler;
mNavigationBarComponentFactory = navigationBarComponentFactory; mNavigationBarComponentFactory = navigationBarComponentFactory;
mFeatureFlags = featureFlags;
mDisplayManager = mContext.getSystemService(DisplayManager.class); mDisplayManager = mContext.getSystemService(DisplayManager.class);
commandQueue.addCallback(this); commandQueue.addCallback(this);
configurationController.addCallback(this); configurationController.addCallback(this);
@@ -217,7 +222,10 @@ public class NavigationBarController implements
/** @return {@code true} if taskbar is enabled, false otherwise */ /** @return {@code true} if taskbar is enabled, false otherwise */
private boolean initializeTaskbarIfNecessary() { private boolean initializeTaskbarIfNecessary() {
if (mIsTablet) { // Enable for tablet or (phone AND flag is set); assuming phone = !mIsTablet
boolean taskbarEnabled = mIsTablet || mFeatureFlags.isEnabled(Flags.HIDE_NAVBAR_WINDOW);
if (taskbarEnabled) {
Trace.beginSection("NavigationBarController#initializeTaskbarIfNecessary"); Trace.beginSection("NavigationBarController#initializeTaskbarIfNecessary");
// Remove navigation bar when taskbar is showing // Remove navigation bar when taskbar is showing
removeNavigationBar(mContext.getDisplayId()); removeNavigationBar(mContext.getDisplayId());
@@ -226,7 +234,7 @@ public class NavigationBarController implements
} else { } else {
mTaskbarDelegate.destroy(); mTaskbarDelegate.destroy();
} }
return mIsTablet; return taskbarEnabled;
} }
@Override @Override
@@ -294,6 +302,10 @@ public class NavigationBarController implements
*/ */
@VisibleForTesting @VisibleForTesting
void createNavigationBar(Display display, Bundle savedState, RegisterStatusBarResult result) { void createNavigationBar(Display display, Bundle savedState, RegisterStatusBarResult result) {
if (initializeTaskbarIfNecessary()) {
return;
}
if (display == null) { if (display == null) {
return; return;
} }

View File

@@ -41,6 +41,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.Dependency; import com.android.systemui.Dependency;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.model.SysUiState; import com.android.systemui.model.SysUiState;
import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.CommandQueue;
@@ -96,7 +97,8 @@ public class NavigationBarControllerTest extends SysuiTestCase {
mock(AutoHideController.class), mock(AutoHideController.class),
mock(LightBarController.class), mock(LightBarController.class),
Optional.of(mock(Pip.class)), Optional.of(mock(Pip.class)),
Optional.of(mock(BackAnimation.class)))); Optional.of(mock(BackAnimation.class)),
mock(FeatureFlags.class)));
initializeNavigationBars(); initializeNavigationBars();
} }