• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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