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.annotation.Nullable; 20 import android.app.trust.TrustManager; 21 import android.content.Context; 22 import android.content.pm.PackageManager; 23 import android.os.PowerManager; 24 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.dagger.KeyguardQsUserSwitchComponent; 30 import com.android.keyguard.dagger.KeyguardStatusBarViewComponent; 31 import com.android.keyguard.dagger.KeyguardStatusViewComponent; 32 import com.android.keyguard.dagger.KeyguardUserSwitcherComponent; 33 import com.android.systemui.broadcast.BroadcastDispatcher; 34 import com.android.systemui.classifier.FalsingCollector; 35 import com.android.systemui.classifier.FalsingModule; 36 import com.android.systemui.dagger.SysUISingleton; 37 import com.android.systemui.dagger.qualifiers.UiBackground; 38 import com.android.systemui.dump.DumpManager; 39 import com.android.systemui.keyguard.DismissCallbackRegistry; 40 import com.android.systemui.keyguard.KeyguardUnlockAnimationController; 41 import com.android.systemui.keyguard.KeyguardViewMediator; 42 import com.android.systemui.navigationbar.NavigationModeController; 43 import com.android.systemui.plugins.statusbar.StatusBarStateController; 44 import com.android.systemui.statusbar.NotificationShadeDepthController; 45 import com.android.systemui.statusbar.SysuiStatusBarStateController; 46 import com.android.systemui.statusbar.phone.DozeParameters; 47 import com.android.systemui.statusbar.phone.KeyguardLiftController; 48 import com.android.systemui.statusbar.phone.StatusBar; 49 import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; 50 import com.android.systemui.statusbar.policy.KeyguardStateController; 51 import com.android.systemui.statusbar.policy.UserSwitcherController; 52 import com.android.systemui.unfold.SysUIUnfoldComponent; 53 import com.android.systemui.util.DeviceConfigProxy; 54 import com.android.systemui.util.sensors.AsyncSensorManager; 55 56 import java.util.Optional; 57 import java.util.concurrent.Executor; 58 59 import dagger.Lazy; 60 import dagger.Module; 61 import dagger.Provides; 62 63 /** 64 * Dagger Module providing {@link StatusBar}. 65 */ 66 @Module(subcomponents = { 67 KeyguardQsUserSwitchComponent.class, 68 KeyguardStatusBarViewComponent.class, 69 KeyguardStatusViewComponent.class, 70 KeyguardUserSwitcherComponent.class}, 71 includes = {FalsingModule.class}) 72 public class KeyguardModule { 73 /** 74 * Provides our instance of KeyguardViewMediator which is considered optional. 75 */ 76 @Provides 77 @SysUISingleton newKeyguardViewMediator( Context context, 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, Optional<SysUIUnfoldComponent> unfoldComponent, SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, Lazy<NotificationShadeDepthController> notificationShadeDepthController)78 public static KeyguardViewMediator newKeyguardViewMediator( 79 Context context, 80 FalsingCollector falsingCollector, 81 LockPatternUtils lockPatternUtils, 82 BroadcastDispatcher broadcastDispatcher, 83 Lazy<KeyguardViewController> statusBarKeyguardViewManagerLazy, 84 DismissCallbackRegistry dismissCallbackRegistry, 85 KeyguardUpdateMonitor updateMonitor, 86 DumpManager dumpManager, 87 PowerManager powerManager, 88 TrustManager trustManager, 89 UserSwitcherController userSwitcherController, 90 @UiBackground Executor uiBgExecutor, 91 DeviceConfigProxy deviceConfig, 92 NavigationModeController navigationModeController, 93 KeyguardDisplayManager keyguardDisplayManager, 94 DozeParameters dozeParameters, 95 Optional<SysUIUnfoldComponent> unfoldComponent, 96 SysuiStatusBarStateController statusBarStateController, 97 KeyguardStateController keyguardStateController, 98 Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, 99 UnlockedScreenOffAnimationController unlockedScreenOffAnimationController, 100 Lazy<NotificationShadeDepthController> notificationShadeDepthController) { 101 return new KeyguardViewMediator( 102 context, 103 falsingCollector, 104 lockPatternUtils, 105 broadcastDispatcher, 106 statusBarKeyguardViewManagerLazy, 107 dismissCallbackRegistry, 108 updateMonitor, 109 dumpManager, 110 uiBgExecutor, 111 powerManager, 112 trustManager, 113 userSwitcherController, 114 deviceConfig, 115 navigationModeController, 116 keyguardDisplayManager, 117 dozeParameters, 118 unfoldComponent, 119 statusBarStateController, 120 keyguardStateController, 121 keyguardUnlockAnimationController, 122 unlockedScreenOffAnimationController, 123 notificationShadeDepthController 124 ); 125 } 126 127 @SysUISingleton 128 @Provides 129 @Nullable provideKeyguardLiftController( Context context, StatusBarStateController statusBarStateController, AsyncSensorManager asyncSensorManager, KeyguardUpdateMonitor keyguardUpdateMonitor, DumpManager dumpManager)130 static KeyguardLiftController provideKeyguardLiftController( 131 Context context, 132 StatusBarStateController statusBarStateController, 133 AsyncSensorManager asyncSensorManager, 134 KeyguardUpdateMonitor keyguardUpdateMonitor, 135 DumpManager dumpManager) { 136 if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FACE)) { 137 return null; 138 } 139 return new KeyguardLiftController(statusBarStateController, asyncSensorManager, 140 keyguardUpdateMonitor, dumpManager); 141 } 142 } 143