OSDN Git Service

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