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.statusbar.policy.dagger;
18 
19 import android.content.res.Resources;
20 import android.os.UserManager;
21 
22 import com.android.internal.R;
23 import com.android.systemui.dagger.SysUISingleton;
24 import com.android.systemui.dagger.qualifiers.Main;
25 import com.android.systemui.settings.UserTracker;
26 import com.android.systemui.statusbar.connectivity.AccessPointController;
27 import com.android.systemui.statusbar.connectivity.AccessPointControllerImpl;
28 import com.android.systemui.statusbar.connectivity.NetworkController;
29 import com.android.systemui.statusbar.connectivity.NetworkControllerImpl;
30 import com.android.systemui.statusbar.policy.BluetoothController;
31 import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
32 import com.android.systemui.statusbar.policy.CastController;
33 import com.android.systemui.statusbar.policy.CastControllerImpl;
34 import com.android.systemui.statusbar.policy.DeviceControlsController;
35 import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl;
36 import com.android.systemui.statusbar.policy.DevicePostureController;
37 import com.android.systemui.statusbar.policy.DevicePostureControllerImpl;
38 import com.android.systemui.statusbar.policy.ExtensionController;
39 import com.android.systemui.statusbar.policy.ExtensionControllerImpl;
40 import com.android.systemui.statusbar.policy.FlashlightController;
41 import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
42 import com.android.systemui.statusbar.policy.HotspotController;
43 import com.android.systemui.statusbar.policy.HotspotControllerImpl;
44 import com.android.systemui.statusbar.policy.KeyguardStateController;
45 import com.android.systemui.statusbar.policy.KeyguardStateControllerImpl;
46 import com.android.systemui.statusbar.policy.LocationController;
47 import com.android.systemui.statusbar.policy.LocationControllerImpl;
48 import com.android.systemui.statusbar.policy.NextAlarmController;
49 import com.android.systemui.statusbar.policy.NextAlarmControllerImpl;
50 import com.android.systemui.statusbar.policy.RotationLockController;
51 import com.android.systemui.statusbar.policy.RotationLockControllerImpl;
52 import com.android.systemui.statusbar.policy.SecurityController;
53 import com.android.systemui.statusbar.policy.SecurityControllerImpl;
54 import com.android.systemui.statusbar.policy.UserInfoController;
55 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
56 import com.android.systemui.statusbar.policy.WalletController;
57 import com.android.systemui.statusbar.policy.WalletControllerImpl;
58 import com.android.systemui.statusbar.policy.ZenModeController;
59 import com.android.systemui.statusbar.policy.ZenModeControllerImpl;
60 
61 import java.util.concurrent.Executor;
62 
63 import javax.inject.Named;
64 
65 import dagger.Binds;
66 import dagger.Module;
67 import dagger.Provides;
68 
69 
70 /** Dagger Module for code in the statusbar.policy package. */
71 @Module
72 public interface StatusBarPolicyModule {
73 
74     String DEVICE_STATE_ROTATION_LOCK_DEFAULTS = "DEVICE_STATE_ROTATION_LOCK_DEFAULTS";
75 
76     /** */
77     @Binds
provideBluetoothController(BluetoothControllerImpl controllerImpl)78     BluetoothController provideBluetoothController(BluetoothControllerImpl controllerImpl);
79 
80     /** */
81     @Binds
provideCastController(CastControllerImpl controllerImpl)82     CastController provideCastController(CastControllerImpl controllerImpl);
83 
84     /** */
85     @Binds
provideExtensionController(ExtensionControllerImpl controllerImpl)86     ExtensionController provideExtensionController(ExtensionControllerImpl controllerImpl);
87 
88     /** */
89     @Binds
provideFlashlightController(FlashlightControllerImpl controllerImpl)90     FlashlightController provideFlashlightController(FlashlightControllerImpl controllerImpl);
91 
92     /** */
93     @Binds
provideKeyguardMonitor(KeyguardStateControllerImpl controllerImpl)94     KeyguardStateController provideKeyguardMonitor(KeyguardStateControllerImpl controllerImpl);
95 
96     /** */
97     @Binds
provideHotspotController(HotspotControllerImpl controllerImpl)98     HotspotController provideHotspotController(HotspotControllerImpl controllerImpl);
99 
100     /** */
101     @Binds
provideLocationController(LocationControllerImpl controllerImpl)102     LocationController provideLocationController(LocationControllerImpl controllerImpl);
103 
104     /** */
105     @Binds
provideNetworkController(NetworkControllerImpl controllerImpl)106     NetworkController provideNetworkController(NetworkControllerImpl controllerImpl);
107 
108     /** */
109     @Binds
provideNextAlarmController(NextAlarmControllerImpl controllerImpl)110     NextAlarmController provideNextAlarmController(NextAlarmControllerImpl controllerImpl);
111 
112     /** */
113     @Binds
provideRotationLockController(RotationLockControllerImpl controllerImpl)114     RotationLockController provideRotationLockController(RotationLockControllerImpl controllerImpl);
115 
116     /** */
117     @Binds
provideSecurityController(SecurityControllerImpl controllerImpl)118     SecurityController provideSecurityController(SecurityControllerImpl controllerImpl);
119 
120     /** */
121     @Binds
provideUserInfoContrller(UserInfoControllerImpl controllerImpl)122     UserInfoController provideUserInfoContrller(UserInfoControllerImpl controllerImpl);
123 
124     /** */
125     @Binds
provideZenModeController(ZenModeControllerImpl controllerImpl)126     ZenModeController provideZenModeController(ZenModeControllerImpl controllerImpl);
127 
128     /** */
129     @Binds
provideDeviceControlsController( DeviceControlsControllerImpl controllerImpl)130     DeviceControlsController provideDeviceControlsController(
131             DeviceControlsControllerImpl controllerImpl);
132 
133     /** */
134     @Binds
provideWalletController(WalletControllerImpl controllerImpl)135     WalletController provideWalletController(WalletControllerImpl controllerImpl);
136 
137     /** */
138     @Binds
provideAccessPointController( AccessPointControllerImpl accessPointControllerImpl)139     AccessPointController provideAccessPointController(
140             AccessPointControllerImpl accessPointControllerImpl);
141 
142     /** */
143     @Binds
provideDevicePostureController( DevicePostureControllerImpl devicePostureControllerImpl)144     DevicePostureController provideDevicePostureController(
145             DevicePostureControllerImpl devicePostureControllerImpl);
146 
147     /** */
148     @SysUISingleton
149     @Provides
provideAccessPointControllerImpl( UserManager userManager, UserTracker userTracker, @Main Executor mainExecutor, AccessPointControllerImpl.WifiPickerTrackerFactory wifiPickerTrackerFactory )150     static AccessPointControllerImpl  provideAccessPointControllerImpl(
151             UserManager userManager,
152             UserTracker userTracker,
153             @Main Executor mainExecutor,
154             AccessPointControllerImpl.WifiPickerTrackerFactory wifiPickerTrackerFactory
155     ) {
156         AccessPointControllerImpl controller = new AccessPointControllerImpl(
157                 userManager,
158                 userTracker,
159                 mainExecutor,
160                 wifiPickerTrackerFactory
161         );
162         controller.init();
163         return controller;
164     }
165 
166     /**
167      * Default values for per-device state rotation lock settings.
168      */
169     @Provides
170     @Named(DEVICE_STATE_ROTATION_LOCK_DEFAULTS)
providesDeviceStateRotationLockDefaults(@ain Resources resources)171     static String[] providesDeviceStateRotationLockDefaults(@Main Resources resources) {
172         return resources.getStringArray(
173                 R.array.config_perDeviceStateRotationLockDefaults);
174     }
175 }
176