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.mediaprojection.taskswitcher 18 19 import com.android.systemui.kosmos.Kosmos 20 import com.android.systemui.kosmos.applicationCoroutineScope 21 import com.android.systemui.kosmos.testDispatcher 22 import com.android.systemui.mediaprojection.data.repository.realMediaProjectionRepository 23 import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository 24 import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor 25 import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel 26 import kotlinx.coroutines.ExperimentalCoroutinesApi 27 import kotlinx.coroutines.test.UnconfinedTestDispatcher 28 <lambda>null29val Kosmos.fakeActivityTaskManager by Kosmos.Fixture { FakeActivityTaskManager() } 30 <lambda>null31val Kosmos.fakeMediaProjectionManager by Kosmos.Fixture { FakeMediaProjectionManager() } 32 33 val Kosmos.activityTaskManagerTasksRepository by <lambda>null34 Kosmos.Fixture { 35 ActivityTaskManagerTasksRepository( 36 activityTaskManager = fakeActivityTaskManager.activityTaskManager, 37 applicationScope = applicationCoroutineScope, 38 backgroundDispatcher = testDispatcher 39 ) 40 } 41 42 val Kosmos.taskSwitcherInteractor by <lambda>null43 Kosmos.Fixture { 44 TaskSwitchInteractor(realMediaProjectionRepository, activityTaskManagerTasksRepository) 45 } 46 47 val Kosmos.taskSwitcherViewModel by <lambda>null48 Kosmos.Fixture { TaskSwitcherNotificationViewModel(taskSwitcherInteractor, testDispatcher) } 49 50 @OptIn(ExperimentalCoroutinesApi::class) <lambda>null51fun taskSwitcherKosmos() = Kosmos().apply { testDispatcher = UnconfinedTestDispatcher() } 52