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.systemui 17 18 import android.app.ActivityManager 19 import android.app.DreamManager 20 import android.app.admin.DevicePolicyManager 21 import android.app.trust.TrustManager 22 import android.hardware.fingerprint.FingerprintManager 23 import android.os.UserManager 24 import android.service.notification.NotificationListenerService 25 import android.util.DisplayMetrics 26 import android.view.LayoutInflater 27 import com.android.internal.logging.MetricsLogger 28 import com.android.internal.statusbar.IStatusBarService 29 import com.android.internal.widget.LockPatternUtils 30 import com.android.keyguard.KeyguardSecurityModel 31 import com.android.keyguard.KeyguardUpdateMonitor 32 import com.android.keyguard.KeyguardViewController 33 import com.android.systemui.animation.DialogTransitionAnimator 34 import com.android.systemui.biometrics.AuthController 35 import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor 36 import com.android.systemui.camera.CameraGestureHelper 37 import com.android.systemui.communal.domain.interactor.CommunalInteractor 38 import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor 39 import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor 40 import com.android.systemui.demomode.DemoModeController 41 import com.android.systemui.dump.DumpManager 42 import com.android.systemui.keyguard.ScreenLifecycle 43 import com.android.systemui.keyguard.WakefulnessLifecycle 44 import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition 45 import com.android.systemui.log.LogBuffer 46 import com.android.systemui.log.dagger.BiometricLog 47 import com.android.systemui.log.dagger.BroadcastDispatcherLog 48 import com.android.systemui.log.dagger.FaceAuthLog 49 import com.android.systemui.log.dagger.SceneFrameworkLog 50 import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager 51 import com.android.systemui.model.SysUiState 52 import com.android.systemui.plugins.ActivityStarter 53 import com.android.systemui.plugins.DarkIconDispatcher 54 import com.android.systemui.plugins.statusbar.StatusBarStateController 55 import com.android.systemui.scene.shared.logger.SceneLogger 56 import com.android.systemui.shared.system.ActivityManagerWrapper 57 import com.android.systemui.statusbar.LockscreenShadeTransitionController 58 import com.android.systemui.statusbar.NotificationListener 59 import com.android.systemui.statusbar.NotificationLockscreenUserManager 60 import com.android.systemui.statusbar.NotificationMediaManager 61 import com.android.systemui.statusbar.NotificationShadeDepthController 62 import com.android.systemui.statusbar.SysuiStatusBarStateController 63 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator 64 import com.android.systemui.statusbar.notification.collection.NotifCollection 65 import com.android.systemui.statusbar.notification.headsup.HeadsUpManager 66 import com.android.systemui.statusbar.notification.logging.NotificationPanelLogger 67 import com.android.systemui.statusbar.notification.stack.AmbientState 68 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController 69 import com.android.systemui.statusbar.notification.stack.NotificationStackSizeCalculator 70 import com.android.systemui.statusbar.notification.stack.ui.view.NotificationStatsLogger 71 import com.android.systemui.statusbar.phone.DozeParameters 72 import com.android.systemui.statusbar.phone.KeyguardBypassController 73 import com.android.systemui.statusbar.phone.LSShadeTransitionLogger 74 import com.android.systemui.statusbar.phone.ScreenOffAnimationController 75 import com.android.systemui.statusbar.phone.ScrimController 76 import com.android.systemui.statusbar.phone.SystemUIDialogManager 77 import com.android.systemui.statusbar.policy.DeviceProvisionedController 78 import com.android.systemui.statusbar.policy.KeyguardStateController 79 import com.android.systemui.statusbar.policy.ZenModeController 80 import com.android.systemui.statusbar.window.StatusBarWindowController 81 import com.android.systemui.unfold.UnfoldTransitionProgressProvider 82 import com.android.systemui.util.mockito.mock 83 import com.android.systemui.util.settings.GlobalSettings 84 import com.android.wm.shell.bubbles.Bubbles 85 import dagger.Binds 86 import dagger.Module 87 import dagger.Provides 88 import java.util.Optional 89 90 @Module(includes = [TestMocksModule.Bindings::class]) 91 data class TestMocksModule( 92 @get:Provides val activityStarter: ActivityStarter = mock(), 93 @get:Provides val activityManagerWrapper: ActivityManagerWrapper = mock(), 94 @get:Provides val ambientState: AmbientState = mock(), 95 @get:Provides val authController: AuthController = mock(), 96 @get:Provides val bubbles: Optional<Bubbles> = Optional.of(mock()), 97 @get:Provides val darkIconDispatcher: DarkIconDispatcher = mock(), 98 @get:Provides val demoModeController: DemoModeController = mock(), 99 @get:Provides val deviceProvisionedController: DeviceProvisionedController = mock(), 100 @get:Provides val dozeParameters: DozeParameters = mock(), 101 @get:Provides val dreamManager: DreamManager = mock(), 102 @get:Provides val dumpManager: DumpManager = mock(), 103 @get:Provides val fingerprintManager: FingerprintManager = mock(), 104 @get:Provides val headsUpManager: HeadsUpManager = mock(), 105 @get:Provides val guestResumeSessionReceiver: GuestResumeSessionReceiver = mock(), 106 @get:Provides val keyguardBypassController: KeyguardBypassController = mock(), 107 @get:Provides val keyguardSecurityModel: KeyguardSecurityModel = mock(), 108 @get:Provides val keyguardUpdateMonitor: KeyguardUpdateMonitor = mock(), 109 @get:Provides val layoutInflater: LayoutInflater = mock(), 110 @get:Provides 111 val lockscreenShadeTransitionController: LockscreenShadeTransitionController = mock(), 112 @get:Provides val mediaHierarchyManager: MediaHierarchyManager = mock(), 113 @get:Provides val notifCollection: NotifCollection = mock(), 114 @get:Provides val notificationListLogger: NotificationStatsLogger = mock(), 115 @get:Provides val notificationListener: NotificationListener = mock(), 116 @get:Provides val notificationLockscreenUserManager: NotificationLockscreenUserManager = mock(), 117 @get:Provides val notificationPanelLogger: NotificationPanelLogger = mock(), 118 @get:Provides val notificationMediaManager: NotificationMediaManager = mock(), 119 @get:Provides val notificationShadeDepthController: NotificationShadeDepthController = mock(), 120 @get:Provides 121 val notificationStackScrollLayoutController: NotificationStackScrollLayoutController = mock(), 122 @get:Provides val notificationStackSizeCalculator: NotificationStackSizeCalculator = mock(), 123 @get:Provides val notificationWakeUpCoordinator: NotificationWakeUpCoordinator = mock(), 124 @get:Provides val screenLifecycle: ScreenLifecycle = mock(), 125 @get:Provides val screenOffAnimationController: ScreenOffAnimationController = mock(), 126 @get:Provides val scrimController: ScrimController = mock(), 127 @get:Provides val statusBarStateController: SysuiStatusBarStateController = mock(), 128 @get:Provides val statusBarWindowController: StatusBarWindowController = mock(), 129 @get:Provides val wakefulnessLifecycle: WakefulnessLifecycle = mock(), 130 @get:Provides val keyguardViewController: KeyguardViewController = mock(), 131 @get:Provides val dialogTransitionAnimator: DialogTransitionAnimator = mock(), 132 @get:Provides val sysuiState: SysUiState = mock(), 133 @get:Provides 134 val unfoldTransitionProgressProvider: Optional<UnfoldTransitionProgressProvider> = 135 Optional.empty(), 136 @get:Provides val zenModeController: ZenModeController = mock(), 137 @get:Provides val systemUIDialogManager: SystemUIDialogManager = mock(), 138 @get:Provides val deviceEntryIconTransitions: Set<DeviceEntryIconTransition> = emptySet(), 139 @get:Provides val communalInteractor: CommunalInteractor = mock(), 140 @get:Provides val communalSceneInteractor: CommunalSceneInteractor = mock(), 141 @get:Provides val communalSettingsInteractor: CommunalSettingsInteractor = mock(), 142 @get:Provides val sceneLogger: SceneLogger = mock(), 143 @get:Provides val trustManager: TrustManager = mock(), 144 @get:Provides val primaryBouncerInteractor: PrimaryBouncerInteractor = mock(), 145 @get:Provides val keyguardStateController: KeyguardStateController = mock(), 146 @get:Provides val globalSettings: GlobalSettings = mock(), 147 @get:Provides val cameraGestureHelper: CameraGestureHelper = mock(), 148 149 // log buffers 150 @get:[Provides BroadcastDispatcherLog] 151 val broadcastDispatcherLogger: LogBuffer = mock(), 152 @get:[Provides SceneFrameworkLog] 153 val sceneLogBuffer: LogBuffer = mock(), 154 @get:[Provides BiometricLog] 155 val biometricLogger: LogBuffer = mock(), 156 @get:[Provides FaceAuthLog] 157 val faceAuthLogger: LogBuffer = mock(), 158 @get:Provides val lsShadeTransitionLogger: LSShadeTransitionLogger = mock(), 159 160 // framework mocks 161 @get:Provides val activityManager: ActivityManager = mock(), 162 @get:Provides val devicePolicyManager: DevicePolicyManager = mock(), 163 @get:Provides val displayMetrics: DisplayMetrics = mock(), 164 @get:Provides val metricsLogger: MetricsLogger = mock(), 165 @get:Provides val userManager: UserManager = mock(), 166 @get:Provides val lockPatternUtils: LockPatternUtils = mock(), 167 168 // system server mocks 169 @get:Provides val mockStatusBarService: IStatusBarService = mock(), 170 @get:Provides val mockNotificationListenerService: NotificationListenerService = mock(), 171 ) { 172 @Module 173 interface Bindings { 174 @Binds bindStatusBarStateControllernull175 fun bindStatusBarStateController( 176 sysuiStatusBarStateController: SysuiStatusBarStateController 177 ): StatusBarStateController 178 } 179 } 180