• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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.settings.overlay;
18 
19 import android.app.AppGlobals;
20 import android.app.admin.DevicePolicyManager;
21 import android.content.Context;
22 import android.net.ConnectivityManager;
23 import android.net.VpnManager;
24 import android.os.UserManager;
25 
26 import androidx.annotation.Keep;
27 
28 import com.android.settings.accessibility.AccessibilityMetricsFeatureProvider;
29 import com.android.settings.accessibility.AccessibilityMetricsFeatureProviderImpl;
30 import com.android.settings.accessibility.AccessibilitySearchFeatureProvider;
31 import com.android.settings.accessibility.AccessibilitySearchFeatureProviderImpl;
32 import com.android.settings.accounts.AccountFeatureProvider;
33 import com.android.settings.accounts.AccountFeatureProviderImpl;
34 import com.android.settings.applications.ApplicationFeatureProvider;
35 import com.android.settings.applications.ApplicationFeatureProviderImpl;
36 import com.android.settings.aware.AwareFeatureProvider;
37 import com.android.settings.aware.AwareFeatureProviderImpl;
38 import com.android.settings.biometrics.face.FaceFeatureProvider;
39 import com.android.settings.biometrics.face.FaceFeatureProviderImpl;
40 import com.android.settings.biometrics2.factory.BiometricsRepositoryProvider;
41 import com.android.settings.biometrics2.factory.BiometricsRepositoryProviderImpl;
42 import com.android.settings.bluetooth.BluetoothFeatureProvider;
43 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
44 import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl;
45 import com.android.settings.connecteddevice.stylus.StylusFeatureProvider;
46 import com.android.settings.connecteddevice.stylus.StylusFeatureProviderImpl;
47 import com.android.settings.core.instrumentation.SettingsMetricsFeatureProvider;
48 import com.android.settings.dashboard.DashboardFeatureProvider;
49 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
50 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
51 import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
52 import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProvider;
53 import com.android.settings.deviceinfo.hardwareinfo.HardwareInfoFeatureProviderImpl;
54 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
55 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
56 import com.android.settings.fuelgauge.BatterySettingsFeatureProvider;
57 import com.android.settings.fuelgauge.BatterySettingsFeatureProviderImpl;
58 import com.android.settings.fuelgauge.BatteryStatusFeatureProvider;
59 import com.android.settings.fuelgauge.BatteryStatusFeatureProviderImpl;
60 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
61 import com.android.settings.fuelgauge.PowerUsageFeatureProviderImpl;
62 import com.android.settings.gestures.AssistGestureFeatureProvider;
63 import com.android.settings.gestures.AssistGestureFeatureProviderImpl;
64 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider;
65 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProviderImpl;
66 import com.android.settings.inputmethod.KeyboardSettingsFeatureProvider;
67 import com.android.settings.inputmethod.KeyboardSettingsFeatureProviderImpl;
68 import com.android.settings.localepicker.LocaleFeatureProvider;
69 import com.android.settings.localepicker.LocaleFeatureProviderImpl;
70 import com.android.settings.panel.PanelFeatureProvider;
71 import com.android.settings.panel.PanelFeatureProviderImpl;
72 import com.android.settings.search.SearchFeatureProvider;
73 import com.android.settings.search.SearchFeatureProviderImpl;
74 import com.android.settings.security.SecurityFeatureProvider;
75 import com.android.settings.security.SecurityFeatureProviderImpl;
76 import com.android.settings.security.SecuritySettingsFeatureProvider;
77 import com.android.settings.security.SecuritySettingsFeatureProviderImpl;
78 import com.android.settings.slices.SlicesFeatureProvider;
79 import com.android.settings.slices.SlicesFeatureProviderImpl;
80 import com.android.settings.users.UserFeatureProvider;
81 import com.android.settings.users.UserFeatureProviderImpl;
82 import com.android.settings.vpn2.AdvancedVpnFeatureProvider;
83 import com.android.settings.vpn2.AdvancedVpnFeatureProviderImpl;
84 import com.android.settings.wifi.WifiTrackerLibProvider;
85 import com.android.settings.wifi.WifiTrackerLibProviderImpl;
86 import com.android.settings.wifi.factory.WifiFeatureProvider;
87 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
88 
89 /**
90  * {@link FeatureFactory} implementation for AOSP Settings.
91  */
92 @Keep
93 public class FeatureFactoryImpl extends FeatureFactory {
94 
95     private ApplicationFeatureProvider mApplicationFeatureProvider;
96     private MetricsFeatureProvider mMetricsFeatureProvider;
97     private DashboardFeatureProviderImpl mDashboardFeatureProvider;
98     private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider;
99     private LocaleFeatureProvider mLocaleFeatureProvider;
100     private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
101     private SearchFeatureProvider mSearchFeatureProvider;
102     private SecurityFeatureProvider mSecurityFeatureProvider;
103     private SuggestionFeatureProvider mSuggestionFeatureProvider;
104     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
105     private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
106     private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
107     private AssistGestureFeatureProvider mAssistGestureFeatureProvider;
108     private UserFeatureProvider mUserFeatureProvider;
109     private SlicesFeatureProvider mSlicesFeatureProvider;
110     private AccountFeatureProvider mAccountFeatureProvider;
111     private PanelFeatureProvider mPanelFeatureProvider;
112     private ContextualCardFeatureProvider mContextualCardFeatureProvider;
113     private BluetoothFeatureProvider mBluetoothFeatureProvider;
114     private AwareFeatureProvider mAwareFeatureProvider;
115     private FaceFeatureProvider mFaceFeatureProvider;
116     private BiometricsRepositoryProvider mBiometricsRepositoryProvider;
117     private WifiTrackerLibProvider mWifiTrackerLibProvider;
118     private SecuritySettingsFeatureProvider mSecuritySettingsFeatureProvider;
119     private AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider;
120     private AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider;
121     private AdvancedVpnFeatureProvider mAdvancedVpnFeatureProvider;
122     private WifiFeatureProvider mWifiFeatureProvider;
123     private KeyboardSettingsFeatureProvider mKeyboardSettingsFeatureProvider;
124     private StylusFeatureProvider mStylusFeatureProvider;
125 
126     @Override
getHardwareInfoFeatureProvider()127     public HardwareInfoFeatureProvider getHardwareInfoFeatureProvider() {
128         return HardwareInfoFeatureProviderImpl.INSTANCE;
129     }
130 
131     @Override
getSupportFeatureProvider(Context context)132     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
133         return null;
134     }
135 
136     @Override
getMetricsFeatureProvider()137     public MetricsFeatureProvider getMetricsFeatureProvider() {
138         if (mMetricsFeatureProvider == null) {
139             mMetricsFeatureProvider = new SettingsMetricsFeatureProvider();
140         }
141         return mMetricsFeatureProvider;
142     }
143 
144     @Override
getPowerUsageFeatureProvider(Context context)145     public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
146         if (mPowerUsageFeatureProvider == null) {
147             mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(
148                     context.getApplicationContext());
149         }
150         return mPowerUsageFeatureProvider;
151     }
152 
153     @Override
getBatteryStatusFeatureProvider(Context context)154     public BatteryStatusFeatureProvider getBatteryStatusFeatureProvider(Context context) {
155         if (mBatteryStatusFeatureProvider == null) {
156             mBatteryStatusFeatureProvider = new BatteryStatusFeatureProviderImpl(
157                     context.getApplicationContext());
158         }
159         return mBatteryStatusFeatureProvider;
160     }
161 
162     @Override
getBatterySettingsFeatureProvider()163     public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider() {
164         if (mBatterySettingsFeatureProvider == null) {
165             mBatterySettingsFeatureProvider = new BatterySettingsFeatureProviderImpl();
166         }
167         return mBatterySettingsFeatureProvider;
168     }
169 
170     @Override
getDashboardFeatureProvider(Context context)171     public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
172         if (mDashboardFeatureProvider == null) {
173             mDashboardFeatureProvider = new DashboardFeatureProviderImpl(
174                     context.getApplicationContext());
175         }
176         return mDashboardFeatureProvider;
177     }
178 
179     @Override
getDockUpdaterFeatureProvider()180     public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
181         if (mDockUpdaterFeatureProvider == null) {
182             mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl();
183         }
184         return mDockUpdaterFeatureProvider;
185     }
186 
187     @Override
getApplicationFeatureProvider(Context context)188     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
189         if (mApplicationFeatureProvider == null) {
190             final Context appContext = context.getApplicationContext();
191             mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(appContext,
192                     appContext.getPackageManager(),
193                     AppGlobals.getPackageManager(),
194                     (DevicePolicyManager) appContext
195                             .getSystemService(Context.DEVICE_POLICY_SERVICE));
196         }
197         return mApplicationFeatureProvider;
198     }
199 
200     @Override
getLocaleFeatureProvider()201     public LocaleFeatureProvider getLocaleFeatureProvider() {
202         if (mLocaleFeatureProvider == null) {
203             mLocaleFeatureProvider = new LocaleFeatureProviderImpl();
204         }
205         return mLocaleFeatureProvider;
206     }
207 
208     @Override
getEnterprisePrivacyFeatureProvider(Context context)209     public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
210         if (mEnterprisePrivacyFeatureProvider == null) {
211             final Context appContext = context.getApplicationContext();
212             mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(appContext,
213                     (DevicePolicyManager) appContext.getSystemService(
214                             Context.DEVICE_POLICY_SERVICE),
215                     appContext.getPackageManager(),
216                     UserManager.get(appContext),
217                     appContext.getSystemService(ConnectivityManager.class),
218                     appContext.getSystemService(VpnManager.class),
219                     appContext.getResources());
220         }
221         return mEnterprisePrivacyFeatureProvider;
222     }
223 
224     @Override
getSearchFeatureProvider()225     public SearchFeatureProvider getSearchFeatureProvider() {
226         if (mSearchFeatureProvider == null) {
227             mSearchFeatureProvider = new SearchFeatureProviderImpl();
228         }
229         return mSearchFeatureProvider;
230     }
231 
232     @Override
getSurveyFeatureProvider(Context context)233     public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
234         return null;
235     }
236 
237     @Override
getSecurityFeatureProvider()238     public SecurityFeatureProvider getSecurityFeatureProvider() {
239         if (mSecurityFeatureProvider == null) {
240             mSecurityFeatureProvider = new SecurityFeatureProviderImpl();
241         }
242         return mSecurityFeatureProvider;
243     }
244 
245     @Override
getSuggestionFeatureProvider()246     public SuggestionFeatureProvider getSuggestionFeatureProvider() {
247         if (mSuggestionFeatureProvider == null) {
248             mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl();
249         }
250         return mSuggestionFeatureProvider;
251     }
252 
253     @Override
getUserFeatureProvider(Context context)254     public UserFeatureProvider getUserFeatureProvider(Context context) {
255         if (mUserFeatureProvider == null) {
256             mUserFeatureProvider = new UserFeatureProviderImpl(context.getApplicationContext());
257         }
258         return mUserFeatureProvider;
259     }
260 
261     @Override
getAssistGestureFeatureProvider()262     public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
263         if (mAssistGestureFeatureProvider == null) {
264             mAssistGestureFeatureProvider = new AssistGestureFeatureProviderImpl();
265         }
266         return mAssistGestureFeatureProvider;
267     }
268 
269     @Override
getSlicesFeatureProvider()270     public SlicesFeatureProvider getSlicesFeatureProvider() {
271         if (mSlicesFeatureProvider == null) {
272             mSlicesFeatureProvider = new SlicesFeatureProviderImpl();
273         }
274         return mSlicesFeatureProvider;
275     }
276 
277     @Override
getAccountFeatureProvider()278     public AccountFeatureProvider getAccountFeatureProvider() {
279         if (mAccountFeatureProvider == null) {
280             mAccountFeatureProvider = new AccountFeatureProviderImpl();
281         }
282         return mAccountFeatureProvider;
283     }
284 
285     @Override
getPanelFeatureProvider()286     public PanelFeatureProvider getPanelFeatureProvider() {
287         if (mPanelFeatureProvider == null) {
288             mPanelFeatureProvider = new PanelFeatureProviderImpl();
289         }
290         return mPanelFeatureProvider;
291     }
292 
293     @Override
getContextualCardFeatureProvider(Context context)294     public ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context) {
295         if (mContextualCardFeatureProvider == null) {
296             mContextualCardFeatureProvider = new ContextualCardFeatureProviderImpl(
297                     context.getApplicationContext());
298         }
299         return mContextualCardFeatureProvider;
300     }
301 
302     @Override
getBluetoothFeatureProvider()303     public BluetoothFeatureProvider getBluetoothFeatureProvider() {
304         if (mBluetoothFeatureProvider == null) {
305             mBluetoothFeatureProvider = new BluetoothFeatureProviderImpl(getAppContext());
306         }
307         return mBluetoothFeatureProvider;
308     }
309 
310     @Override
getAwareFeatureProvider()311     public AwareFeatureProvider getAwareFeatureProvider() {
312         if (mAwareFeatureProvider == null) {
313             mAwareFeatureProvider = new AwareFeatureProviderImpl();
314         }
315         return mAwareFeatureProvider;
316     }
317 
318     @Override
getFaceFeatureProvider()319     public FaceFeatureProvider getFaceFeatureProvider() {
320         if (mFaceFeatureProvider == null) {
321             mFaceFeatureProvider = new FaceFeatureProviderImpl();
322         }
323         return mFaceFeatureProvider;
324     }
325 
326     @Override
getBiometricsRepositoryProvider()327     public BiometricsRepositoryProvider getBiometricsRepositoryProvider() {
328         if (mBiometricsRepositoryProvider == null) {
329             mBiometricsRepositoryProvider = new BiometricsRepositoryProviderImpl();
330         }
331         return mBiometricsRepositoryProvider;
332     }
333 
334     @Override
getWifiTrackerLibProvider()335     public WifiTrackerLibProvider getWifiTrackerLibProvider() {
336         if (mWifiTrackerLibProvider == null) {
337             mWifiTrackerLibProvider = new WifiTrackerLibProviderImpl();
338         }
339         return mWifiTrackerLibProvider;
340     }
341 
342     @Override
getSecuritySettingsFeatureProvider()343     public SecuritySettingsFeatureProvider getSecuritySettingsFeatureProvider() {
344         if (mSecuritySettingsFeatureProvider == null) {
345             mSecuritySettingsFeatureProvider = new SecuritySettingsFeatureProviderImpl();
346         }
347         return mSecuritySettingsFeatureProvider;
348     }
349 
350     @Override
getAccessibilitySearchFeatureProvider()351     public AccessibilitySearchFeatureProvider getAccessibilitySearchFeatureProvider() {
352         if (mAccessibilitySearchFeatureProvider == null) {
353             mAccessibilitySearchFeatureProvider = new AccessibilitySearchFeatureProviderImpl();
354         }
355         return mAccessibilitySearchFeatureProvider;
356     }
357 
358     @Override
getAccessibilityMetricsFeatureProvider()359     public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() {
360         if (mAccessibilityMetricsFeatureProvider == null) {
361             mAccessibilityMetricsFeatureProvider = new AccessibilityMetricsFeatureProviderImpl();
362         }
363         return mAccessibilityMetricsFeatureProvider;
364     }
365 
366     @Override
getAdvancedVpnFeatureProvider()367     public AdvancedVpnFeatureProvider getAdvancedVpnFeatureProvider() {
368         if (mAdvancedVpnFeatureProvider == null) {
369             mAdvancedVpnFeatureProvider = new AdvancedVpnFeatureProviderImpl();
370         }
371         return mAdvancedVpnFeatureProvider;
372     }
373 
374     @Override
getWifiFeatureProvider()375     public WifiFeatureProvider getWifiFeatureProvider() {
376         if (mWifiFeatureProvider == null) {
377             mWifiFeatureProvider = new WifiFeatureProvider(getAppContext());
378         }
379         return mWifiFeatureProvider;
380     }
381 
382     @Override
getKeyboardSettingsFeatureProvider()383     public KeyboardSettingsFeatureProvider getKeyboardSettingsFeatureProvider() {
384         if (mKeyboardSettingsFeatureProvider == null) {
385             mKeyboardSettingsFeatureProvider = new KeyboardSettingsFeatureProviderImpl();
386         }
387         return mKeyboardSettingsFeatureProvider;
388     }
389 
390     @Override
getStylusFeatureProvider()391     public StylusFeatureProvider getStylusFeatureProvider() {
392         if (mStylusFeatureProvider == null) {
393             mStylusFeatureProvider = new StylusFeatureProviderImpl();
394         }
395         return mStylusFeatureProvider;
396     }
397 }
398