OSDN Git Service

Enable and Disable IMS Provisioning Based on Platform Capability am: c137050588
[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 android.content.Context;
19
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;
30
31 import static org.mockito.Matchers.anyString;
32 import static org.mockito.Mockito.mock;
33 import static org.mockito.Mockito.when;
34
35 /**
36  * Test util to provide fake FeatureFactory. To use this factory, call {@code setupForTest} in
37  * {@code @Before} method of the test class.
38  */
39 public class FakeFeatureFactory extends FeatureFactory {
40
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;
50
51     /**
52      * Call this in {@code @Before} method of the test class to use fake factory.
53      *
54      * @param context The context must be a deep mock.
55      */
56     public static void setupForTest(Context context) {
57         sFactory = null;
58         when(context.getString(com.android.settings.R.string.config_featureFactory))
59                 .thenReturn(FakeFeatureFactory.class.getName());
60         try {
61             Class c = FakeFeatureFactory.class;
62             when(context.getClassLoader().loadClass(anyString())).thenReturn(c);
63         } catch (ClassNotFoundException e) {
64             // Ignore.
65         }
66     }
67
68     /**
69      * Used by reflection. Do not call directly.
70      */
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);
81     }
82
83     @Override
84     public SupportFeatureProvider getSupportFeatureProvider(Context context) {
85         return supportFeatureProvider;
86     }
87
88     @Override
89     public MetricsFeatureProvider getMetricsFeatureProvider() {
90         return metricsFeatureProvider;
91     }
92
93     @Override
94     public PowerUsageFeatureProvider getPowerUsageFeatureProvider() {
95         return powerUsageFeatureProvider;
96     }
97
98     @Override
99     public DashboardFeatureProvider getDashboardFeatureProvider(Context context) {
100         return dashboardFeatureProvider;
101     }
102
103     @Override
104     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
105         return applicationFeatureProvider;
106     }
107
108     @Override
109     public LocaleFeatureProvider getLocaleFeatureProvider() {
110         return localeFeatureProvider;
111     }
112
113     @Override
114     public EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(Context context) {
115         return enterprisePrivacyFeatureProvider;
116     }
117
118     @Override
119     public SearchFeatureProvider getSearchFeatureProvider(Context context) {
120         return searchFeatureProvider;
121     }
122
123     @Override
124     public SurveyFeatureProvider getSurveyFeatureProvider(Context context) {
125         return surveyFeatureProvider;
126     }
127 }