• 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.os.UserManager;
24 import android.support.annotation.Keep;
25 
26 import com.android.settings.accounts.AccountFeatureProvider;
27 import com.android.settings.accounts.AccountFeatureProviderImpl;
28 import com.android.settings.applications.ApplicationFeatureProvider;
29 import com.android.settings.applications.ApplicationFeatureProviderImpl;
30 import com.android.settings.bluetooth.BluetoothFeatureProvider;
31 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
32 import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl;
33 import com.android.settings.dashboard.DashboardFeatureProvider;
34 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
35 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
36 import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
37 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
38 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
39 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
40 import com.android.settings.fuelgauge.PowerUsageFeatureProviderImpl;
41 import com.android.settings.gestures.AssistGestureFeatureProvider;
42 import com.android.settings.gestures.AssistGestureFeatureProviderImpl;
43 import com.android.settings.localepicker.LocaleFeatureProvider;
44 import com.android.settings.localepicker.LocaleFeatureProviderImpl;
45 import com.android.settings.search.DeviceIndexFeatureProvider;
46 import com.android.settings.search.DeviceIndexFeatureProviderImpl;
47 import com.android.settings.search.SearchFeatureProvider;
48 import com.android.settings.search.SearchFeatureProviderImpl;
49 import com.android.settings.security.SecurityFeatureProvider;
50 import com.android.settings.security.SecurityFeatureProviderImpl;
51 import com.android.settings.slices.SlicesFeatureProvider;
52 import com.android.settings.slices.SlicesFeatureProviderImpl;
53 import com.android.settings.users.UserFeatureProvider;
54 import com.android.settings.users.UserFeatureProviderImpl;
55 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
56 import com.android.settingslib.wrapper.PackageManagerWrapper;
57 
58 /**
59  * {@link FeatureFactory} implementation for AOSP Settings.
60  */
61 @Keep
62 public class FeatureFactoryImpl extends FeatureFactory {
63 
64     private ApplicationFeatureProvider mApplicationFeatureProvider;
65     private MetricsFeatureProvider mMetricsFeatureProvider;
66     private DashboardFeatureProviderImpl mDashboardFeatureProvider;
67     private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider;
68     private LocaleFeatureProvider mLocaleFeatureProvider;
69     private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
70     private SearchFeatureProvider mSearchFeatureProvider;
71     private SecurityFeatureProvider mSecurityFeatureProvider;
72     private SuggestionFeatureProvider mSuggestionFeatureProvider;
73     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
74     private AssistGestureFeatureProvider mAssistGestureFeatureProvider;
75     private UserFeatureProvider mUserFeatureProvider;
76     private BluetoothFeatureProvider mBluetoothFeatureProvider;
77     private SlicesFeatureProvider mSlicesFeatureProvider;
78     private AccountFeatureProvider mAccountFeatureProvider;
79     private DeviceIndexFeatureProviderImpl mDeviceIndexFeatureProvider;
80 
81     @Override
getSupportFeatureProvider(Context context)82     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
83         return null;
84     }
85 
86     @Override
getMetricsFeatureProvider()87     public MetricsFeatureProvider getMetricsFeatureProvider() {
88         if (mMetricsFeatureProvider == null) {
89             mMetricsFeatureProvider = new MetricsFeatureProvider();
90         }
91         return mMetricsFeatureProvider;
92     }
93 
94     @Override
getPowerUsageFeatureProvider(Context context)95     public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
96         if (mPowerUsageFeatureProvider == null) {
97             mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(context);
98         }
99         return mPowerUsageFeatureProvider;
100     }
101 
102     @Override
getDashboardFeatureProvider(Context context)103     public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
104         if (mDashboardFeatureProvider == null) {
105             mDashboardFeatureProvider = new DashboardFeatureProviderImpl(context);
106         }
107         return mDashboardFeatureProvider;
108     }
109 
110     @Override
getDockUpdaterFeatureProvider()111     public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
112         if (mDockUpdaterFeatureProvider == null) {
113             mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl();
114         }
115         return mDockUpdaterFeatureProvider;
116     }
117 
118     @Override
getApplicationFeatureProvider(Context context)119     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
120         if (mApplicationFeatureProvider == null) {
121             mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
122                     new PackageManagerWrapper(context.getPackageManager()),
123                     AppGlobals.getPackageManager(),
124                     (DevicePolicyManager) context
125                             .getSystemService(Context.DEVICE_POLICY_SERVICE));
126         }
127         return mApplicationFeatureProvider;
128     }
129 
130     @Override
getLocaleFeatureProvider()131     public LocaleFeatureProvider getLocaleFeatureProvider() {
132         if (mLocaleFeatureProvider == null) {
133             mLocaleFeatureProvider = new LocaleFeatureProviderImpl();
134         }
135         return mLocaleFeatureProvider;
136     }
137 
138     @Override
getEnterprisePrivacyFeatureProvider(Context context)139     public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
140         if (mEnterprisePrivacyFeatureProvider == null) {
141             mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(context,
142                     (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE),
143                     new PackageManagerWrapper(context.getPackageManager()),
144                     UserManager.get(context),
145                     (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE),
146                     context.getResources());
147         }
148         return mEnterprisePrivacyFeatureProvider;
149     }
150 
151     @Override
getSearchFeatureProvider()152     public SearchFeatureProvider getSearchFeatureProvider() {
153         if (mSearchFeatureProvider == null) {
154             mSearchFeatureProvider = new SearchFeatureProviderImpl();
155         }
156         return mSearchFeatureProvider;
157     }
158 
159     @Override
getSurveyFeatureProvider(Context context)160     public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
161         return null;
162     }
163 
164     @Override
getSecurityFeatureProvider()165     public SecurityFeatureProvider getSecurityFeatureProvider() {
166         if (mSecurityFeatureProvider == null) {
167             mSecurityFeatureProvider = new SecurityFeatureProviderImpl();
168         }
169         return mSecurityFeatureProvider;
170     }
171 
172     @Override
getSuggestionFeatureProvider(Context context)173     public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
174         if (mSuggestionFeatureProvider == null) {
175             mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(context);
176         }
177         return mSuggestionFeatureProvider;
178     }
179 
180     @Override
getUserFeatureProvider(Context context)181     public UserFeatureProvider getUserFeatureProvider(Context context) {
182         if (mUserFeatureProvider == null) {
183             mUserFeatureProvider = new UserFeatureProviderImpl(context);
184         }
185         return mUserFeatureProvider;
186     }
187 
188     @Override
getBluetoothFeatureProvider(Context context)189     public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) {
190         if (mBluetoothFeatureProvider == null) {
191             mBluetoothFeatureProvider = new BluetoothFeatureProviderImpl();
192         }
193         return mBluetoothFeatureProvider;
194     }
195 
196     @Override
getAssistGestureFeatureProvider()197     public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
198         if (mAssistGestureFeatureProvider == null) {
199             mAssistGestureFeatureProvider = new AssistGestureFeatureProviderImpl();
200         }
201         return mAssistGestureFeatureProvider;
202     }
203 
204     @Override
getSlicesFeatureProvider()205     public SlicesFeatureProvider getSlicesFeatureProvider() {
206         if (mSlicesFeatureProvider == null) {
207             mSlicesFeatureProvider = new SlicesFeatureProviderImpl();
208         }
209         return mSlicesFeatureProvider;
210     }
211 
212     @Override
getAccountFeatureProvider()213     public AccountFeatureProvider getAccountFeatureProvider() {
214         if (mAccountFeatureProvider == null) {
215             mAccountFeatureProvider = new AccountFeatureProviderImpl();
216         }
217         return mAccountFeatureProvider;
218     }
219 
220     @Override
getDeviceIndexFeatureProvider()221     public DeviceIndexFeatureProvider getDeviceIndexFeatureProvider() {
222         if (mDeviceIndexFeatureProvider == null) {
223             mDeviceIndexFeatureProvider = new DeviceIndexFeatureProviderImpl();
224         }
225         return mDeviceIndexFeatureProvider;
226     }
227 }
228