blob: 82ff0d835f33657623f011bfe41f3205fe918ca1 [file] [log] [blame]
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -07001/*
2 * Copyright (C) 2014 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
Jeremy Joslinf621bc92017-02-16 11:11:57 -080017package com.android.server;
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070018
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080019import static junit.framework.Assert.assertEquals;
20import static junit.framework.Assert.assertNotNull;
21import static junit.framework.Assert.assertNull;
22import static junit.framework.Assert.assertTrue;
23
24import static org.junit.Assert.assertFalse;
Jeremy Joslinb0fe2172017-03-31 10:38:31 -070025import static org.mockito.ArgumentMatchers.anyString;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080026import static org.mockito.Matchers.any;
Jeremy Joslin9925c6a2017-03-06 10:39:35 -080027import static org.mockito.Matchers.anyInt;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080028import static org.mockito.Matchers.eq;
29import static org.mockito.Mockito.never;
30import static org.mockito.Mockito.verify;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080031import static org.mockito.Mockito.when;
32
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070033import android.Manifest.permission;
Jeremy Joslind816abe2017-07-14 15:00:53 -070034import android.app.AppOpsManager;
Jeremy Joslin37e877b2017-02-02 11:06:14 -080035import android.content.ComponentName;
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070036import android.content.Context;
37import android.content.Intent;
Amin Shaikhbc9a8e62017-02-02 15:39:12 -080038import android.content.pm.ActivityInfo;
Jeff Davidsonc7415532014-06-23 18:15:34 -070039import android.content.pm.ApplicationInfo;
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070040import android.content.pm.PackageManager;
41import android.content.pm.ResolveInfo;
Jeremy Joslindd251ef2016-03-14 11:17:41 -070042import android.content.pm.ServiceInfo;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080043import android.content.res.Resources;
Jeremy Joslinf621bc92017-02-16 11:11:57 -080044import android.net.NetworkScoreManager;
45import android.net.NetworkScorerAppData;
Amin Shaikhbc9a8e62017-02-02 15:39:12 -080046import android.os.Bundle;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080047import android.provider.Settings;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080048import android.support.test.runner.AndroidJUnit4;
Jeremy Joslin37e877b2017-02-02 11:06:14 -080049
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080050import com.android.internal.R;
Jeremy Joslin37e877b2017-02-02 11:06:14 -080051
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080052import org.junit.Before;
53import org.junit.Test;
54import org.junit.runner.RunWith;
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070055import org.mockito.Mock;
56import org.mockito.Mockito;
57import org.mockito.MockitoAnnotations;
Paul Duffin192bb0b2017-03-09 18:49:41 +000058import org.mockito.compat.ArgumentMatcher;
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070059
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080060import java.util.ArrayList;
Jeremy Joslin37e877b2017-02-02 11:06:14 -080061import java.util.List;
62
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080063@RunWith(AndroidJUnit4.class)
64public class NetworkScorerAppManagerTest {
Jeremy Joslind816abe2017-07-14 15:00:53 -070065 private static final int PACKAGE_UID = 924;
Stephen Chen8b1339a2017-02-28 18:11:34 -080066 private static String MOCK_SERVICE_LABEL = "Mock Service";
67 private static String MOCK_OVERRIDEN_SERVICE_LABEL = "Mock Service Label Override";
Amin Shaikhd6013602017-03-24 15:52:32 -070068 private static String MOCK_NETWORK_AVAILABLE_NOTIFICATION_CHANNEL_ID =
69 "Mock Network Available Notification Channel Id";
Jeremy Joslind816abe2017-07-14 15:00:53 -070070 private static final ComponentName RECO_COMPONENT = new ComponentName("package1", "class1");
Stephen Chen8b1339a2017-02-28 18:11:34 -080071
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070072 @Mock private Context mMockContext;
73 @Mock private PackageManager mMockPm;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080074 @Mock private Resources mResources;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080075 @Mock private NetworkScorerAppManager.SettingsFacade mSettingsFacade;
Jeremy Joslind816abe2017-07-14 15:00:53 -070076 @Mock private AppOpsManager mAppOpsManager;
Amin Shaikhaa09aa02016-11-21 17:27:53 -080077 private NetworkScorerAppManager mNetworkScorerAppManager;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080078 private List<ResolveInfo> mAvailableServices;
Amin Shaikhaa09aa02016-11-21 17:27:53 -080079
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080080 @Before
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070081 public void setUp() throws Exception {
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070082 MockitoAnnotations.initMocks(this);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080083 mAvailableServices = new ArrayList<>();
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080084 when(mMockContext.getPackageManager()).thenReturn(mMockPm);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080085 when(mMockPm.queryIntentServices(Mockito.argThat(new ArgumentMatcher<Intent>() {
86 @Override
Paul Duffin192bb0b2017-03-09 18:49:41 +000087 public boolean matchesObject(Object object) {
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080088 Intent intent = (Intent) object;
89 return NetworkScoreManager.ACTION_RECOMMEND_NETWORKS.equals(intent.getAction());
90 }
91 }), eq(PackageManager.GET_META_DATA))).thenReturn(mAvailableServices);
Jeremy Joslinb8418ac82016-12-06 07:42:38 -080092 when(mMockContext.getResources()).thenReturn(mResources);
Jeremy Joslind816abe2017-07-14 15:00:53 -070093 when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
94
95 mockLocationModeOn();
96 mockLocationPermissionGranted(PACKAGE_UID, RECO_COMPONENT.getPackageName());
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -080097
98 mNetworkScorerAppManager = new NetworkScorerAppManager(mMockContext, mSettingsFacade);
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -070099 }
100
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800101 @Test
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800102 public void testGetActiveScorer_providerAvailable() throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700103 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
104 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
105 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */);
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800106
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800107 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
108 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700109 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
110 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Stephen Chen8b1339a2017-02-28 18:11:34 -0800111 assertEquals(MOCK_SERVICE_LABEL, activeScorer.getRecommendationServiceLabel());
112 }
113
114 @Test
115 public void testGetActiveScorer_providerAvailable_serviceLabelOverride() throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700116 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
117 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
118 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Stephen Chen8b1339a2017-02-28 18:11:34 -0800119 null /* enableUseOpenWifiPackageActivityPackage*/, true /* serviceLabelOverride */);
120
121 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
122 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700123 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
124 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Stephen Chen8b1339a2017-02-28 18:11:34 -0800125 assertEquals(MOCK_OVERRIDEN_SERVICE_LABEL, activeScorer.getRecommendationServiceLabel());
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800126 }
127
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800128 @Test
Jeremy Joslind816abe2017-07-14 15:00:53 -0700129 public void testGetActiveScorer_scoreNetworksPermissionMissing() throws Exception {
130 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
131 mockScoreNetworksDenied(RECO_COMPONENT.getPackageName());
132 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */);
133
134 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
135 assertNull(activeScorer);
136 }
137
138 @Test
139 public void testGetActiveScorer_locationPermissionMissing() throws Exception {
140 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
141 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
142 mockLocationPermissionDenied(PACKAGE_UID, RECO_COMPONENT.getPackageName());
143 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */);
144
145 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
146 assertNull(activeScorer);
147 }
148
149 @Test
150 public void testGetActiveScorer_locationModeOff() throws Exception {
151 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
152 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
153 mockLocationPermissionGranted(PACKAGE_UID, RECO_COMPONENT.getPackageName());
154 mockLocationModeOff();
155 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800156
157 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
158 assertNull(activeScorer);
159 }
160
161 @Test
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800162 public void testGetActiveScorer_providerAvailable_enableUseOpenWifiActivityNotSet()
163 throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700164 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
165 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
166 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800167 null /* enableUseOpenWifiPackageActivityPackage*/);
168
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800169 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
170 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700171 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
172 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800173 assertNull(activeScorer.getEnableUseOpenWifiActivity());
174 }
175
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800176 @Test
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800177 public void testGetActiveScorer_providerAvailable_enableUseOpenWifiActivityNotResolved()
178 throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700179 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
180 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
181 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800182 "package2" /* enableUseOpenWifiPackageActivityPackage*/);
183
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800184 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
185 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700186 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
187 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800188 assertNull(activeScorer.getEnableUseOpenWifiActivity());
189 }
190
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800191 @Test
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800192 public void testGetActiveScorer_providerAvailable_enableUseOpenWifiActivityResolved()
193 throws Exception {
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800194 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700195 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
196 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
197 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800198 enableUseOpenWifiComponent.getPackageName());
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700199 mockEnableUseOpenWifiActivity(enableUseOpenWifiComponent);
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800200
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800201 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
202 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700203 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
204 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800205 assertEquals(enableUseOpenWifiComponent, activeScorer.getEnableUseOpenWifiActivity());
Amin Shaikhd6013602017-03-24 15:52:32 -0700206 assertNull(activeScorer.getNetworkAvailableNotificationChannelId());
207 }
208
209 @Test
210 public void testGetActiveScorer_providerAvailable_networkAvailableNotificationChannelIdSet() {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700211 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
212 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
213 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Amin Shaikhd6013602017-03-24 15:52:32 -0700214 null /* enableUseOpenWifiActivityPackage */, false /* serviceLabelOverride */,
215 true /* setNotificationChannelId */);
216
217 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
218 assertNotNull(activeScorer);
Jeremy Joslind816abe2017-07-14 15:00:53 -0700219 assertEquals(RECO_COMPONENT, activeScorer.getRecommendationServiceComponent());
220 assertEquals(PACKAGE_UID, activeScorer.packageUid);
Amin Shaikhd6013602017-03-24 15:52:32 -0700221 assertEquals(MOCK_NETWORK_AVAILABLE_NOTIFICATION_CHANNEL_ID,
222 activeScorer.getNetworkAvailableNotificationChannelId());
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800223 }
224
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800225 @Test
226 public void testGetActiveScorer_packageSettingIsNull()
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800227 throws Exception {
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800228 // NETWORK_RECOMMENDATIONS_PACKAGE is null
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800229
230 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
231 assertNull(activeScorer);
232 }
233
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800234 @Test
235 public void testGetActiveScorer_packageSettingIsInvalid() throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700236 setDefaultNetworkRecommendationPackage(RECO_COMPONENT.getPackageName());
237 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800238 // NETWORK_RECOMMENDATIONS_PACKAGE is set to a package that isn't a recommender.
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800239
240 final NetworkScorerAppData activeScorer = mNetworkScorerAppManager.getActiveScorer();
241 assertNull(activeScorer);
242 }
243
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800244 @Test
245 public void testSetActiveScorer_noChange() throws Exception {
246 String packageName = "package";
247 setNetworkRecoPackageSetting(packageName);
248
249 assertTrue(mNetworkScorerAppManager.setActiveScorer(packageName));
250 verify(mSettingsFacade, never()).putString(any(), any(), any());
251 }
252
253 @Test
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700254 public void testSetActiveScorer_nullPackage_currentIsSet() throws Exception {
255 setNetworkRecoPackageSetting("package");
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800256
257 assertTrue(mNetworkScorerAppManager.setActiveScorer(null));
258 verify(mSettingsFacade).putString(mMockContext,
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700259 Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE, null);
260 verify(mSettingsFacade).putInt(mMockContext,
261 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
262 NetworkScoreManager.RECOMMENDATIONS_ENABLED_FORCED_OFF);
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800263 }
264
265 @Test
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700266 public void testSetActiveScorer_nullPackage_currentIsNull() throws Exception {
267 setNetworkRecoPackageSetting(null);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800268
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700269 assertTrue(mNetworkScorerAppManager.setActiveScorer(null));
270 verify(mSettingsFacade, never()).putString(any(), any(), any());
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800271 }
272
273 @Test
274 public void testSetActiveScorer_validPackage() throws Exception {
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800275 String newPackage = "newPackage";
Jeremy Joslind816abe2017-07-14 15:00:53 -0700276 int newAppUid = 621;
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800277 final ComponentName recoComponent = new ComponentName(newPackage, "class1");
278 mockScoreNetworksGranted(recoComponent.getPackageName());
Jeremy Joslind816abe2017-07-14 15:00:53 -0700279 mockRecommendationServiceAvailable(recoComponent, newAppUid, null);
280 mockLocationPermissionGranted(newAppUid, recoComponent.getPackageName());
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800281
282 assertTrue(mNetworkScorerAppManager.setActiveScorer(newPackage));
283 verify(mSettingsFacade).putString(mMockContext,
284 Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE, newPackage);
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700285 verify(mSettingsFacade).putInt(mMockContext,
286 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
287 NetworkScoreManager.RECOMMENDATIONS_ENABLED_ON);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800288 }
289
290 @Test
291 public void testSetActiveScorer_invalidPackage() throws Exception {
292 String packageName = "package";
293 String newPackage = "newPackage";
294 setNetworkRecoPackageSetting(packageName);
295 // newPackage doesn't resolve to a valid recommender
296
297 assertFalse(mNetworkScorerAppManager.setActiveScorer(newPackage));
298 verify(mSettingsFacade, never()).putString(any(), any(), any());
299 }
300
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800301 @Test
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800302 public void testUpdateState_recommendationsForcedOff() throws Exception {
303 setRecommendationsEnabledSetting(NetworkScoreManager.RECOMMENDATIONS_ENABLED_FORCED_OFF);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800304
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800305 mNetworkScorerAppManager.updateState();
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800306
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800307 verify(mSettingsFacade, never()).getString(any(),
308 eq(Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE));
309 verify(mSettingsFacade, never()).putInt(any(),
310 eq(Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED), anyInt());
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800311 }
312
313 @Test
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800314 public void testUpdateState_currentPackageValid() throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700315 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
316 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
317 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID , null);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800318
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800319 mNetworkScorerAppManager.updateState();
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800320
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800321 verify(mSettingsFacade, never()).putString(any(),
322 eq(Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE), any());
323 verify(mSettingsFacade).putInt(mMockContext,
324 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
325 NetworkScoreManager.RECOMMENDATIONS_ENABLED_ON);
326 }
327
328 @Test
329 public void testUpdateState_currentPackageNotValid_validDefault() throws Exception {
Jeremy Joslind816abe2017-07-14 15:00:53 -0700330 final String defaultPackage = "defaultPackage";
331 final int defaultAppUid = 621;
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800332 final ComponentName recoComponent = new ComponentName(defaultPackage, "class1");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700333 setDefaultNetworkRecommendationPackage(defaultPackage);
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800334 mockScoreNetworksGranted(recoComponent.getPackageName());
Jeremy Joslind816abe2017-07-14 15:00:53 -0700335 mockRecommendationServiceAvailable(recoComponent, defaultAppUid, null);
336 mockLocationPermissionGranted(defaultAppUid, defaultPackage);
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800337
338 mNetworkScorerAppManager.updateState();
339
340 verify(mSettingsFacade).putString(mMockContext,
341 Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE, defaultPackage);
342 verify(mSettingsFacade).putInt(mMockContext,
343 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
344 NetworkScoreManager.RECOMMENDATIONS_ENABLED_ON);
345 }
346
347 @Test
348 public void testUpdateState_currentPackageNotValid_invalidDefault() throws Exception {
349 String defaultPackage = "defaultPackage";
350 setDefaultNetworkRecommendationPackage(defaultPackage);
351 setNetworkRecoPackageSetting("currentPackage");
352
353 mNetworkScorerAppManager.updateState();
354
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800355 verify(mSettingsFacade).putInt(mMockContext,
356 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
357 NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF);
358 }
359
360 @Test
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700361 public void testUpdateState_currentPackageNull_defaultNull() throws Exception {
362 setDefaultNetworkRecommendationPackage(null);
363 setNetworkRecoPackageSetting(null);
364
365 mNetworkScorerAppManager.updateState();
366
367 verify(mSettingsFacade, never()).putString(any(),
368 eq(Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE), anyString());
Jeremy Joslind816abe2017-07-14 15:00:53 -0700369 verify(mSettingsFacade).putInt(mMockContext,
370 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
371 NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF);
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700372 }
373
374 @Test
375 public void testUpdateState_currentPackageEmpty_defaultEmpty() throws Exception {
376 setDefaultNetworkRecommendationPackage("");
377 setNetworkRecoPackageSetting("");
378
379 mNetworkScorerAppManager.updateState();
380
381 verify(mSettingsFacade, never()).putString(any(),
382 eq(Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE), anyString());
Jeremy Joslind816abe2017-07-14 15:00:53 -0700383 verify(mSettingsFacade).putInt(mMockContext,
384 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
385 NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF);
Jeremy Joslin7aa0b0d2017-04-27 13:32:49 -0700386 }
387
388 @Test
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800389 public void testUpdateState_currentPackageNotValid_sameAsDefault() throws Exception {
390 String defaultPackage = "defaultPackage";
391 setDefaultNetworkRecommendationPackage(defaultPackage);
392 setNetworkRecoPackageSetting(defaultPackage);
393
394 mNetworkScorerAppManager.updateState();
395
Jeremy Joslind816abe2017-07-14 15:00:53 -0700396 verify(mSettingsFacade).putInt(mMockContext,
397 Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED,
398 NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF);
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800399 }
400
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700401 @Test
402 public void testMigrateNetworkScorerAppSettingIfNeeded_networkScorerAppIsNull()
403 throws Exception {
404 when(mSettingsFacade.getString(mMockContext,
405 Settings.Global.NETWORK_SCORER_APP)).thenReturn(null);
406
407 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
408
409 verify(mSettingsFacade, never()).putString(eq(mMockContext),
410 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
411 }
412
413 @Test
414 public void testMigrateNetworkScorerAppSettingIfNeeded_networkScorerAppIsEmpty()
415 throws Exception {
416 when(mSettingsFacade.getString(mMockContext,
417 Settings.Global.NETWORK_SCORER_APP)).thenReturn("");
418
419 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
420
421 verify(mSettingsFacade, never()).putString(eq(mMockContext),
422 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
423 }
424
425 @Test
426 public void testMigrateNetworkScorerAppSettingIfNeeded_networkScorerIsNotActive()
427 throws Exception {
428 when(mSettingsFacade.getString(mMockContext,
429 Settings.Global.NETWORK_SCORER_APP)).thenReturn("com.foo.package");
430 // Make getActiveScorer() return null.
431 setRecommendationsEnabledSetting(NetworkScoreManager.RECOMMENDATIONS_ENABLED_FORCED_OFF);
432
433 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
434
435 verify(mSettingsFacade, never()).putString(eq(mMockContext),
436 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
437 }
438
439 @Test
440 public void testMigrateNetworkScorerAppSettingIfNeeded_useOpenWifiSettingIsNotEmpty()
441 throws Exception {
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700442 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700443 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
444 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
445 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700446 enableUseOpenWifiComponent.getPackageName());
447 mockEnableUseOpenWifiActivity(enableUseOpenWifiComponent);
448 when(mSettingsFacade.getString(mMockContext,
449 Settings.Global.NETWORK_SCORER_APP))
450 .thenReturn(enableUseOpenWifiComponent.getPackageName());
451 // The setting has a value so the migration shouldn't touch it.
452 when(mSettingsFacade.getString(mMockContext,
453 Settings.Global.USE_OPEN_WIFI_PACKAGE))
454 .thenReturn(enableUseOpenWifiComponent.getPackageName());
455
456 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
457
458 verify(mSettingsFacade, never()).putString(eq(mMockContext),
459 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
460 verify(mSettingsFacade).putString(eq(mMockContext),
461 eq(Settings.Global.NETWORK_SCORER_APP), eq(null));
462 }
463
464 @Test
465 public void testMigrateNetworkScorerAppSettingIfNeeded_useOpenWifiActivityNotAvail()
466 throws Exception {
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700467 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700468 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
469 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700470 // The active component doesn't have an open wifi activity so the migration shouldn't
471 // set USE_OPEN_WIFI_PACKAGE.
Jeremy Joslind816abe2017-07-14 15:00:53 -0700472 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700473 null /*useOpenWifiActivityPackage*/);
474 when(mSettingsFacade.getString(mMockContext,
475 Settings.Global.NETWORK_SCORER_APP))
476 .thenReturn(enableUseOpenWifiComponent.getPackageName());
477 when(mSettingsFacade.getString(mMockContext,
478 Settings.Global.USE_OPEN_WIFI_PACKAGE)).thenReturn(null);
479
480 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
481
482 verify(mSettingsFacade, never()).putString(eq(mMockContext),
483 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
484 verify(mSettingsFacade).putString(eq(mMockContext),
485 eq(Settings.Global.NETWORK_SCORER_APP), eq(null));
486 }
487
488 @Test
489 public void testMigrateNetworkScorerAppSettingIfNeeded_packageMismatch_activity()
490 throws Exception {
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700491 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700492 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
493 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
494 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700495 enableUseOpenWifiComponent.getPackageName());
496 mockEnableUseOpenWifiActivity(enableUseOpenWifiComponent);
497 // The older network scorer app setting doesn't match the new use open wifi activity package
498 // so the migration shouldn't set USE_OPEN_WIFI_PACKAGE.
499 when(mSettingsFacade.getString(mMockContext,
500 Settings.Global.NETWORK_SCORER_APP))
501 .thenReturn(enableUseOpenWifiComponent.getPackageName() + ".diff");
502 when(mSettingsFacade.getString(mMockContext,
503 Settings.Global.USE_OPEN_WIFI_PACKAGE)).thenReturn(null);
504
505 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
506
507 verify(mSettingsFacade, never()).putString(eq(mMockContext),
508 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
509 verify(mSettingsFacade).putString(eq(mMockContext),
510 eq(Settings.Global.NETWORK_SCORER_APP), eq(null));
511 }
512
513 @Test
514 public void testMigrateNetworkScorerAppSettingIfNeeded_packageMismatch_service()
515 throws Exception {
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700516 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700517 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
518 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
519 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700520 enableUseOpenWifiComponent.getPackageName());
521 mockEnableUseOpenWifiActivity(enableUseOpenWifiComponent);
522 // The older network scorer app setting doesn't match the active package so the migration
523 // shouldn't set USE_OPEN_WIFI_PACKAGE.
524 when(mSettingsFacade.getString(mMockContext,
525 Settings.Global.NETWORK_SCORER_APP))
Jeremy Joslind816abe2017-07-14 15:00:53 -0700526 .thenReturn(RECO_COMPONENT.getPackageName() + ".diff");
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700527 when(mSettingsFacade.getString(mMockContext,
528 Settings.Global.USE_OPEN_WIFI_PACKAGE)).thenReturn(null);
529
530 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
531
532 verify(mSettingsFacade, never()).putString(eq(mMockContext),
533 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE), anyString());
534 verify(mSettingsFacade).putString(eq(mMockContext),
535 eq(Settings.Global.NETWORK_SCORER_APP), eq(null));
536 }
537
538 @Test
539 public void testMigrateNetworkScorerAppSettingIfNeeded_packageMatch_activity()
540 throws Exception {
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700541 final ComponentName enableUseOpenWifiComponent = new ComponentName("package2", "class2");
Jeremy Joslind816abe2017-07-14 15:00:53 -0700542 setNetworkRecoPackageSetting(RECO_COMPONENT.getPackageName());
543 mockScoreNetworksGranted(RECO_COMPONENT.getPackageName());
544 mockRecommendationServiceAvailable(RECO_COMPONENT, PACKAGE_UID /* packageUid */,
Jeremy Joslinb0fe2172017-03-31 10:38:31 -0700545 enableUseOpenWifiComponent.getPackageName());
546 mockEnableUseOpenWifiActivity(enableUseOpenWifiComponent);
547 // Old setting matches the new activity package, migration should happen.
548 when(mSettingsFacade.getString(mMockContext,
549 Settings.Global.NETWORK_SCORER_APP))
550 .thenReturn(enableUseOpenWifiComponent.getPackageName());
551 when(mSettingsFacade.getString(mMockContext,
552 Settings.Global.USE_OPEN_WIFI_PACKAGE)).thenReturn(null);
553
554 mNetworkScorerAppManager.migrateNetworkScorerAppSettingIfNeeded();
555
556 verify(mSettingsFacade).putString(eq(mMockContext),
557 eq(Settings.Global.USE_OPEN_WIFI_PACKAGE),
558 eq(enableUseOpenWifiComponent.getPackageName()));
559 verify(mSettingsFacade).putString(eq(mMockContext),
560 eq(Settings.Global.NETWORK_SCORER_APP), eq(null));
561 }
562
Jeremy Joslin9925c6a2017-03-06 10:39:35 -0800563 private void setRecommendationsEnabledSetting(int value) {
564 when(mSettingsFacade.getInt(eq(mMockContext),
565 eq(Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED), anyInt())).thenReturn(value);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800566 }
567
568 private void setNetworkRecoPackageSetting(String packageName) {
569 when(mSettingsFacade.getString(mMockContext,
570 Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE)).thenReturn(packageName);
571 }
572
573 private void setDefaultNetworkRecommendationPackage(String name) {
574 when(mResources.getString(R.string.config_defaultNetworkRecommendationProviderPackage))
575 .thenReturn(name);
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800576 }
Jeff Davidsonb6646a82014-06-27 16:24:42 -0700577
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800578 private void mockScoreNetworksGranted(String packageName) {
579 when(mMockPm.checkPermission(permission.SCORE_NETWORKS, packageName))
580 .thenReturn(PackageManager.PERMISSION_GRANTED);
581 }
582
583 private void mockScoreNetworksDenied(String packageName) {
584 when(mMockPm.checkPermission(permission.SCORE_NETWORKS, packageName))
585 .thenReturn(PackageManager.PERMISSION_DENIED);
586 }
587
Jeremy Joslind816abe2017-07-14 15:00:53 -0700588 private void mockLocationModeOn() {
589 mockLocationModeValue(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
590 }
591
592 private void mockLocationModeOff() {
593 mockLocationModeValue(Settings.Secure.LOCATION_MODE_OFF);
594 }
595
596 private void mockLocationModeValue(int returnVal) {
597 when(mSettingsFacade.getSecureInt(eq(mMockContext),
598 eq(Settings.Secure.LOCATION_MODE), anyInt())).thenReturn(returnVal);
599 }
600
601 private void mockLocationPermissionGranted(int uid, String packageName) {
602 when(mMockPm.checkPermission(permission.ACCESS_COARSE_LOCATION, packageName))
603 .thenReturn(PackageManager.PERMISSION_GRANTED);
604 when(mAppOpsManager.noteOp(AppOpsManager.OP_COARSE_LOCATION, uid, packageName))
605 .thenReturn(AppOpsManager.MODE_ALLOWED);
606 }
607
608 private void mockLocationPermissionDenied(int uid, String packageName) {
609 when(mMockPm.checkPermission(permission.ACCESS_COARSE_LOCATION, packageName))
610 .thenReturn(PackageManager.PERMISSION_DENIED);
611 when(mAppOpsManager.noteOp(AppOpsManager.OP_COARSE_LOCATION, uid, packageName))
612 .thenReturn(AppOpsManager.MODE_IGNORED);
613 }
614
Jeremy Joslin37e877b2017-02-02 11:06:14 -0800615 private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid) {
Stephen Chen8b1339a2017-02-28 18:11:34 -0800616 mockRecommendationServiceAvailable(compName, packageUid, null, false);
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800617 }
618
619 private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid,
620 String enableUseOpenWifiActivityPackage) {
Stephen Chen8b1339a2017-02-28 18:11:34 -0800621 mockRecommendationServiceAvailable(
622 compName, packageUid, enableUseOpenWifiActivityPackage, false);
623 }
624
625 private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid,
626 String enableUseOpenWifiActivityPackage, boolean serviceLabelOverride) {
Amin Shaikhd6013602017-03-24 15:52:32 -0700627 mockRecommendationServiceAvailable(compName, packageUid, enableUseOpenWifiActivityPackage,
628 serviceLabelOverride, false);
629 }
630
631 private void mockRecommendationServiceAvailable(final ComponentName compName, int packageUid,
632 String enableUseOpenWifiActivityPackage, boolean serviceLabelOverride,
633 boolean setNotificationChannel) {
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800634 final ResolveInfo serviceInfo = new ResolveInfo();
635 serviceInfo.serviceInfo = new ServiceInfo();
Jeremy Joslin37e877b2017-02-02 11:06:14 -0800636 serviceInfo.serviceInfo.name = compName.getClassName();
637 serviceInfo.serviceInfo.packageName = compName.getPackageName();
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800638 serviceInfo.serviceInfo.applicationInfo = new ApplicationInfo();
639 serviceInfo.serviceInfo.applicationInfo.uid = packageUid;
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800640 if (enableUseOpenWifiActivityPackage != null) {
641 serviceInfo.serviceInfo.metaData = new Bundle();
642 serviceInfo.serviceInfo.metaData.putString(
643 NetworkScoreManager.USE_OPEN_WIFI_PACKAGE_META_DATA,
644 enableUseOpenWifiActivityPackage);
645 }
Stephen Chen8b1339a2017-02-28 18:11:34 -0800646 if (serviceLabelOverride) {
647 if (serviceInfo.serviceInfo.metaData == null) {
648 serviceInfo.serviceInfo.metaData = new Bundle();
649 }
650 serviceInfo.serviceInfo.metaData.putString(
651 NetworkScoreManager.RECOMMENDATION_SERVICE_LABEL_META_DATA,
652 MOCK_OVERRIDEN_SERVICE_LABEL);
653 } else {
654 serviceInfo.serviceInfo.nonLocalizedLabel = MOCK_SERVICE_LABEL;
655 }
Amin Shaikhd6013602017-03-24 15:52:32 -0700656 if (setNotificationChannel) {
657 if (serviceInfo.serviceInfo.metaData == null) {
658 serviceInfo.serviceInfo.metaData = new Bundle();
659 }
660 serviceInfo.serviceInfo.metaData.putString(
661 NetworkScoreManager.NETWORK_AVAILABLE_NOTIFICATION_CHANNEL_ID_META_DATA,
662 MOCK_NETWORK_AVAILABLE_NOTIFICATION_CHANNEL_ID);
663 }
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800664
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800665 final int flags = PackageManager.GET_META_DATA;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800666 when(mMockPm.resolveService(
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -0700667 Mockito.argThat(new ArgumentMatcher<Intent>() {
668 @Override
Paul Duffin192bb0b2017-03-09 18:49:41 +0000669 public boolean matchesObject(Object object) {
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -0700670 Intent intent = (Intent) object;
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800671 return NetworkScoreManager.ACTION_RECOMMEND_NETWORKS
672 .equals(intent.getAction())
Jeremy Joslin37e877b2017-02-02 11:06:14 -0800673 && compName.getPackageName().equals(intent.getPackage());
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -0700674 }
Jeremy Joslinb8418ac82016-12-06 07:42:38 -0800675 }), Mockito.eq(flags))).thenReturn(serviceInfo);
Jeremy Joslinee3fb5c2017-02-13 13:44:11 -0800676
677 mAvailableServices.add(serviceInfo);
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -0700678 }
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800679
680 private void mockEnableUseOpenWifiActivity(final ComponentName useOpenWifiComp) {
681 final ResolveInfo resolveActivityInfo = new ResolveInfo();
682 resolveActivityInfo.activityInfo = new ActivityInfo();
683 resolveActivityInfo.activityInfo.name = useOpenWifiComp.getClassName();
684 resolveActivityInfo.activityInfo.packageName = useOpenWifiComp.getPackageName();
685
686 final int flags = 0;
687 when(mMockPm.resolveActivity(
688 Mockito.argThat(new ArgumentMatcher<Intent>() {
689 @Override
Paul Duffin192bb0b2017-03-09 18:49:41 +0000690 public boolean matchesObject(Object object) {
Amin Shaikhbc9a8e62017-02-02 15:39:12 -0800691 Intent intent = (Intent) object;
692 return NetworkScoreManager.ACTION_CUSTOM_ENABLE.equals(intent.getAction())
693 && useOpenWifiComp.getPackageName().equals(intent.getPackage());
694 }
695 }), Mockito.eq(flags))).thenReturn(resolveActivityInfo);
696 }
Jeff Davidsondd6fd1e2014-04-14 15:14:30 -0700697}