• 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 package com.android.settings.testutils;
17 
18 import static org.mockito.Matchers.anyString;
19 import static org.mockito.Mockito.mock;
20 import static org.mockito.Mockito.when;
21 
22 import android.content.Context;
23 
24 import com.android.settings.accounts.AccountFeatureProvider;
25 import com.android.settings.applications.ApplicationFeatureProvider;
26 import com.android.settings.bluetooth.BluetoothFeatureProvider;
27 import com.android.settings.dashboard.DashboardFeatureProvider;
28 import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
29 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
30 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
31 import com.android.settings.gestures.AssistGestureFeatureProvider;
32 import com.android.settings.localepicker.LocaleFeatureProvider;
33 import com.android.settings.overlay.DockUpdaterFeatureProvider;
34 import com.android.settings.overlay.FeatureFactory;
35 import com.android.settings.overlay.SupportFeatureProvider;
36 import com.android.settings.overlay.SurveyFeatureProvider;
37 import com.android.settings.search.DeviceIndexFeatureProvider;
38 import com.android.settings.search.SearchFeatureProvider;
39 import com.android.settings.security.SecurityFeatureProvider;
40 import com.android.settings.slices.SlicesFeatureProvider;
41 import com.android.settings.users.UserFeatureProvider;
42 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
43 
44 import org.mockito.Answers;
45 
46 /**
47  * Test util to provide fake FeatureFactory. To use this factory, call {@code setupForTest} in
48  * {@code @Before} method of the test class.
49  */
50 public class FakeFeatureFactory extends FeatureFactory {
51 
52     public final SupportFeatureProvider supportFeatureProvider;
53     public final MetricsFeatureProvider metricsFeatureProvider;
54     public final PowerUsageFeatureProvider powerUsageFeatureProvider;
55     public final DashboardFeatureProvider dashboardFeatureProvider;
56     public final DockUpdaterFeatureProvider dockUpdaterFeatureProvider;
57     public final LocaleFeatureProvider localeFeatureProvider;
58     public final ApplicationFeatureProvider applicationFeatureProvider;
59     public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
60     public final SurveyFeatureProvider surveyFeatureProvider;
61     public final SecurityFeatureProvider securityFeatureProvider;
62     public final SuggestionFeatureProvider suggestionsFeatureProvider;
63     public final UserFeatureProvider userFeatureProvider;
64     public final AssistGestureFeatureProvider assistGestureFeatureProvider;
65     public final BluetoothFeatureProvider bluetoothFeatureProvider;
66     public final AccountFeatureProvider mAccountFeatureProvider;
67     public final DeviceIndexFeatureProvider deviceIndexFeatureProvider;
68 
69     public SlicesFeatureProvider slicesFeatureProvider;
70     public SearchFeatureProvider searchFeatureProvider;
71 
72     /**
73      * Call this in {@code @Before} method of the test class to use fake factory.
74      */
setupForTest()75     public static FakeFeatureFactory setupForTest() {
76         final Context context = mock(Context.class, Answers.RETURNS_DEEP_STUBS);
77         sFactory = null;
78         when(context.getString(com.android.settings.R.string.config_featureFactory))
79                 .thenReturn(FakeFeatureFactory.class.getName());
80         try {
81             Class c = FakeFeatureFactory.class;
82             when(context.getClassLoader().loadClass(anyString())).thenReturn(c);
83         } catch (ClassNotFoundException e) {
84             // Ignore.
85         }
86         return (FakeFeatureFactory) FakeFeatureFactory.getFactory(context);
87     }
88 
89     /**
90      * Used by reflection. Do not call directly.
91      */
FakeFeatureFactory()92     public FakeFeatureFactory() {
93         supportFeatureProvider = mock(SupportFeatureProvider.class);
94         metricsFeatureProvider = mock(MetricsFeatureProvider.class);
95         powerUsageFeatureProvider = mock(PowerUsageFeatureProvider.class);
96         dashboardFeatureProvider = mock(DashboardFeatureProvider.class);
97         dockUpdaterFeatureProvider = mock(DockUpdaterFeatureProvider.class);
98         localeFeatureProvider = mock(LocaleFeatureProvider.class);
99         applicationFeatureProvider = mock(ApplicationFeatureProvider.class);
100         enterprisePrivacyFeatureProvider = mock(EnterprisePrivacyFeatureProvider.class);
101         searchFeatureProvider = mock(SearchFeatureProvider.class);
102         surveyFeatureProvider = mock(SurveyFeatureProvider.class);
103         securityFeatureProvider = mock(SecurityFeatureProvider.class);
104         suggestionsFeatureProvider = mock(SuggestionFeatureProvider.class);
105         userFeatureProvider = mock(UserFeatureProvider.class);
106         assistGestureFeatureProvider = mock(AssistGestureFeatureProvider.class);
107         bluetoothFeatureProvider = mock(BluetoothFeatureProvider.class);
108         slicesFeatureProvider = mock(SlicesFeatureProvider.class);
109         mAccountFeatureProvider = mock(AccountFeatureProvider.class);
110         deviceIndexFeatureProvider = mock(DeviceIndexFeatureProvider.class);
111     }
112 
113     @Override
getSuggestionFeatureProvider(Context context)114     public SuggestionFeatureProvider getSuggestionFeatureProvider(Context context) {
115         return suggestionsFeatureProvider;
116     }
117 
118     @Override
getSupportFeatureProvider(Context context)119     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
120         return supportFeatureProvider;
121     }
122 
123     @Override
getMetricsFeatureProvider()124     public MetricsFeatureProvider getMetricsFeatureProvider() {
125         return metricsFeatureProvider;
126     }
127 
128     @Override
getPowerUsageFeatureProvider(Context context)129     public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) {
130         return powerUsageFeatureProvider;
131     }
132 
133     @Override
getDashboardFeatureProvider(Context context)134     public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
135         return dashboardFeatureProvider;
136     }
137 
138     @Override
getDockUpdaterFeatureProvider()139     public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
140         return dockUpdaterFeatureProvider;
141     }
142 
143     @Override
getApplicationFeatureProvider(Context context)144     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
145         return applicationFeatureProvider;
146     }
147 
148     @Override
getLocaleFeatureProvider()149     public LocaleFeatureProvider getLocaleFeatureProvider() {
150         return localeFeatureProvider;
151     }
152 
153     @Override
getEnterprisePrivacyFeatureProvider(Context context)154     public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
155         return enterprisePrivacyFeatureProvider;
156     }
157 
158     @Override
getSearchFeatureProvider()159     public SearchFeatureProvider getSearchFeatureProvider() {
160         return searchFeatureProvider;
161     }
162 
163     @Override
getSurveyFeatureProvider(Context context)164     public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
165         return surveyFeatureProvider;
166     }
167 
168     @Override
getSecurityFeatureProvider()169     public SecurityFeatureProvider getSecurityFeatureProvider() {
170         return securityFeatureProvider;
171     }
172 
173     @Override
getUserFeatureProvider(Context context)174     public UserFeatureProvider getUserFeatureProvider(Context context) {
175         return userFeatureProvider;
176     }
177 
178     @Override
getBluetoothFeatureProvider(Context context)179     public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) {
180         return bluetoothFeatureProvider;
181     }
182 
183     @Override
getAssistGestureFeatureProvider()184     public AssistGestureFeatureProvider getAssistGestureFeatureProvider() {
185         return assistGestureFeatureProvider;
186     }
187 
188     @Override
getSlicesFeatureProvider()189     public SlicesFeatureProvider getSlicesFeatureProvider() {
190         return slicesFeatureProvider;
191     }
192 
193     @Override
getAccountFeatureProvider()194     public AccountFeatureProvider getAccountFeatureProvider() {
195         return mAccountFeatureProvider;
196     }
197 
198     @Override
getDeviceIndexFeatureProvider()199     public DeviceIndexFeatureProvider getDeviceIndexFeatureProvider() {
200         return deviceIndexFeatureProvider;
201     }
202 }
203