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.communal.domain.interactor
18
19 import android.content.testableContext
20 import android.os.userManager
21 import com.android.systemui.broadcast.broadcastDispatcher
22 import com.android.systemui.communal.data.repository.communalMediaRepository
23 import com.android.systemui.communal.data.repository.communalSmartspaceRepository
24 import com.android.systemui.communal.data.repository.communalWidgetRepository
25 import com.android.systemui.communal.widgets.EditWidgetsActivityStarter
26 import com.android.systemui.flags.Flags
27 import com.android.systemui.flags.fakeFeatureFlagsClassic
28 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
29 import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
30 import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
31 import com.android.systemui.kosmos.Kosmos
32 import com.android.systemui.kosmos.Kosmos.Fixture
33 import com.android.systemui.kosmos.applicationCoroutineScope
34 import com.android.systemui.kosmos.testDispatcher
35 import com.android.systemui.kosmos.testScope
36 import com.android.systemui.log.logcatLogBuffer
37 import com.android.systemui.plugins.activityStarter
38 import com.android.systemui.res.R
39 import com.android.systemui.scene.domain.interactor.sceneInteractor
40 import com.android.systemui.settings.userTracker
41 import com.android.systemui.statusbar.phone.fakeManagedProfileController
42 import com.android.systemui.user.data.repository.fakeUserRepository
43 import com.android.systemui.util.mockito.mock
44
<lambda>null45 val Kosmos.communalInteractor by Fixture {
46 CommunalInteractor(
47 applicationScope = applicationCoroutineScope,
48 bgDispatcher = testDispatcher,
49 bgScope = testScope.backgroundScope,
50 broadcastDispatcher = broadcastDispatcher,
51 communalSceneInteractor = communalSceneInteractor,
52 widgetRepository = communalWidgetRepository,
53 communalPrefsInteractor = communalPrefsInteractor,
54 mediaRepository = communalMediaRepository,
55 smartspaceRepository = communalSmartspaceRepository,
56 keyguardInteractor = keyguardInteractor,
57 keyguardTransitionInteractor = keyguardTransitionInteractor,
58 communalSettingsInteractor = communalSettingsInteractor,
59 editWidgetsActivityStarter = editWidgetsActivityStarter,
60 userTracker = userTracker,
61 activityStarter = activityStarter,
62 userManager = userManager,
63 sceneInteractor = sceneInteractor,
64 logBuffer = logcatLogBuffer("CommunalInteractor"),
65 tableLogBuffer = mock(),
66 managedProfileController = fakeManagedProfileController,
67 )
68 }
69
<lambda>null70 val Kosmos.editWidgetsActivityStarter by Fixture<EditWidgetsActivityStarter> { mock() }
71
setCommunalV2ConfigEnablednull72 fun Kosmos.setCommunalV2ConfigEnabled(enabled: Boolean) {
73 testableContext.orCreateTestableResources.addOverride(
74 com.android.internal.R.bool.config_glanceableHubEnabled,
75 enabled,
76 )
77 }
78
setCommunalEnablednull79 suspend fun Kosmos.setCommunalEnabled(enabled: Boolean) {
80 fakeFeatureFlagsClassic.set(Flags.COMMUNAL_SERVICE_ENABLED, enabled)
81 if (enabled) {
82 fakeUserRepository.asMainUser()
83 } else {
84 fakeUserRepository.asDefaultUser()
85 }
86 }
87
setCommunalV2Enablednull88 suspend fun Kosmos.setCommunalV2Enabled(enabled: Boolean) {
89 setCommunalV2ConfigEnabled(true)
90 if (enabled) {
91 fakeUserRepository.asMainUser()
92 } else {
93 fakeUserRepository.asDefaultUser()
94 }
95 }
96
setCommunalAvailablenull97 suspend fun Kosmos.setCommunalAvailable(available: Boolean) {
98 setCommunalEnabled(available)
99 with(fakeKeyguardRepository) {
100 setIsEncryptedOrLockdown(!available)
101 setKeyguardShowing(available)
102 }
103 }
104
setCommunalV2Availablenull105 suspend fun Kosmos.setCommunalV2Available(available: Boolean) {
106 setCommunalV2ConfigEnabled(true)
107 setCommunalEnabled(available)
108 with(fakeKeyguardRepository) {
109 setIsEncryptedOrLockdown(!available)
110 setKeyguardShowing(available)
111 }
112 }
113