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