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