Home | History | Annotate | Download | only in overlay
      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.applications.ApplicationFeatureProvider;
     27 import com.android.settings.applications.ApplicationFeatureProviderImpl;
     28 import com.android.settings.applications.IPackageManagerWrapperImpl;
     29 import com.android.settings.applications.PackageManagerWrapperImpl;
     30 import com.android.settings.bluetooth.BluetoothFeatureProvider;
     31 import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
     32 import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
     33 import com.android.settings.connecteddevice.SmsMirroringFeatureProviderImpl;
     34 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
     35 import com.android.settings.dashboard.DashboardFeatureProvider;
     36 import com.android.settings.dashboard.DashboardFeatureProviderImpl;
     37 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
     38 import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
     39 import com.android.settings.datausage.DataPlanFeatureProvider;
     40 import com.android.settings.datausage.DataPlanFeatureProviderImpl;
     41 import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl;
     42 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
     43 import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl;
     44 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
     45 import com.android.settings.fuelgauge.PowerUsageFeatureProviderImpl;
     46 import com.android.settings.gestures.AssistGestureFeatureProvider;
     47 import com.android.settings.gestures.AssistGestureFeatureProviderImpl;
     48 import com.android.settings.localepicker.LocaleFeatureProvider;
     49 import com.android.settings.localepicker.LocaleFeatureProviderImpl;
     50 import com.android.settings.search.SearchFeatureProvider;
     51 import com.android.settings.search.SearchFeatureProviderImpl;
     52 import com.android.settings.security.SecurityFeatureProvider;
     53 import com.android.settings.security.SecurityFeatureProviderImpl;
     54 import com.android.settings.users.UserFeatureProvider;
     55 import com.android.settings.users.UserFeatureProviderImpl;
     56 import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
     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 LocaleFeatureProvider mLocaleFeatureProvider;
     68     private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
     69     private SearchFeatureProvider mSearchFeatureProvider;
     70     private SecurityFeatureProvider mSecurityFeatureProvider;
     71     private SuggestionFeatureProvider mSuggestionFeatureProvider;
     72     private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
     73     private AssistGestureFeatureProvider mAssistGestureFeatureProvider;
     74     private UserFeatureProvider mUserFeatureProvider;
     75     private BluetoothFeatureProvider mBluetoothFeatureProvider;
     76     private DataPlanFeatureProvider mDataPlanFeatureProvider;
     77     private SmsMirroringFeatureProvider mSmsMirroringFeatureProvider;
     78 
     79     @Override
     80     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
     81         return null;
     82     }
     83 
     84     @Override
     85     public MetricsFeatureProvider getMetricsFeatureProvider() {
     86         if (mMetricsFeatureProvider == null) {
     87             mMetricsFeatureProvider = new MetricsFeatureProvider();
     88         }
     89         return mMetricsFeatureProvider;
     90     }
     91 
     92     @Override
     93     public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
     94         if (mPowerUsageFeatureProvider == null) {
     95             mPowerUsageFeatureProvider = new PowerUsageFeatureProviderImpl(context);
     96         }
     97         return mPowerUsageFeatureProvider;
     98     }
     99 
    100     @Override
    101     public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
    102         if (mDashboardFeatureProvider == null) {
    103             mDashboardFeatureProvider = new DashboardFeatureProviderImpl(context);
    104         }
    105         return mDashboardFeatureProvider;
    106     }
    107 
    108     @Override
    109     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
    110         if (mApplicationFeatureProvider == null) {
    111             mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
    112                     new PackageManagerWrapperImpl(context.getPackageManager()),
    113                     new IPackageManagerWrapperImpl(AppGlobals.getPackageManager()),
    114                     new DevicePolicyManagerWrapperImpl((DevicePolicyManager) context
    115                             .getSystemService(Context.DEVICE_POLICY_SERVICE)));
    116         }
    117         return mApplicationFeatureProvider;
    118     }
    119 
    120     @Override
    121     public LocaleFeatureProvider getLocaleFeatureProvider() {
    122         if (mLocaleFeatureProvider == null) {
    123             mLocaleFeatureProvider = new LocaleFeatureProviderImpl();
    124         }
    125         return mLocaleFeatureProvider;
    126     }
    127 
    128     @Override
    129     public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
    130         if (mEnterprisePrivacyFeatureProvider == null) {
    131             mEnterprisePrivacyFeatureProvider = new EnterprisePrivacyFeatureProviderImpl(context,
    132                     new DevicePolicyManagerWrapperImpl((DevicePolicyManager) context
    133                             .getSystemService(Context.DEVICE_POLICY_SERVICE)),
    134                     new PackageManagerWrapperImpl(context.getPackageManager()),
    135                     UserManager.get(context),
    136                     new ConnectivityManagerWrapperImpl((ConnectivityManager) context
    137                             .getSystemService(Context.CONNECTIVITY_SERVICE)),
    138                     context.getResources());
    139         }
    140         return mEnterprisePrivacyFeatureProvider;
    141     }
    142 
    143     @Override
    144     public SearchFeatureProvider getSearchFeatureProvider() {
    145         if (mSearchFeatureProvider == null) {
    146             mSearchFeatureProvider = new SearchFeatureProviderImpl();
    147         }
    148         return mSearchFeatureProvider;
    149     }
    150 
    151     @Override
    152     public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
    153         return null;
    154     }
    155 
    156     @Override
    157     public SecurityFeatureProvider getSecurityFeatureProvider() {
    158         if (mSecurityFeatureProvider == null) {
    159             mSecurityFeatureProvider = new SecurityFeatureProviderImpl();
    160         }
    161         return mSecurityFeatureProvider;
    162     }
    163 
    164     @Override
    165     public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
    166         if (mSuggestionFeatureProvider == null) {
    167             mSuggestionFeatureProvider = new SuggestionFeatureProviderImpl(context);
    168         }
    169         return mSuggestionFeatureProvider;
    170     }
    171 
    172     @Override
    173     public UserFeatureProvider getUserFeatureProvider(Context context) {
    174         if (mUserFeatureProvider == null) {
    175             mUserFeatureProvider = new UserFeatureProviderImpl(context);
    176         }
    177         return mUserFeatureProvider;
    178     }
    179 
    180     @Override
    181     public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) {
    182         if (mBluetoothFeatureProvider == null) {
    183             mBluetoothFeatureProvider = new BluetoothFeatureProviderImpl();
    184         }
    185         return mBluetoothFeatureProvider;
    186     }
    187 
    188     @Override
    189     public DataPlanFeatureProvider getDataPlanFeatureProvider() {
    190         if (mDataPlanFeatureProvider == null) {
    191             mDataPlanFeatureProvider = new DataPlanFeatureProviderImpl();
    192         }
    193         return mDataPlanFeatureProvider;
    194     }
    195 
    196     @Override
    197     public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
    198         if (mAssistGestureFeatureProvider == null) {
    199             mAssistGestureFeatureProvider = new AssistGestureFeatureProviderImpl();
    200         }
    201         return mAssistGestureFeatureProvider;
    202     }
    203 
    204     @Override
    205     public SmsMirroringFeatureProvider getSmsMirroringFeatureProvider() {
    206         if (mSmsMirroringFeatureProvider == null) {
    207             mSmsMirroringFeatureProvider = new SmsMirroringFeatureProviderImpl();
    208         }
    209         return mSmsMirroringFeatureProvider;
    210     }
    211 }
    212