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