2 * Copyright (C) 2016 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.settings.overlay;
19 import android.app.AppGlobals;
20 import android.app.admin.DevicePolicyManager;
21 import android.content.Context;
22 import android.net.ConnectivityManager;
23 import android.os.UserManager;
25 import androidx.annotation.Keep;
27 import com.android.settings.accounts.AccountFeatureProvider;
28 import com.android.settings.accounts.AccountFeatureProviderImpl;
29 import com.android.settings.applications.ApplicationFeatureProvider;
30 import com.android.settings.applications.ApplicationFeatureProviderImpl;
31 import com.android.settings.aware.AwareFeatureProvider;
32 import com.android.settings.aware.AwareFeatureProviderImpl;
33 import com.android.settings.biometrics.face.FaceFeatureProvider;
34 import com.android.settings.biometrics.face.FaceFeatureProviderImpl;
35 import com.android.settings.bluetooth.BluetoothFeatureProvider;
36 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
37 import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl;
38 import com.android.settings.core.instrumentation.SettingsMetricsFeatureProvider;
39 import com.android.settings.dashboard.DashboardFeatureProvider;
40 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
41 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
42 import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
43 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
44 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
45 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
46 import com.android.settings.fuelgauge.PowerUsageFeatureProviderImpl;
47 import com.android.settings.gestures.AssistGestureFeatureProvider;
48 import com.android.settings.gestures.AssistGestureFeatureProviderImpl;
49 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider;
50 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProviderImpl;
51 import com.android.settings.localepicker.LocaleFeatureProvider;
52 import com.android.settings.localepicker.LocaleFeatureProviderImpl;
53 import com.android.settings.panel.PanelFeatureProvider;
54 import com.android.settings.panel.PanelFeatureProviderImpl;
55 import com.android.settings.search.SearchFeatureProvider;
56 import com.android.settings.search.SearchFeatureProviderImpl;
57 import com.android.settings.security.SecurityFeatureProvider;
58 import com.android.settings.security.SecurityFeatureProviderImpl;
59 import com.android.settings.slices.SlicesFeatureProvider;
60 import com.android.settings.slices.SlicesFeatureProviderImpl;
61 import com.android.settings.users.UserFeatureProvider;
62 import com.android.settings.users.UserFeatureProviderImpl;
63 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
66 * {@link FeatureFactory} implementation for AOSP Settings.
69 public class FeatureFactoryImpl extends FeatureFactory {
71 private ApplicationFeatureProvider mApplicationFeatureProvider;
72 private MetricsFeatureProvider mMetricsFeatureProvider;
73 private DashboardFeatureProviderImpl mDashboardFeatureProvider;
74 private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider;
75 private LocaleFeatureProvider mLocaleFeatureProvider;
76 private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
77 private SearchFeatureProvider mSearchFeatureProvider;
78 private SecurityFeatureProvider mSecurityFeatureProvider;
79 private SuggestionFeatureProvider mSuggestionFeatureProvider;
80 private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
81 private AssistGestureFeatureProvider mAssistGestureFeatureProvider;
82 private UserFeatureProvider mUserFeatureProvider;
83 private SlicesFeatureProvider mSlicesFeatureProvider;
84 private AccountFeatureProvider mAccountFeatureProvider;
85 private PanelFeatureProvider mPanelFeatureProvider;
86 private ContextualCardFeatureProvider mContextualCardFeatureProvider;
87 private BluetoothFeatureProvider mBluetoothFeatureProvider;
88 private AwareFeatureProvider mAwareFeatureProvider;
89 private FaceFeatureProvider mFaceFeatureProvider;
92 public SupportFeatureProvider getSupportFeatureProvider(Context context) {
97 public MetricsFeatureProvider getMetricsFeatureProvider() {
98 if (mMetricsFeatureProvider == null) {
99 mMetricsFeatureProvider = new SettingsMetricsFeatureProvider();
101 return mMetricsFeatureProvider;
105 public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
106 if (mPowerUsageFeatureProvider == null) {
107 mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(
108 context.getApplicationContext());
110 return mPowerUsageFeatureProvider;
114 public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
115 if (mDashboardFeatureProvider == null) {
116 mDashboardFeatureProvider = new DashboardFeatureProviderImpl(
117 context.getApplicationContext());
119 return mDashboardFeatureProvider;
123 public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
124 if (mDockUpdaterFeatureProvider == null) {
125 mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl();
127 return mDockUpdaterFeatureProvider;
131 public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
132 if (mApplicationFeatureProvider == null) {
133 final Context appContext = context.getApplicationContext();
134 mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(appContext,
135 appContext.getPackageManager(),
136 AppGlobals.getPackageManager(),
137 (DevicePolicyManager) appContext
138 .getSystemService(Context.DEVICE_POLICY_SERVICE));
140 return mApplicationFeatureProvider;
144 public LocaleFeatureProvider getLocaleFeatureProvider() {
145 if (mLocaleFeatureProvider == null) {
146 mLocaleFeatureProvider = new LocaleFeatureProviderImpl();
148 return mLocaleFeatureProvider;
152 public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
153 if (mEnterprisePrivacyFeatureProvider == null) {
154 final Context appContext = context.getApplicationContext();
155 mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(appContext,
156 (DevicePolicyManager) appContext.getSystemService(
157 Context.DEVICE_POLICY_SERVICE),
158 appContext.getPackageManager(),
159 UserManager.get(appContext),
160 (ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE),
161 appContext.getResources());
163 return mEnterprisePrivacyFeatureProvider;
167 public SearchFeatureProvider getSearchFeatureProvider() {
168 if (mSearchFeatureProvider == null) {
169 mSearchFeatureProvider = new SearchFeatureProviderImpl();
171 return mSearchFeatureProvider;
175 public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
180 public SecurityFeatureProvider getSecurityFeatureProvider() {
181 if (mSecurityFeatureProvider == null) {
182 mSecurityFeatureProvider = new SecurityFeatureProviderImpl();
184 return mSecurityFeatureProvider;
188 public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
189 if (mSuggestionFeatureProvider == null) {
190 mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(
191 context.getApplicationContext());
193 return mSuggestionFeatureProvider;
197 public UserFeatureProvider getUserFeatureProvider(Context context) {
198 if (mUserFeatureProvider == null) {
199 mUserFeatureProvider = new UserFeatureProviderImpl(context.getApplicationContext());
201 return mUserFeatureProvider;
205 public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
206 if (mAssistGestureFeatureProvider == null) {
207 mAssistGestureFeatureProvider = new AssistGestureFeatureProviderImpl();
209 return mAssistGestureFeatureProvider;
213 public SlicesFeatureProvider getSlicesFeatureProvider() {
214 if (mSlicesFeatureProvider == null) {
215 mSlicesFeatureProvider = new SlicesFeatureProviderImpl();
217 return mSlicesFeatureProvider;
221 public AccountFeatureProvider getAccountFeatureProvider() {
222 if (mAccountFeatureProvider == null) {
223 mAccountFeatureProvider = new AccountFeatureProviderImpl();
225 return mAccountFeatureProvider;
229 public PanelFeatureProvider getPanelFeatureProvider() {
230 if (mPanelFeatureProvider == null) {
231 mPanelFeatureProvider = new PanelFeatureProviderImpl();
233 return mPanelFeatureProvider;
237 public ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context) {
238 if (mContextualCardFeatureProvider == null) {
239 mContextualCardFeatureProvider = new ContextualCardFeatureProviderImpl(
240 context.getApplicationContext());
242 return mContextualCardFeatureProvider;
246 public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) {
247 if (mBluetoothFeatureProvider == null) {
248 mBluetoothFeatureProvider = new BluetoothFeatureProviderImpl(
249 context.getApplicationContext());
251 return mBluetoothFeatureProvider;
255 public AwareFeatureProvider getAwareFeatureProvider() {
256 if (mAwareFeatureProvider == null) {
257 mAwareFeatureProvider = new AwareFeatureProviderImpl();
259 return mAwareFeatureProvider;
263 public FaceFeatureProvider getFaceFeatureProvider() {
264 if (mFaceFeatureProvider == null) {
265 mFaceFeatureProvider = new FaceFeatureProviderImpl();
267 return mFaceFeatureProvider;