1 /* 2 * Copyright (C) 2020 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.keyguard.dagger; 18 19 import android.app.trust.TrustManager; 20 import android.content.Context; 21 import android.os.PowerManager; 22 23 import com.android.internal.jank.InteractionJankMonitor; 24 import com.android.internal.logging.UiEventLogger; 25 import com.android.internal.widget.LockPatternUtils; 26 import com.android.keyguard.KeyguardDisplayManager; 27 import com.android.keyguard.KeyguardUpdateMonitor; 28 import com.android.keyguard.KeyguardViewController; 29 import com.android.keyguard.ViewMediatorCallback; 30 import com.android.keyguard.dagger.KeyguardQsUserSwitchComponent; 31 import com.android.keyguard.dagger.KeyguardStatusBarViewComponent; 32 import com.android.keyguard.dagger.KeyguardStatusViewComponent; 33 import com.android.keyguard.dagger.KeyguardUserSwitcherComponent; 34 import com.android.keyguard.mediator.ScreenOnCoordinator; 35 import com.android.systemui.animation.ActivityLaunchAnimator; 36 import com.android.systemui.broadcast.BroadcastDispatcher; 37 import com.android.systemui.classifier.FalsingCollector; 38 import com.android.systemui.classifier.FalsingModule; 39 import com.android.systemui.dagger.SysUISingleton; 40 import com.android.systemui.dagger.qualifiers.Main; 41 import com.android.systemui.dagger.qualifiers.UiBackground; 42 import com.android.systemui.dreams.DreamOverlayStateController; 43 import com.android.systemui.dump.DumpManager; 44 import com.android.systemui.flags.FeatureFlags; 45 import com.android.systemui.flags.SystemPropertiesHelper; 46 import com.android.systemui.keyguard.DismissCallbackRegistry; 47 import com.android.systemui.keyguard.KeyguardUnlockAnimationController; 48 import com.android.systemui.keyguard.KeyguardViewMediator; 49 import com.android.systemui.keyguard.WindowManagerLockscreenVisibilityManager; 50 import com.android.systemui.keyguard.data.quickaffordance.KeyguardDataQuickAffordanceModule; 51 import com.android.systemui.keyguard.data.repository.KeyguardFaceAuthModule; 52 import com.android.systemui.keyguard.data.repository.KeyguardRepositoryModule; 53 import com.android.systemui.keyguard.domain.interactor.StartKeyguardTransitionModule; 54 import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger; 55 import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLoggerImpl; 56 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel; 57 import com.android.systemui.log.SessionTracker; 58 import com.android.systemui.navigationbar.NavigationModeController; 59 import com.android.systemui.settings.UserTracker; 60 import com.android.systemui.shade.ShadeController; 61 import com.android.systemui.statusbar.NotificationShadeDepthController; 62 import com.android.systemui.statusbar.NotificationShadeWindowController; 63 import com.android.systemui.statusbar.SysuiStatusBarStateController; 64 import com.android.systemui.statusbar.phone.DozeParameters; 65 import com.android.systemui.statusbar.phone.ScreenOffAnimationController; 66 import com.android.systemui.statusbar.phone.ScrimController; 67 import com.android.systemui.statusbar.policy.KeyguardStateController; 68 import com.android.systemui.statusbar.policy.UserSwitcherController; 69 import com.android.systemui.util.DeviceConfigProxy; 70 import com.android.systemui.util.kotlin.JavaAdapter; 71 import com.android.systemui.util.settings.SecureSettings; 72 import com.android.systemui.util.settings.SystemSettings; 73 import com.android.systemui.util.time.SystemClock; 74 import com.android.systemui.wallpapers.data.repository.WallpaperRepository; 75 import com.android.wm.shell.keyguard.KeyguardTransitions; 76 77 import java.util.concurrent.Executor; 78 79 import dagger.Lazy; 80 import dagger.Module; 81 import dagger.Provides; 82 import kotlinx.coroutines.CoroutineDispatcher; 83 84 /** 85 * Dagger Module providing keyguard. 86 */ 87 @Module(subcomponents = { 88 KeyguardQsUserSwitchComponent.class, 89 KeyguardStatusBarViewComponent.class, 90 KeyguardStatusViewComponent.class, 91 KeyguardUserSwitcherComponent.class}, 92 includes = { 93 FalsingModule.class, 94 KeyguardDataQuickAffordanceModule.class, 95 KeyguardRepositoryModule.class, 96 KeyguardFaceAuthModule.class, 97 StartKeyguardTransitionModule.class, 98 ResourceTrimmerModule.class, 99 }) 100 public class KeyguardModule { 101 /** 102 * Provides our instance of KeyguardViewMediator which is considered optional. 103 */ 104 @Provides 105 @SysUISingleton newKeyguardViewMediator( Context context, UiEventLogger uiEventLogger, SessionTracker sessionTracker, UserTracker userTracker, FalsingCollector falsingCollector, LockPatternUtils lockPatternUtils, BroadcastDispatcher broadcastDispatcher, Lazy<KeyguardViewController> statusBarKeyguardViewManagerLazy, DismissCallbackRegistry dismissCallbackRegistry, KeyguardUpdateMonitor updateMonitor, DumpManager dumpManager, PowerManager powerManager, TrustManager trustManager, UserSwitcherController userSwitcherController, @UiBackground Executor uiBgExecutor, DeviceConfigProxy deviceConfig, NavigationModeController navigationModeController, KeyguardDisplayManager keyguardDisplayManager, DozeParameters dozeParameters, SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, ScreenOffAnimationController screenOffAnimationController, Lazy<NotificationShadeDepthController> notificationShadeDepthController, ScreenOnCoordinator screenOnCoordinator, KeyguardTransitions keyguardTransitions, InteractionJankMonitor interactionJankMonitor, DreamOverlayStateController dreamOverlayStateController, JavaAdapter javaAdapter, WallpaperRepository wallpaperRepository, Lazy<ShadeController> shadeController, Lazy<NotificationShadeWindowController> notificationShadeWindowController, Lazy<ActivityLaunchAnimator> activityLaunchAnimator, Lazy<ScrimController> scrimControllerLazy, FeatureFlags featureFlags, SecureSettings secureSettings, SystemSettings systemSettings, SystemClock systemClock, @Main CoroutineDispatcher mainDispatcher, Lazy<DreamingToLockscreenTransitionViewModel> dreamingToLockscreenTransitionViewModel, SystemPropertiesHelper systemPropertiesHelper, Lazy<WindowManagerLockscreenVisibilityManager> wmLockscreenVisibilityManager)106 public static KeyguardViewMediator newKeyguardViewMediator( 107 Context context, 108 UiEventLogger uiEventLogger, 109 SessionTracker sessionTracker, 110 UserTracker userTracker, 111 FalsingCollector falsingCollector, 112 LockPatternUtils lockPatternUtils, 113 BroadcastDispatcher broadcastDispatcher, 114 Lazy<KeyguardViewController> statusBarKeyguardViewManagerLazy, 115 DismissCallbackRegistry dismissCallbackRegistry, 116 KeyguardUpdateMonitor updateMonitor, 117 DumpManager dumpManager, 118 PowerManager powerManager, 119 TrustManager trustManager, 120 UserSwitcherController userSwitcherController, 121 @UiBackground Executor uiBgExecutor, 122 DeviceConfigProxy deviceConfig, 123 NavigationModeController navigationModeController, 124 KeyguardDisplayManager keyguardDisplayManager, 125 DozeParameters dozeParameters, 126 SysuiStatusBarStateController statusBarStateController, 127 KeyguardStateController keyguardStateController, 128 Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, 129 ScreenOffAnimationController screenOffAnimationController, 130 Lazy<NotificationShadeDepthController> notificationShadeDepthController, 131 ScreenOnCoordinator screenOnCoordinator, 132 KeyguardTransitions keyguardTransitions, 133 InteractionJankMonitor interactionJankMonitor, 134 DreamOverlayStateController dreamOverlayStateController, 135 JavaAdapter javaAdapter, 136 WallpaperRepository wallpaperRepository, 137 Lazy<ShadeController> shadeController, 138 Lazy<NotificationShadeWindowController> notificationShadeWindowController, 139 Lazy<ActivityLaunchAnimator> activityLaunchAnimator, 140 Lazy<ScrimController> scrimControllerLazy, 141 FeatureFlags featureFlags, 142 SecureSettings secureSettings, 143 SystemSettings systemSettings, 144 SystemClock systemClock, 145 @Main CoroutineDispatcher mainDispatcher, 146 Lazy<DreamingToLockscreenTransitionViewModel> dreamingToLockscreenTransitionViewModel, 147 SystemPropertiesHelper systemPropertiesHelper, 148 Lazy<WindowManagerLockscreenVisibilityManager> wmLockscreenVisibilityManager) { 149 return new KeyguardViewMediator( 150 context, 151 uiEventLogger, 152 sessionTracker, 153 userTracker, 154 falsingCollector, 155 lockPatternUtils, 156 broadcastDispatcher, 157 statusBarKeyguardViewManagerLazy, 158 dismissCallbackRegistry, 159 updateMonitor, 160 dumpManager, 161 uiBgExecutor, 162 powerManager, 163 trustManager, 164 userSwitcherController, 165 deviceConfig, 166 navigationModeController, 167 keyguardDisplayManager, 168 dozeParameters, 169 statusBarStateController, 170 keyguardStateController, 171 keyguardUnlockAnimationController, 172 screenOffAnimationController, 173 notificationShadeDepthController, 174 screenOnCoordinator, 175 keyguardTransitions, 176 interactionJankMonitor, 177 dreamOverlayStateController, 178 javaAdapter, 179 wallpaperRepository, 180 shadeController, 181 notificationShadeWindowController, 182 activityLaunchAnimator, 183 scrimControllerLazy, 184 featureFlags, 185 secureSettings, 186 systemSettings, 187 systemClock, 188 mainDispatcher, 189 dreamingToLockscreenTransitionViewModel, 190 systemPropertiesHelper, 191 wmLockscreenVisibilityManager); 192 } 193 194 /** */ 195 @Provides providesViewMediatorCallback(KeyguardViewMediator viewMediator)196 public ViewMediatorCallback providesViewMediatorCallback(KeyguardViewMediator viewMediator) { 197 return viewMediator.getViewMediatorCallback(); 198 } 199 200 /** */ 201 @Provides providesKeyguardQuickAffordancesMetricsLogger()202 public KeyguardQuickAffordancesMetricsLogger providesKeyguardQuickAffordancesMetricsLogger() { 203 return new KeyguardQuickAffordancesMetricsLoggerImpl(); 204 } 205 } 206