diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java | 11 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt | 93 |
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 |