2 * Copyright (C) 2016 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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
16 package com.android.settings.testutils;
18 import android.content.Context;
20 import com.android.settings.applications.ApplicationFeatureProvider;
21 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
22 import com.android.settings.dashboard.DashboardFeatureProvider;
23 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
24 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
25 import com.android.settings.localepicker.LocaleFeatureProvider;
26 import com.android.settings.overlay.FeatureFactory;
27 import com.android.settings.overlay.SupportFeatureProvider;
28 import com.android.settings.search2.SearchFeatureProvider;
29 import com.android.settings.overlay.SurveyFeatureProvider;
31 import static org.mockito.Matchers.anyString;
32 import static org.mockito.Mockito.mock;
33 import static org.mockito.Mockito.when;
36 * Test util to provide fake FeatureFactory. To use this factory, call {@code setupForTest} in
37 * {@code @Before} method of the test class.
39 public class FakeFeatureFactory extends FeatureFactory {
41 public final SupportFeatureProvider supportFeatureProvider;
42 public final MetricsFeatureProvider metricsFeatureProvider;
43 public final PowerUsageFeatureProvider powerUsageFeatureProvider;
44 public final DashboardFeatureProvider dashboardFeatureProvider;
45 public final LocaleFeatureProvider localeFeatureProvider;
46 public final ApplicationFeatureProvider applicationFeatureProvider;
47 public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider;
48 public final SearchFeatureProvider searchFeatureProvider;
49 public final SurveyFeatureProvider surveyFeatureProvider;
52 * Call this in {@code @Before} method of the test class to use fake factory.
54 * @param context The context must be a deep mock.
56 public static void setupForTest(Context context) {
58 when(context.getString(com.android.settings.R.string.config_featureFactory))
59 .thenReturn(FakeFeatureFactory.class.getName());
61 Class c = FakeFeatureFactory.class;
62 when(context.getClassLoader().loadClass(anyString())).thenReturn(c);
63 } catch (ClassNotFoundException e) {
69 * Used by reflection. Do not call directly.
71 public FakeFeatureFactory() {
72 supportFeatureProvider = mock(SupportFeatureProvider.class);
73 metricsFeatureProvider = mock(MetricsFeatureProvider.class);
74 powerUsageFeatureProvider = mock(PowerUsageFeatureProvider.class);
75 dashboardFeatureProvider = mock(DashboardFeatureProvider.class);
76 localeFeatureProvider = mock(LocaleFeatureProvider.class);
77 applicationFeatureProvider = mock(ApplicationFeatureProvider.class);
78 enterprisePrivacyFeatureProvider = mock(EnterprisePrivacyFeatureProvider.class);
79 searchFeatureProvider = mock(SearchFeatureProvider.class);
80 surveyFeatureProvider = mock(SurveyFeatureProvider.class);
84 public SupportFeatureProvider getSupportFeatureProvider(Context context) {
85 return supportFeatureProvider;
89 public MetricsFeatureProvider getMetricsFeatureProvider() {
90 return metricsFeatureProvider;
94 public PowerUsageFeatureProvider getPowerUsageFeatureProvider() {
95 return powerUsageFeatureProvider;
99 public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
100 return dashboardFeatureProvider;
104 public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
105 return applicationFeatureProvider;
109 public LocaleFeatureProvider getLocaleFeatureProvider() {
110 return localeFeatureProvider;
114 public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
115 return enterprisePrivacyFeatureProvider;
119 public SearchFeatureProvider getSearchFeatureProvider(Context context) {
120 return searchFeatureProvider;
124 public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
125 return surveyFeatureProvider;