summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java11
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt93
2 files changed, 101 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
index ac7c70bd1d9e..f60d7ea8d664 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
@@ -55,6 +55,7 @@ import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
import com.android.internal.statusbar.LetterboxDetails;
import com.android.internal.view.AppearanceRegion;
@@ -125,7 +126,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
private final DisplayManager mDisplayManager;
private Context mWindowContext;
private ScreenPinningNotify mScreenPinningNotify;
- private int mNavigationMode;
+ private int mNavigationMode = -1;
private final Consumer<Rect> mPipListener;
/**
@@ -217,8 +218,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
parseCurrentSysuiState();
mCommandQueue.addCallback(this);
mOverviewProxyService.addCallback(this);
- mEdgeBackGestureHandler.onNavigationModeChanged(
- mNavigationModeController.addListener(this));
+ onNavigationModeChanged(mNavigationModeController.addListener(this));
mNavBarHelper.registerNavTaskStateUpdater(mNavbarTaskbarStateUpdater);
mNavBarHelper.init();
mEdgeBackGestureHandler.onNavBarAttached();
@@ -492,6 +492,11 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
!QuickStepContract.isGesturalMode(mNavigationMode));
}
+ @VisibleForTesting
+ int getNavigationMode() {
+ return mNavigationMode;
+ }
+
@Override
public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("TaskbarDelegate (displayId=" + mDisplayId + "):");
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt
new file mode 100644
index 000000000000..1742c6994246
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt
@@ -0,0 +1,93 @@
+package com.android.systemui.navigationbar
+
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.dump.DumpManager
+import com.android.systemui.model.SysUiState
+import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler
+import com.android.systemui.recents.OverviewProxyService
+import com.android.systemui.statusbar.CommandQueue
+import com.android.systemui.statusbar.phone.AutoHideController
+import com.android.systemui.statusbar.phone.LightBarController
+import com.android.systemui.statusbar.phone.LightBarTransitionsController
+import com.android.wm.shell.back.BackAnimation
+import com.android.wm.shell.pip.Pip
+import org.junit.Before
+import org.junit.Test
+import org.mockito.Mock
+import org.mockito.Mockito.`when`
+import org.mockito.Mockito.any
+import org.mockito.Mockito.anyBoolean
+import org.mockito.Mockito.anyInt
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
+import org.mockito.MockitoAnnotations
+import java.util.Optional
+
+@SmallTest
+class TaskbarDelegateTest : SysuiTestCase() {
+ val DISPLAY_ID = 0;
+ val MODE_GESTURE = 0;
+ val MODE_THREE_BUTTON = 1;
+
+ private lateinit var mTaskbarDelegate: TaskbarDelegate
+ @Mock
+ lateinit var mEdgeBackGestureHandlerFactory : EdgeBackGestureHandler.Factory
+ @Mock
+ lateinit var mEdgeBackGestureHandler : EdgeBackGestureHandler
+ @Mock
+ lateinit var mLightBarControllerFactory : LightBarTransitionsController.Factory
+ @Mock
+ lateinit var mLightBarTransitionController: LightBarTransitionsController
+ @Mock
+ lateinit var mCommandQueue: CommandQueue
+ @Mock
+ lateinit var mOverviewProxyService: OverviewProxyService
+ @Mock
+ lateinit var mNavBarHelper: NavBarHelper
+ @Mock
+ lateinit var mNavigationModeController: NavigationModeController
+ @Mock
+ lateinit var mSysUiState: SysUiState
+ @Mock
+ lateinit var mDumpManager: DumpManager
+ @Mock
+ lateinit var mAutoHideController: AutoHideController
+ @Mock
+ lateinit var mLightBarController: LightBarController
+ @Mock
+ lateinit var mOptionalPip: Optional<Pip>
+ @Mock
+ lateinit var mBackAnimation: BackAnimation
+ @Mock
+ lateinit var mCurrentSysUiState: NavBarHelper.CurrentSysuiState
+
+ @Before
+ fun setup() {
+ MockitoAnnotations.initMocks(this)
+ `when`(mEdgeBackGestureHandlerFactory.create(context)).thenReturn(mEdgeBackGestureHandler)
+ `when`(mLightBarControllerFactory.create(any())).thenReturn(mLightBarTransitionController)
+ `when`(mNavBarHelper.currentSysuiState).thenReturn(mCurrentSysUiState)
+ `when`(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState)
+ mTaskbarDelegate = TaskbarDelegate(context, mEdgeBackGestureHandlerFactory,
+ mLightBarControllerFactory)
+ mTaskbarDelegate.setDependencies(mCommandQueue, mOverviewProxyService, mNavBarHelper,
+ mNavigationModeController, mSysUiState, mDumpManager, mAutoHideController,
+ mLightBarController, mOptionalPip, mBackAnimation)
+ }
+
+ @Test
+ fun navigationModeInitialized() {
+ `when`(mNavigationModeController.addListener(any())).thenReturn(MODE_THREE_BUTTON)
+ assert(mTaskbarDelegate.navigationMode == -1)
+ mTaskbarDelegate.init(DISPLAY_ID)
+ assert(mTaskbarDelegate.navigationMode == MODE_THREE_BUTTON)
+ }
+
+ @Test
+ fun navigationModeInitialized_notifyEdgeBackHandler() {
+ `when`(mNavigationModeController.addListener(any())).thenReturn(MODE_GESTURE)
+ mTaskbarDelegate.init(DISPLAY_ID)
+ verify(mEdgeBackGestureHandler, times(1)).onNavigationModeChanged(MODE_GESTURE)
+ }
+} \ No newline at end of file