• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 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 
17 package com.android.systemui.keyboard.shortcut
18 
19 import android.app.role.mockRoleManager
20 import android.content.applicationContext
21 import android.content.res.mainResources
22 import android.hardware.input.fakeInputManager
23 import android.os.fakeExecutorHandler
24 import android.view.windowManager
25 import com.android.systemui.broadcast.broadcastDispatcher
26 import com.android.systemui.concurrency.fakeExecutor
27 import com.android.systemui.keyboard.shortcut.data.repository.AppLaunchDataRepository
28 import com.android.systemui.keyboard.shortcut.data.repository.CustomInputGesturesRepository
29 import com.android.systemui.keyboard.shortcut.data.repository.CustomShortcutCategoriesRepository
30 import com.android.systemui.keyboard.shortcut.data.repository.DefaultShortcutCategoriesRepository
31 import com.android.systemui.keyboard.shortcut.data.repository.InputGestureDataAdapter
32 import com.android.systemui.keyboard.shortcut.data.repository.InputGestureMaps
33 import com.android.systemui.keyboard.shortcut.data.repository.ShortcutCategoriesUtils
34 import com.android.systemui.keyboard.shortcut.data.repository.ShortcutHelperCustomizationModeRepository
35 import com.android.systemui.keyboard.shortcut.data.repository.ShortcutHelperInputDeviceRepository
36 import com.android.systemui.keyboard.shortcut.data.repository.ShortcutHelperStateRepository
37 import com.android.systemui.keyboard.shortcut.data.repository.ShortcutHelperTestHelper
38 import com.android.systemui.keyboard.shortcut.data.repository.UserVisibleAppsRepository
39 import com.android.systemui.keyboard.shortcut.data.source.AccessibilityShortcutsSource
40 import com.android.systemui.keyboard.shortcut.data.source.AppCategoriesShortcutsSource
41 import com.android.systemui.keyboard.shortcut.data.source.CurrentAppShortcutsSource
42 import com.android.systemui.keyboard.shortcut.data.source.InputShortcutsSource
43 import com.android.systemui.keyboard.shortcut.data.source.KeyboardShortcutGroupsSource
44 import com.android.systemui.keyboard.shortcut.data.source.MultitaskingShortcutsSource
45 import com.android.systemui.keyboard.shortcut.data.source.SystemShortcutsSource
46 import com.android.systemui.keyboard.shortcut.domain.interactor.ShortcutCustomizationInteractor
47 import com.android.systemui.keyboard.shortcut.domain.interactor.ShortcutHelperCategoriesInteractor
48 import com.android.systemui.keyboard.shortcut.domain.interactor.ShortcutHelperCustomizationModeInteractor
49 import com.android.systemui.keyboard.shortcut.domain.interactor.ShortcutHelperStateInteractor
50 import com.android.systemui.keyboard.shortcut.fakes.FakeLauncherApps
51 import com.android.systemui.keyboard.shortcut.shared.model.ShortcutHelperExclusions
52 import com.android.systemui.keyboard.shortcut.ui.ShortcutCustomizationDialogStarter
53 import com.android.systemui.keyboard.shortcut.ui.viewmodel.ShortcutCustomizationViewModel
54 import com.android.systemui.keyboard.shortcut.ui.viewmodel.ShortcutHelperViewModel
55 import com.android.systemui.keyguard.data.repository.fakeCommandQueue
56 import com.android.systemui.kosmos.Kosmos
57 import com.android.systemui.kosmos.applicationCoroutineScope
58 import com.android.systemui.kosmos.backgroundCoroutineContext
59 import com.android.systemui.kosmos.backgroundScope
60 import com.android.systemui.kosmos.testDispatcher
61 import com.android.systemui.kosmos.testScope
62 import com.android.systemui.model.sysUiState
63 import com.android.systemui.plugins.activityStarter
64 import com.android.systemui.settings.displayTracker
65 import com.android.systemui.settings.userTracker
66 import com.android.systemui.statusbar.phone.systemUIDialogFactory
67 
68 var Kosmos.shortcutHelperAppCategoriesShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null69     Kosmos.Fixture { AppCategoriesShortcutsSource(windowManager, testDispatcher) }
70 
71 var Kosmos.shortcutHelperSystemShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null72     Kosmos.Fixture { SystemShortcutsSource(mainResources, fakeInputManager.inputManager) }
73 
74 var Kosmos.shortcutHelperMultiTaskingShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null75     Kosmos.Fixture { MultitaskingShortcutsSource(mainResources, applicationContext) }
76 
77 val Kosmos.shortcutHelperStateRepository by
<lambda>null78     Kosmos.Fixture { ShortcutHelperStateRepository(fakeInputManager.inputManager, testDispatcher) }
79 
80 var Kosmos.shortcutHelperInputShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null81     Kosmos.Fixture {
82         InputShortcutsSource(mainResources, windowManager, fakeInputManager.inputManager)
83     }
84 
85 var Kosmos.shortcutHelperCurrentAppShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null86     Kosmos.Fixture { CurrentAppShortcutsSource(windowManager) }
87 
88 var Kosmos.shortcutHelperAccessibilityShortcutsSource: KeyboardShortcutGroupsSource by
<lambda>null89     Kosmos.Fixture { AccessibilityShortcutsSource(mainResources) }
90 
91 val Kosmos.shortcutHelperExclusions by
<lambda>null92     Kosmos.Fixture { ShortcutHelperExclusions(applicationContext) }
93 
94 val Kosmos.shortcutCategoriesUtils by
<lambda>null95     Kosmos.Fixture {
96         ShortcutCategoriesUtils(
97             applicationContext,
98             backgroundCoroutineContext,
99             fakeInputManager.inputManager,
100             shortcutHelperExclusions,
101         )
102     }
103 
104 val Kosmos.defaultShortcutCategoriesRepository by
<lambda>null105     Kosmos.Fixture {
106         DefaultShortcutCategoriesRepository(
107             applicationCoroutineScope,
108             shortcutHelperSystemShortcutsSource,
109             shortcutHelperMultiTaskingShortcutsSource,
110             shortcutHelperAppCategoriesShortcutsSource,
111             shortcutHelperInputShortcutsSource,
112             shortcutHelperCurrentAppShortcutsSource,
113             shortcutHelperAccessibilityShortcutsSource,
114             shortcutHelperInputDeviceRepository,
115             shortcutCategoriesUtils,
116         )
117     }
118 
<lambda>null119 val Kosmos.inputGestureMaps by Kosmos.Fixture { InputGestureMaps(applicationContext) }
120 
121 val Kosmos.inputGestureDataAdapter by
<lambda>null122     Kosmos.Fixture { InputGestureDataAdapter(userTracker, inputGestureMaps, applicationContext) }
123 
124 val Kosmos.customInputGesturesRepository by
<lambda>null125     Kosmos.Fixture { CustomInputGesturesRepository(userTracker, testDispatcher) }
126 
127 val Kosmos.shortcutHelperInputDeviceRepository by
<lambda>null128     Kosmos.Fixture {
129         ShortcutHelperInputDeviceRepository(
130             shortcutHelperStateRepository,
131             backgroundScope,
132             backgroundCoroutineContext,
133             fakeInputManager.inputManager,
134         )
135     }
136 
137 val Kosmos.appLaunchDataRepository by
<lambda>null138     Kosmos.Fixture {
139         AppLaunchDataRepository(
140             fakeInputManager.inputManager,
141             backgroundScope,
142             shortcutCategoriesUtils,
143             shortcutHelperInputDeviceRepository,
144         )
145     }
146 
147 val Kosmos.customShortcutCategoriesRepository by
<lambda>null148     Kosmos.Fixture {
149         CustomShortcutCategoriesRepository(
150             shortcutHelperInputDeviceRepository,
151             applicationCoroutineScope,
152             shortcutCategoriesUtils,
153             inputGestureDataAdapter,
154             customInputGesturesRepository,
155             fakeInputManager.inputManager,
156             appLaunchDataRepository,
157         )
158     }
159 
160 val Kosmos.shortcutHelperCoreStartable by
<lambda>null161     Kosmos.Fixture {
162         ShortcutHelperCoreStartable(
163             fakeCommandQueue,
164             broadcastDispatcher,
165             shortcutHelperStateRepository,
166             activityStarter,
167             testScope,
168             customInputGesturesRepository,
169         )
170     }
171 
172 val Kosmos.shortcutHelperTestHelper by
<lambda>null173     Kosmos.Fixture {
174         ShortcutHelperTestHelper(
175             shortcutHelperCoreStartable,
176             applicationContext,
177             broadcastDispatcher,
178             fakeCommandQueue,
179             fakeInputManager,
180             activityStarter,
181             windowManager,
182         )
183     }
184 
185 val Kosmos.shortcutHelperStateInteractor by
<lambda>null186     Kosmos.Fixture {
187         ShortcutHelperStateInteractor(
188             displayTracker,
189             testScope,
190             sysUiState,
191             shortcutHelperStateRepository,
192         )
193     }
194 
195 val Kosmos.shortcutHelperCategoriesInteractor by
<lambda>null196     Kosmos.Fixture {
197         ShortcutHelperCategoriesInteractor(
198             context = applicationContext,
199             defaultShortcutCategoriesRepository,
200         ) {
201             customShortcutCategoriesRepository
202         }
203     }
204 
205 val Kosmos.shortcutHelperCustomizationModeRepository by
<lambda>null206     Kosmos.Fixture { ShortcutHelperCustomizationModeRepository(shortcutHelperStateRepository) }
207 
208 val Kosmos.shortcutHelperCustomizationModeInteractor by
<lambda>null209     Kosmos.Fixture {
210         ShortcutHelperCustomizationModeInteractor(shortcutHelperCustomizationModeRepository)
211     }
212 
213 val Kosmos.shortcutHelperViewModel by
<lambda>null214     Kosmos.Fixture {
215         ShortcutHelperViewModel(
216             applicationContext,
217             mockRoleManager,
218             userTracker,
219             applicationCoroutineScope,
220             testDispatcher,
221             shortcutHelperStateInteractor,
222             shortcutHelperCategoriesInteractor,
223             shortcutHelperCustomizationModeInteractor,
224         )
225     }
226 
227 val Kosmos.shortcutCustomizationDialogStarterFactory by
<lambda>null228     Kosmos.Fixture {
229         object : ShortcutCustomizationDialogStarter.Factory {
230             override fun create(): ShortcutCustomizationDialogStarter {
231                 return ShortcutCustomizationDialogStarter(
232                     shortcutCustomizationViewModelFactory,
233                     systemUIDialogFactory,
234                     mainResources,
235                 )
236             }
237         }
238     }
239 
240 val Kosmos.shortcutCustomizationInteractor by
<lambda>null241     Kosmos.Fixture { ShortcutCustomizationInteractor(customShortcutCategoriesRepository) }
242 
243 val Kosmos.shortcutCustomizationViewModelFactory by
<lambda>null244     Kosmos.Fixture {
245         object : ShortcutCustomizationViewModel.Factory {
246             override fun create(): ShortcutCustomizationViewModel {
247                 return ShortcutCustomizationViewModel(
248                     applicationContext,
249                     shortcutCustomizationInteractor,
250                 )
251             }
252         }
253     }
254 
<lambda>null255 val Kosmos.fakeLauncherApps by Kosmos.Fixture { FakeLauncherApps() }
256 
257 val Kosmos.userVisibleAppsRepository by
<lambda>null258     Kosmos.Fixture {
259         UserVisibleAppsRepository(
260             userTracker,
261             fakeExecutor,
262             fakeExecutorHandler,
263             fakeLauncherApps.launcherApps,
264         )
265     }
266