Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/util/FeatureUtilitiesTest.java

Issue 2766373004: Convert the rest of chrome_public_test_apk InstrumentationTestCases to JUnit4 (Closed)
Patch Set: nits and rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.util; 5 package org.chromium.chrome.browser.util;
6 6
7 import android.accounts.Account; 7 import android.accounts.Account;
8 import android.accounts.AuthenticatorDescription; 8 import android.accounts.AuthenticatorDescription;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.Intent; 10 import android.content.Intent;
11 import android.content.pm.ResolveInfo; 11 import android.content.pm.ResolveInfo;
12 import android.speech.RecognizerIntent; 12 import android.speech.RecognizerIntent;
13 import android.support.test.InstrumentationRegistry;
13 import android.support.test.filters.SmallTest; 14 import android.support.test.filters.SmallTest;
14 import android.test.InstrumentationTestCase;
15 import android.test.mock.MockContext; 15 import android.test.mock.MockContext;
16 import android.test.mock.MockPackageManager; 16 import android.test.mock.MockPackageManager;
17 17
18 import org.junit.Assert;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22
18 import org.chromium.base.ThreadUtils; 23 import org.chromium.base.ThreadUtils;
19 import org.chromium.base.test.util.AdvancedMockContext; 24 import org.chromium.base.test.util.AdvancedMockContext;
20 import org.chromium.base.test.util.Feature; 25 import org.chromium.base.test.util.Feature;
26 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
21 import org.chromium.components.signin.AccountManagerHelper; 27 import org.chromium.components.signin.AccountManagerHelper;
22 import org.chromium.components.signin.test.util.MockAccountManager; 28 import org.chromium.components.signin.test.util.MockAccountManager;
23 29
24 import java.util.ArrayList; 30 import java.util.ArrayList;
25 import java.util.List; 31 import java.util.List;
26 import java.util.concurrent.Callable; 32 import java.util.concurrent.Callable;
27 33
28 /** 34 /**
29 * Unit Test for FeatureUtilities. 35 * Unit Test for FeatureUtilities.
30 */ 36 */
31 public class FeatureUtilitiesTest extends InstrumentationTestCase { 37 @RunWith(ChromeJUnit4ClassRunner.class)
32 38 public class FeatureUtilitiesTest {
33 private IntentTestMockContext mContextWithSpeech; 39 private IntentTestMockContext mContextWithSpeech;
34 private IntentTestMockContext mContextWithoutSpeech; 40 private IntentTestMockContext mContextWithoutSpeech;
35 private MockAuthenticationAccountManager mAccountManager; 41 private MockAuthenticationAccountManager mAccountManager;
36 private AdvancedMockContext mAccountTestingContext; 42 private AdvancedMockContext mAccountTestingContext;
37 private Account mTestAccount; 43 private Account mTestAccount;
38 44
39 public FeatureUtilitiesTest() { 45 public FeatureUtilitiesTest() {
40 mContextWithSpeech = new IntentTestMockContext( 46 mContextWithSpeech = new IntentTestMockContext(
41 RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 47 RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
42 48
43 mContextWithoutSpeech = new IntentTestMockContext( 49 mContextWithoutSpeech = new IntentTestMockContext(
44 RecognizerIntent.ACTION_WEB_SEARCH); 50 RecognizerIntent.ACTION_WEB_SEARCH);
45 51
46 mTestAccount = AccountManagerHelper.createAccountFromName("Dummy"); 52 mTestAccount = AccountManagerHelper.createAccountFromName("Dummy");
47 } 53 }
48 54
49 @Override 55 @Before
50 public void setUp() { 56 public void setUp() {
51 // GetInstrumentation().getTargetContext() cannot be called in 57 // GetInstrumentation().getTargetContext() cannot be called in
52 // constructor due to external dependencies. 58 // constructor due to external dependencies.
53 mAccountTestingContext = new AdvancedMockContext( 59 mAccountTestingContext = new AdvancedMockContext(
54 getInstrumentation().getTargetContext()); 60 InstrumentationRegistry.getInstrumentation().getTargetContext()) ;
55 } 61 }
56 62
57 private static class IntentTestPackageManager extends MockPackageManager { 63 private static class IntentTestPackageManager extends MockPackageManager {
58 64
59 private final String mAction; 65 private final String mAction;
60 66
61 public IntentTestPackageManager(String recognizesAction) { 67 public IntentTestPackageManager(String recognizesAction) {
62 super(); 68 super();
63 mAction = recognizesAction; 69 mAction = recognizesAction;
64 } 70 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 @Override 138 @Override
133 public Boolean call() { 139 public Boolean call() {
134 return FeatureUtilities.isRecognitionIntentPresent( 140 return FeatureUtilities.isRecognitionIntentPresent(
135 context, 141 context,
136 useCachedResult); 142 useCachedResult);
137 } 143 }
138 }); 144 });
139 } 145 }
140 146
141 private void setUpAccount(final String accountType) { 147 private void setUpAccount(final String accountType) {
142 mAccountManager = new MockAuthenticationAccountManager( 148 mAccountManager = new MockAuthenticationAccountManager(mAccountTestingCo ntext,
143 mAccountTestingContext, 149 InstrumentationRegistry.getInstrumentation().getContext(), accou ntType,
144 getInstrumentation().getContext(),
145 accountType,
146 mTestAccount); 150 mTestAccount);
147 151
148 AccountManagerHelper.overrideAccountManagerHelperForTests( 152 AccountManagerHelper.overrideAccountManagerHelperForTests(
149 mAccountTestingContext, 153 mAccountTestingContext,
150 mAccountManager); 154 mAccountManager);
151 } 155 }
152 156
157 @Test
153 @SmallTest 158 @SmallTest
154 @Feature({"FeatureUtilities", "Speech"}) 159 @Feature({"FeatureUtilities", "Speech"})
155 public void testSpeechFeatureAvailable() { 160 public void testSpeechFeatureAvailable() {
156
157 final boolean doNotUseCachedResult = false; 161 final boolean doNotUseCachedResult = false;
158 final boolean recognizesSpeech = isRecognitionIntentPresent( 162 final boolean recognizesSpeech = isRecognitionIntentPresent(
159 mContextWithSpeech, 163 mContextWithSpeech,
160 doNotUseCachedResult); 164 doNotUseCachedResult);
161 165
162 assertTrue(recognizesSpeech); 166 Assert.assertTrue(recognizesSpeech);
163 } 167 }
164 168
169 @Test
165 @SmallTest 170 @SmallTest
166 @Feature({"FeatureUtilities", "Speech"}) 171 @Feature({"FeatureUtilities", "Speech"})
167 public void testSpeechFeatureUnavailable() { 172 public void testSpeechFeatureUnavailable() {
168
169 final boolean doNotUseCachedResult = false; 173 final boolean doNotUseCachedResult = false;
170 final boolean recognizesSpeech = isRecognitionIntentPresent( 174 final boolean recognizesSpeech = isRecognitionIntentPresent(
171 mContextWithoutSpeech, 175 mContextWithoutSpeech,
172 doNotUseCachedResult); 176 doNotUseCachedResult);
173 177
174 assertFalse(recognizesSpeech); 178 Assert.assertFalse(recognizesSpeech);
175 } 179 }
176 180
181 @Test
177 @SmallTest 182 @SmallTest
178 @Feature({"FeatureUtilities", "Speech"}) 183 @Feature({"FeatureUtilities", "Speech"})
179 public void testCachedSpeechFeatureAvailability() { 184 public void testCachedSpeechFeatureAvailability() {
180
181 // Initial call will cache the fact that speech is recognized. 185 // Initial call will cache the fact that speech is recognized.
182 final boolean doNotUseCachedResult = false; 186 final boolean doNotUseCachedResult = false;
183 isRecognitionIntentPresent( 187 isRecognitionIntentPresent(
184 mContextWithSpeech, 188 mContextWithSpeech,
185 doNotUseCachedResult); 189 doNotUseCachedResult);
186 190
187 // Pass a context that does not recognize speech, but use cached result 191 // Pass a context that does not recognize speech, but use cached result
188 // which does recognize speech. 192 // which does recognize speech.
189 final boolean useCachedResult = true; 193 final boolean useCachedResult = true;
190 final boolean recognizesSpeech = isRecognitionIntentPresent( 194 final boolean recognizesSpeech = isRecognitionIntentPresent(
191 mContextWithoutSpeech, 195 mContextWithoutSpeech,
192 useCachedResult); 196 useCachedResult);
193 197
194 // Check that we still recognize speech as we're using cached result. 198 // Check that we still recognize speech as we're using cached result.
195 assertTrue(recognizesSpeech); 199 Assert.assertTrue(recognizesSpeech);
196 200
197 // Check if we can turn cached result off again. 201 // Check if we can turn cached result off again.
198 final boolean RecognizesSpeechUncached = isRecognitionIntentPresent( 202 final boolean RecognizesSpeechUncached = isRecognitionIntentPresent(
199 mContextWithoutSpeech, 203 mContextWithoutSpeech,
200 doNotUseCachedResult); 204 doNotUseCachedResult);
201 205
202 assertFalse(RecognizesSpeechUncached); 206 Assert.assertFalse(RecognizesSpeechUncached);
203 } 207 }
204 208
205 // This test previously flaked on the try bot: http://crbug.com/543160. 209 // This test previously flaked on the try bot: http://crbug.com/543160.
206 // Re-enabling this test since there has been related cleanup/refactoring 210 // Re-enabling this test since there has been related cleanup/refactoring
207 // during the time the test was disabled. If the test starts flaking again, 211 // during the time the test was disabled. If the test starts flaking again,
208 // re-open the bug. 212 // re-open the bug.
209 // TODO(nyquist): Remove this if the test is not flaky anymore. 213 // TODO(nyquist): Remove this if the test is not flaky anymore.
214 @Test
210 @SmallTest 215 @SmallTest
211 @Feature({"FeatureUtilities", "GoogleAccounts"}) 216 @Feature({"FeatureUtilities", "GoogleAccounts"})
212 public void testHasGoogleAccountCorrectlyDetected() { 217 public void testHasGoogleAccountCorrectlyDetected() {
213
214 // Set up an account manager mock that returns Google account types 218 // Set up an account manager mock that returns Google account types
215 // when queried. 219 // when queried.
216 setUpAccount(AccountManagerHelper.GOOGLE_ACCOUNT_TYPE); 220 setUpAccount(AccountManagerHelper.GOOGLE_ACCOUNT_TYPE);
217 221
218 boolean hasAccounts = FeatureUtilities.hasGoogleAccounts( 222 boolean hasAccounts = FeatureUtilities.hasGoogleAccounts(
219 mAccountTestingContext); 223 mAccountTestingContext);
220 224
221 assertTrue(hasAccounts); 225 Assert.assertTrue(hasAccounts);
222 226
223 boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticato r( 227 boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticato r(
224 mAccountTestingContext); 228 mAccountTestingContext);
225 229
226 assertTrue(hasAuthenticator); 230 Assert.assertTrue(hasAuthenticator);
227 } 231 }
228 232
229 // This test previously flaked on the try bot: http://crbug.com/543160. 233 // This test previously flaked on the try bot: http://crbug.com/543160.
230 // Re-enabling this test since there has been related cleanup/refactoring 234 // Re-enabling this test since there has been related cleanup/refactoring
231 // during the time the test was disabled. If the test starts flaking again, 235 // during the time the test was disabled. If the test starts flaking again,
232 // re-open the bug. 236 // re-open the bug.
233 // TODO(nyquist): Remove this if the test is not flaky anymore. 237 // TODO(nyquist): Remove this if the test is not flaky anymore.
238 @Test
234 @SmallTest 239 @SmallTest
235 @Feature({"FeatureUtilities", "GoogleAccounts"}) 240 @Feature({"FeatureUtilities", "GoogleAccounts"})
236 public void testHasNoGoogleAccountCorrectlyDetected() { 241 public void testHasNoGoogleAccountCorrectlyDetected() {
237
238 // Set up an account manager mock that doesn't return Google account 242 // Set up an account manager mock that doesn't return Google account
239 // types when queried. 243 // types when queried.
240 setUpAccount("Not A Google Account"); 244 setUpAccount("Not A Google Account");
241 245
242 boolean hasAccounts = FeatureUtilities.hasGoogleAccounts( 246 boolean hasAccounts = FeatureUtilities.hasGoogleAccounts(
243 mAccountTestingContext); 247 mAccountTestingContext);
244 248
245 assertFalse(hasAccounts); 249 Assert.assertFalse(hasAccounts);
246 250
247 boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticato r( 251 boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticato r(
248 mAccountTestingContext); 252 mAccountTestingContext);
249 253
250 assertFalse(hasAuthenticator); 254 Assert.assertFalse(hasAuthenticator);
251 } 255 }
252 } 256 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698