diff options
2 files changed, 19 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java index b177b0b4e4b3..1c2a0871f3f9 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java @@ -23,6 +23,7 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGAT import static com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler.DEBUG_MISSING_GESTURE_TAG; import static com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen; import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; +import static com.android.wm.shell.Flags.enableTaskbarOnPhones; import android.content.Context; import android.content.pm.ActivityInfo; @@ -285,8 +286,10 @@ public class NavigationBarControllerImpl implements @VisibleForTesting boolean supportsTaskbar() { - // Enable for tablets, unfolded state on a foldable device or (non handheld AND flag is set) - return mIsLargeScreen || (!mIsPhone && enableTaskbarNavbarUnification()); + // Enable for tablets, unfolded state on a foldable device, (non handheld AND flag is set), + // or handheld when enableTaskbarOnPhones() returns true. + boolean foldedOrPhone = !mIsPhone || enableTaskbarOnPhones(); + return mIsLargeScreen || (foldedOrPhone && enableTaskbarNavbarUnification()); } private final CommandQueue.Callbacks mCommandQueueCallbacks = new CommandQueue.Callbacks() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java index d5361acba308..df8eafe2ea2a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java @@ -21,6 +21,7 @@ import static android.view.Display.INVALID_DISPLAY; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; +import static com.android.wm.shell.Flags.enableTaskbarOnPhones; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -142,10 +143,11 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { @Test public void testCreateNavigationBarsIncludeDefaultTrue() { - assumeFalse(enableTaskbarNavbarUnification()); + assumeFalse(enableTaskbarNavbarUnification() && enableTaskbarOnPhones()); // Large screens may be using taskbar and the logic is different mNavigationBarController.mIsLargeScreen = false; + mNavigationBarController.mIsPhone = true; doNothing().when(mNavigationBarController).createNavigationBar(any(), any(), any()); mNavigationBarController.createNavigationBars(true, null); @@ -291,6 +293,17 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { @Test public void testShouldRenderTaskbar_taskbarNotRenderedOnPhone() { + assumeFalse(enableTaskbarOnPhones()); + + mNavigationBarController.mIsLargeScreen = false; + mNavigationBarController.mIsPhone = true; + assertFalse(mNavigationBarController.supportsTaskbar()); + } + + @Test + public void testShouldRenderTaskbar_taskbarRenderedOnPhone() { + assumeTrue(enableTaskbarNavbarUnification() && enableTaskbarOnPhones()); + mNavigationBarController.mIsLargeScreen = false; mNavigationBarController.mIsPhone = true; assertFalse(mNavigationBarController.supportsTaskbar()); |