1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.launcher3.taskbar 17 18 import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController 19 import com.android.launcher3.taskbar.overlay.TaskbarOverlayController 20 import com.android.systemui.shared.rotation.RotationButtonController 21 import org.junit.Before 22 import org.mockito.Mock 23 import org.mockito.MockitoAnnotations 24 25 /** 26 * Helper class to extend to get access to all controllers. Gotta be careful of your relationship 27 * with this class though, it can be quite... controlling. 28 */ 29 abstract class TaskbarBaseTestCase { 30 31 @Mock lateinit var taskbarActivityContext: TaskbarActivityContext 32 @Mock lateinit var taskbarDragController: TaskbarDragController 33 @Mock lateinit var navButtonController: TaskbarNavButtonController 34 @Mock lateinit var navbarButtonsViewController: NavbarButtonsViewController 35 @Mock lateinit var rotationButtonController: RotationButtonController 36 @Mock lateinit var taskbarDragLayerController: TaskbarDragLayerController 37 @Mock lateinit var taskbarScrimViewController: TaskbarScrimViewController 38 @Mock lateinit var taskbarViewController: TaskbarViewController 39 @Mock lateinit var taskbarUnfoldAnimationController: TaskbarUnfoldAnimationController 40 @Mock lateinit var taskbarKeyguardController: TaskbarKeyguardController 41 @Mock lateinit var stashedHandleViewController: StashedHandleViewController 42 @Mock lateinit var taskbarStashController: TaskbarStashController 43 @Mock lateinit var taskbarEduController: TaskbarEduController 44 @Mock lateinit var taskbarAutohideSuspendController: TaskbarAutohideSuspendController 45 @Mock lateinit var taskbarPopupController: TaskbarPopupController 46 @Mock 47 lateinit var taskbarForceVisibleImmersiveController: TaskbarForceVisibleImmersiveController 48 @Mock lateinit var taskbarAllAppsController: TaskbarAllAppsController 49 @Mock lateinit var taskbarInsetsController: TaskbarInsetsController 50 @Mock lateinit var voiceInteractionWindowController: VoiceInteractionWindowController 51 @Mock lateinit var taskbarRecentAppsController: TaskbarRecentAppsController 52 @Mock lateinit var taskbarTranslationController: TaskbarTranslationController 53 @Mock lateinit var taskbarSpringOnStashController: TaskbarSpringOnStashController 54 @Mock lateinit var taskbarOverlayController: TaskbarOverlayController 55 @Mock lateinit var taskbarEduTooltipController: TaskbarEduTooltipController 56 @Mock lateinit var keyboardQuickSwitchController: KeyboardQuickSwitchController 57 58 lateinit var taskbarControllers: TaskbarControllers 59 60 @Before setupnull61 open fun setup() { 62 /* 63 * NOTE: Mocking of controllers that are written in Kotlin won't work since their methods 64 * are final by default (and should not be changed only for tests), meaning unmockable. 65 * Womp, womp woooommmmppp. 66 * If you want to mock one of those methods, you need to make a parent interface that 67 * includes that method to allow mocking it. 68 */ 69 MockitoAnnotations.initMocks(this) 70 taskbarControllers = 71 TaskbarControllers( 72 taskbarActivityContext, 73 taskbarDragController, 74 navButtonController, 75 navbarButtonsViewController, 76 rotationButtonController, 77 taskbarDragLayerController, 78 taskbarViewController, 79 taskbarScrimViewController, 80 taskbarUnfoldAnimationController, 81 taskbarKeyguardController, 82 stashedHandleViewController, 83 taskbarStashController, 84 taskbarEduController, 85 taskbarAutohideSuspendController, 86 taskbarPopupController, 87 taskbarForceVisibleImmersiveController, 88 taskbarOverlayController, 89 taskbarAllAppsController, 90 taskbarInsetsController, 91 voiceInteractionWindowController, 92 taskbarTranslationController, 93 taskbarSpringOnStashController, 94 taskbarRecentAppsController, 95 taskbarEduTooltipController, 96 keyboardQuickSwitchController 97 ) 98 } 99 } 100