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.applications.GameSettingsFeatureProvider; 37 import com.android.settings.applications.GameSettingsFeatureProviderImpl; 38 import com.android.settings.applications.appinfo.ExtraAppInfoFeatureProvider; 39 import com.android.settings.applications.appinfo.ExtraAppInfoFeatureProviderImpl; 40 import com.android.settings.aware.AwareFeatureProvider; 41 import com.android.settings.aware.AwareFeatureProviderImpl; 42 import com.android.settings.biometrics.face.FaceFeatureProvider; 43 import com.android.settings.biometrics.face.FaceFeatureProviderImpl; 44 import com.android.settings.bluetooth.BluetoothFeatureProvider; 45 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl; 46 import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl; 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.enterprise.EnterprisePrivacyFeatureProvider; 53 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl; 54 import com.android.settings.fuelgauge.BatterySettingsFeatureProvider; 55 import com.android.settings.fuelgauge.BatterySettingsFeatureProviderImpl; 56 import com.android.settings.fuelgauge.BatteryStatusFeatureProvider; 57 import com.android.settings.fuelgauge.BatteryStatusFeatureProviderImpl; 58 import com.android.settings.fuelgauge.PowerUsageFeatureProvider; 59 import com.android.settings.fuelgauge.PowerUsageFeatureProviderImpl; 60 import com.android.settings.gestures.AssistGestureFeatureProvider; 61 import com.android.settings.gestures.AssistGestureFeatureProviderImpl; 62 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; 63 import com.android.settings.homepage.contextualcards.ContextualCardFeatureProviderImpl; 64 import com.android.settings.localepicker.LocaleFeatureProvider; 65 import com.android.settings.localepicker.LocaleFeatureProviderImpl; 66 import com.android.settings.panel.PanelFeatureProvider; 67 import com.android.settings.panel.PanelFeatureProviderImpl; 68 import com.android.settings.search.SearchFeatureProvider; 69 import com.android.settings.search.SearchFeatureProviderImpl; 70 import com.android.settings.security.SecurityFeatureProvider; 71 import com.android.settings.security.SecurityFeatureProviderImpl; 72 import com.android.settings.security.SecuritySettingsFeatureProvider; 73 import com.android.settings.security.SecuritySettingsFeatureProviderImpl; 74 import com.android.settings.slices.SlicesFeatureProvider; 75 import com.android.settings.slices.SlicesFeatureProviderImpl; 76 import com.android.settings.users.UserFeatureProvider; 77 import com.android.settings.users.UserFeatureProviderImpl; 78 import com.android.settings.wifi.WifiTrackerLibProvider; 79 import com.android.settings.wifi.WifiTrackerLibProviderImpl; 80 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; 81 82 /** 83 * {@link FeatureFactory} implementation for AOSP Settings. 84 */ 85 @Keep 86 public class FeatureFactoryImpl extends FeatureFactory { 87 88 private ApplicationFeatureProvider mApplicationFeatureProvider; 89 private MetricsFeatureProvider mMetricsFeatureProvider; 90 private DashboardFeatureProviderImpl mDashboardFeatureProvider; 91 private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider; 92 private LocaleFeatureProvider mLocaleFeatureProvider; 93 private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider; 94 private SearchFeatureProvider mSearchFeatureProvider; 95 private SecurityFeatureProvider mSecurityFeatureProvider; 96 private SuggestionFeatureProvider mSuggestionFeatureProvider; 97 private PowerUsageFeatureProvider mPowerUsageFeatureProvider; 98 private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; 99 private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider; 100 private AssistGestureFeatureProvider mAssistGestureFeatureProvider; 101 private UserFeatureProvider mUserFeatureProvider; 102 private SlicesFeatureProvider mSlicesFeatureProvider; 103 private AccountFeatureProvider mAccountFeatureProvider; 104 private PanelFeatureProvider mPanelFeatureProvider; 105 private ContextualCardFeatureProvider mContextualCardFeatureProvider; 106 private BluetoothFeatureProvider mBluetoothFeatureProvider; 107 private AwareFeatureProvider mAwareFeatureProvider; 108 private FaceFeatureProvider mFaceFeatureProvider; 109 private WifiTrackerLibProvider mWifiTrackerLibProvider; 110 private ExtraAppInfoFeatureProvider mExtraAppInfoFeatureProvider; 111 private SecuritySettingsFeatureProvider mSecuritySettingsFeatureProvider; 112 private GameSettingsFeatureProvider mGameSettingsFeatureProvider; 113 private AccessibilitySearchFeatureProvider mAccessibilitySearchFeatureProvider; 114 private AccessibilityMetricsFeatureProvider mAccessibilityMetricsFeatureProvider; 115 116 @Override getSupportFeatureProvider(Context context)117 public SupportFeatureProvider getSupportFeatureProvider(Context context) { 118 return null; 119 } 120 121 @Override getMetricsFeatureProvider()122 public MetricsFeatureProvider getMetricsFeatureProvider() { 123 if (mMetricsFeatureProvider == null) { 124 mMetricsFeatureProvider = new SettingsMetricsFeatureProvider(); 125 } 126 return mMetricsFeatureProvider; 127 } 128 129 @Override getPowerUsageFeatureProvider(Context context)130 public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) { 131 if (mPowerUsageFeatureProvider == null) { 132 mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl( 133 context.getApplicationContext()); 134 } 135 return mPowerUsageFeatureProvider; 136 } 137 138 @Override getBatteryStatusFeatureProvider(Context context)139 public BatteryStatusFeatureProvider getBatteryStatusFeatureProvider(Context context) { 140 if (mBatteryStatusFeatureProvider == null) { 141 mBatteryStatusFeatureProvider = new BatteryStatusFeatureProviderImpl( 142 context.getApplicationContext()); 143 } 144 return mBatteryStatusFeatureProvider; 145 } 146 147 @Override getBatterySettingsFeatureProvider(Context context)148 public BatterySettingsFeatureProvider getBatterySettingsFeatureProvider(Context context) { 149 if (mBatterySettingsFeatureProvider == null) { 150 mBatterySettingsFeatureProvider = new BatterySettingsFeatureProviderImpl(context); 151 } 152 return mBatterySettingsFeatureProvider; 153 } 154 155 @Override getDashboardFeatureProvider(Context context)156 public DashboardFeatureProvider getDashboardFeatureProvider(Context context) { 157 if (mDashboardFeatureProvider == null) { 158 mDashboardFeatureProvider = new DashboardFeatureProviderImpl( 159 context.getApplicationContext()); 160 } 161 return mDashboardFeatureProvider; 162 } 163 164 @Override getDockUpdaterFeatureProvider()165 public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() { 166 if (mDockUpdaterFeatureProvider == null) { 167 mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl(); 168 } 169 return mDockUpdaterFeatureProvider; 170 } 171 172 @Override getApplicationFeatureProvider(Context context)173 public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) { 174 if (mApplicationFeatureProvider == null) { 175 final Context appContext = context.getApplicationContext(); 176 mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(appContext, 177 appContext.getPackageManager(), 178 AppGlobals.getPackageManager(), 179 (DevicePolicyManager) appContext 180 .getSystemService(Context.DEVICE_POLICY_SERVICE)); 181 } 182 return mApplicationFeatureProvider; 183 } 184 185 @Override getLocaleFeatureProvider()186 public LocaleFeatureProvider getLocaleFeatureProvider() { 187 if (mLocaleFeatureProvider == null) { 188 mLocaleFeatureProvider = new LocaleFeatureProviderImpl(); 189 } 190 return mLocaleFeatureProvider; 191 } 192 193 @Override getEnterprisePrivacyFeatureProvider(Context context)194 public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) { 195 if (mEnterprisePrivacyFeatureProvider == null) { 196 final Context appContext = context.getApplicationContext(); 197 mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(appContext, 198 (DevicePolicyManager) appContext.getSystemService( 199 Context.DEVICE_POLICY_SERVICE), 200 appContext.getPackageManager(), 201 UserManager.get(appContext), 202 appContext.getSystemService(ConnectivityManager.class), 203 appContext.getSystemService(VpnManager.class), 204 appContext.getResources()); 205 } 206 return mEnterprisePrivacyFeatureProvider; 207 } 208 209 @Override getSearchFeatureProvider()210 public SearchFeatureProvider getSearchFeatureProvider() { 211 if (mSearchFeatureProvider == null) { 212 mSearchFeatureProvider = new SearchFeatureProviderImpl(); 213 } 214 return mSearchFeatureProvider; 215 } 216 217 @Override getSurveyFeatureProvider(Context context)218 public SurveyFeatureProvider getSurveyFeatureProvider(Context context) { 219 return null; 220 } 221 222 @Override getSecurityFeatureProvider()223 public SecurityFeatureProvider getSecurityFeatureProvider() { 224 if (mSecurityFeatureProvider == null) { 225 mSecurityFeatureProvider = new SecurityFeatureProviderImpl(); 226 } 227 return mSecurityFeatureProvider; 228 } 229 230 @Override getSuggestionFeatureProvider(Context context)231 public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) { 232 if (mSuggestionFeatureProvider == null) { 233 mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl( 234 context.getApplicationContext()); 235 } 236 return mSuggestionFeatureProvider; 237 } 238 239 @Override getUserFeatureProvider(Context context)240 public UserFeatureProvider getUserFeatureProvider(Context context) { 241 if (mUserFeatureProvider == null) { 242 mUserFeatureProvider = new UserFeatureProviderImpl(context.getApplicationContext()); 243 } 244 return mUserFeatureProvider; 245 } 246 247 @Override getAssistGestureFeatureProvider()248 public AssistGestureFeatureProvider getAssistGestureFeatureProvider() { 249 if (mAssistGestureFeatureProvider == null) { 250 mAssistGestureFeatureProvider = new AssistGestureFeatureProviderImpl(); 251 } 252 return mAssistGestureFeatureProvider; 253 } 254 255 @Override getSlicesFeatureProvider()256 public SlicesFeatureProvider getSlicesFeatureProvider() { 257 if (mSlicesFeatureProvider == null) { 258 mSlicesFeatureProvider = new SlicesFeatureProviderImpl(); 259 } 260 return mSlicesFeatureProvider; 261 } 262 263 @Override getAccountFeatureProvider()264 public AccountFeatureProvider getAccountFeatureProvider() { 265 if (mAccountFeatureProvider == null) { 266 mAccountFeatureProvider = new AccountFeatureProviderImpl(); 267 } 268 return mAccountFeatureProvider; 269 } 270 271 @Override getPanelFeatureProvider()272 public PanelFeatureProvider getPanelFeatureProvider() { 273 if (mPanelFeatureProvider == null) { 274 mPanelFeatureProvider = new PanelFeatureProviderImpl(); 275 } 276 return mPanelFeatureProvider; 277 } 278 279 @Override getContextualCardFeatureProvider(Context context)280 public ContextualCardFeatureProvider getContextualCardFeatureProvider(Context context) { 281 if (mContextualCardFeatureProvider == null) { 282 mContextualCardFeatureProvider = new ContextualCardFeatureProviderImpl( 283 context.getApplicationContext()); 284 } 285 return mContextualCardFeatureProvider; 286 } 287 288 @Override getBluetoothFeatureProvider(Context context)289 public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) { 290 if (mBluetoothFeatureProvider == null) { 291 mBluetoothFeatureProvider = new BluetoothFeatureProviderImpl( 292 context.getApplicationContext()); 293 } 294 return mBluetoothFeatureProvider; 295 } 296 297 @Override getAwareFeatureProvider()298 public AwareFeatureProvider getAwareFeatureProvider() { 299 if (mAwareFeatureProvider == null) { 300 mAwareFeatureProvider = new AwareFeatureProviderImpl(); 301 } 302 return mAwareFeatureProvider; 303 } 304 305 @Override getFaceFeatureProvider()306 public FaceFeatureProvider getFaceFeatureProvider() { 307 if (mFaceFeatureProvider == null) { 308 mFaceFeatureProvider = new FaceFeatureProviderImpl(); 309 } 310 return mFaceFeatureProvider; 311 } 312 313 @Override getWifiTrackerLibProvider()314 public WifiTrackerLibProvider getWifiTrackerLibProvider() { 315 if (mWifiTrackerLibProvider == null) { 316 mWifiTrackerLibProvider = new WifiTrackerLibProviderImpl(); 317 } 318 return mWifiTrackerLibProvider; 319 } 320 321 @Override getExtraAppInfoFeatureProvider()322 public ExtraAppInfoFeatureProvider getExtraAppInfoFeatureProvider() { 323 if (mExtraAppInfoFeatureProvider == null) { 324 mExtraAppInfoFeatureProvider = new ExtraAppInfoFeatureProviderImpl(); 325 } 326 return mExtraAppInfoFeatureProvider; 327 } 328 329 @Override getSecuritySettingsFeatureProvider()330 public SecuritySettingsFeatureProvider getSecuritySettingsFeatureProvider() { 331 if (mSecuritySettingsFeatureProvider == null) { 332 mSecuritySettingsFeatureProvider = new SecuritySettingsFeatureProviderImpl(); 333 } 334 return mSecuritySettingsFeatureProvider; 335 } 336 337 @Override getGameSettingsFeatureProvider()338 public GameSettingsFeatureProvider getGameSettingsFeatureProvider() { 339 if (mGameSettingsFeatureProvider == null) { 340 mGameSettingsFeatureProvider = new GameSettingsFeatureProviderImpl(); 341 } 342 return mGameSettingsFeatureProvider; 343 } 344 345 @Override getAccessibilitySearchFeatureProvider()346 public AccessibilitySearchFeatureProvider getAccessibilitySearchFeatureProvider() { 347 if (mAccessibilitySearchFeatureProvider == null) { 348 mAccessibilitySearchFeatureProvider = new AccessibilitySearchFeatureProviderImpl(); 349 } 350 return mAccessibilitySearchFeatureProvider; 351 } 352 353 @Override getAccessibilityMetricsFeatureProvider()354 public AccessibilityMetricsFeatureProvider getAccessibilityMetricsFeatureProvider() { 355 if (mAccessibilityMetricsFeatureProvider == null) { 356 mAccessibilityMetricsFeatureProvider = new AccessibilityMetricsFeatureProviderImpl(); 357 } 358 return mAccessibilityMetricsFeatureProvider; 359 } 360 } 361