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