OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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.signin; | 5 package org.chromium.chrome.browser.signin; |
6 | 6 |
7 import android.accounts.Account; | 7 import android.accounts.Account; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.support.test.InstrumentationRegistry; | 9 import android.support.test.InstrumentationRegistry; |
10 import android.support.test.filters.MediumTest; | 10 import android.support.test.filters.MediumTest; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 mActivityTestRule.loadNativeLibraryAndInitBrowserProcess(); | 68 mActivityTestRule.loadNativeLibraryAndInitBrowserProcess(); |
69 | 69 |
70 // Set up AccountManager. | 70 // Set up AccountManager. |
71 mContext = new AdvancedMockContext( | 71 mContext = new AdvancedMockContext( |
72 InstrumentationRegistry.getInstrumentation().getTargetContext())
; | 72 InstrumentationRegistry.getInstrumentation().getTargetContext())
; |
73 mAccountManager = new MockAccountManager( | 73 mAccountManager = new MockAccountManager( |
74 mContext, InstrumentationRegistry.getInstrumentation().getContex
t()); | 74 mContext, InstrumentationRegistry.getInstrumentation().getContex
t()); |
75 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); | 75 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); |
76 | 76 |
77 // Make sure there is no account signed in yet. | 77 // Make sure there is no account signed in yet. |
78 mChromeSigninController = ChromeSigninController.get(); | 78 mChromeSigninController = ChromeSigninController.get(mContext); |
79 mChromeSigninController.setSignedInAccountName(null); | 79 mChromeSigninController.setSignedInAccountName(null); |
80 | 80 |
81 // Seed test accounts to AccountTrackerService. | 81 // Seed test accounts to AccountTrackerService. |
82 seedAccountTrackerService(mContext); | 82 seedAccountTrackerService(mContext); |
83 | 83 |
84 // Get a reference to the service. | 84 // Get a reference to the service. |
85 mOAuth2TokenService = getOAuth2TokenServiceOnUiThread(); | 85 mOAuth2TokenService = getOAuth2TokenServiceOnUiThread(); |
86 | 86 |
87 // Set up observer. | 87 // Set up observer. |
88 mObserver = new TestObserver(); | 88 mObserver = new TestObserver(); |
89 addObserver(mObserver); | 89 addObserver(mObserver); |
90 } | 90 } |
91 | 91 |
92 @After | 92 @After |
93 public void tearDown() throws Exception { | 93 public void tearDown() throws Exception { |
94 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | 94 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
95 @Override | 95 @Override |
96 public void run() { | 96 public void run() { |
97 mChromeSigninController.setSignedInAccountName(null); | 97 mChromeSigninController.setSignedInAccountName(null); |
98 mOAuth2TokenService.validateAccounts(false); | 98 mOAuth2TokenService.validateAccounts(mContext, false); |
99 } | 99 } |
100 }); | 100 }); |
101 } | 101 } |
102 | 102 |
103 private void mapAccountNamesToIds() { | 103 private void mapAccountNamesToIds() { |
104 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | 104 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
105 @Override | 105 @Override |
106 public void run() { | 106 public void run() { |
107 AccountIdProvider.setInstanceForTest(new AccountIdProvider() { | 107 AccountIdProvider.setInstanceForTest(new AccountIdProvider() { |
108 @Override | 108 @Override |
109 public String getAccountId(String accountName) { | 109 public String getAccountId(Context ctx, String accountName)
{ |
110 return "gaia-id-" + accountName; | 110 return "gaia-id-" + accountName; |
111 } | 111 } |
112 | 112 |
113 @Override | 113 @Override |
114 public boolean canBeUsed() { | 114 public boolean canBeUsed(Context ctx) { |
115 return true; | 115 return true; |
116 } | 116 } |
117 }); | 117 }); |
118 } | 118 } |
119 }); | 119 }); |
120 } | 120 } |
121 | 121 |
122 private void seedAccountTrackerService(final Context context) { | 122 private void seedAccountTrackerService(final Context context) { |
123 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | 123 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
124 @Override | 124 @Override |
125 public void run() { | 125 public void run() { |
126 AccountIdProvider provider = AccountIdProvider.getInstance(); | 126 AccountIdProvider provider = AccountIdProvider.getInstance(); |
127 String[] accountNames = {TEST_ACCOUNT1.name, TEST_ACCOUNT2.name}
; | 127 String[] accountNames = {TEST_ACCOUNT1.name, TEST_ACCOUNT2.name}
; |
128 String[] accountIds = {provider.getAccountId(accountNames[0]), | 128 String[] accountIds = {provider.getAccountId(context, accountNam
es[0]), |
129 provider.getAccountId(accountNames[1])}; | 129 provider.getAccountId(context, accountNames[1])}; |
130 AccountTrackerService.get().syncForceRefreshForTest(accountIds,
accountNames); | 130 AccountTrackerService.get(context).syncForceRefreshForTest( |
| 131 accountIds, accountNames); |
131 } | 132 } |
132 }); | 133 }); |
133 } | 134 } |
134 | 135 |
135 /** | 136 /** |
136 * The {@link OAuth2TokenService} and the {@link Profile} can only be access
ed from the UI | 137 * The {@link OAuth2TokenService} and the {@link Profile} can only be access
ed from the UI |
137 * thread, so this helper method is a convenience method to retrieve it. | 138 * thread, so this helper method is a convenience method to retrieve it. |
138 * | 139 * |
139 * @return the OAuth2TokenService. | 140 * @return the OAuth2TokenService. |
140 */ | 141 */ |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 }); | 237 }); |
237 } | 238 } |
238 | 239 |
239 @Test | 240 @Test |
240 @MediumTest | 241 @MediumTest |
241 public void testValidateAccountsNoAccountsRegisteredAndNoSignedInUser() thro
ws Throwable { | 242 public void testValidateAccountsNoAccountsRegisteredAndNoSignedInUser() thro
ws Throwable { |
242 mUiThreadTestRule.runOnUiThread(new Runnable() { | 243 mUiThreadTestRule.runOnUiThread(new Runnable() { |
243 @Override | 244 @Override |
244 public void run() { | 245 public void run() { |
245 // Run test. | 246 // Run test. |
246 mOAuth2TokenService.validateAccounts(false); | 247 mOAuth2TokenService.validateAccounts(mContext, false); |
247 | 248 |
248 // Ensure no calls have been made to the observer. | 249 // Ensure no calls have been made to the observer. |
249 Assert.assertEquals(0, mObserver.getAvailableCallCount()); | 250 Assert.assertEquals(0, mObserver.getAvailableCallCount()); |
250 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 251 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
251 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 252 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
252 } | 253 } |
253 }); | 254 }); |
254 } | 255 } |
255 | 256 |
256 @Test | 257 @Test |
257 @MediumTest | 258 @MediumTest |
258 public void testValidateAccountsOneAccountsRegisteredAndNoSignedInUser() thr
ows Throwable { | 259 public void testValidateAccountsOneAccountsRegisteredAndNoSignedInUser() thr
ows Throwable { |
259 mUiThreadTestRule.runOnUiThread(new Runnable() { | 260 mUiThreadTestRule.runOnUiThread(new Runnable() { |
260 @Override | 261 @Override |
261 public void run() { | 262 public void run() { |
262 // Add account. | 263 // Add account. |
263 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 264 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
264 | 265 |
265 // Run test. | 266 // Run test. |
266 mOAuth2TokenService.validateAccounts(false); | 267 mOAuth2TokenService.validateAccounts(mContext, false); |
267 | 268 |
268 // Ensure no calls have been made to the observer. | 269 // Ensure no calls have been made to the observer. |
269 Assert.assertEquals(0, mObserver.getAvailableCallCount()); | 270 Assert.assertEquals(0, mObserver.getAvailableCallCount()); |
270 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 271 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
271 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 272 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
272 } | 273 } |
273 }); | 274 }); |
274 } | 275 } |
275 | 276 |
276 @Test | 277 @Test |
277 @MediumTest | 278 @MediumTest |
278 public void testValidateAccountsOneAccountsRegisteredSignedIn() throws Throw
able { | 279 public void testValidateAccountsOneAccountsRegisteredSignedIn() throws Throw
able { |
279 mUiThreadTestRule.runOnUiThread(new Runnable() { | 280 mUiThreadTestRule.runOnUiThread(new Runnable() { |
280 @Override | 281 @Override |
281 public void run() { | 282 public void run() { |
282 // Add account. | 283 // Add account. |
283 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 284 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
284 | 285 |
285 // Mark user as signed in. | 286 // Mark user as signed in. |
286 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 287 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
287 | 288 |
288 // Run test. | 289 // Run test. |
289 mOAuth2TokenService.validateAccounts(false); | 290 mOAuth2TokenService.validateAccounts(mContext, false); |
290 | 291 |
291 // Ensure one call for the signed in account. | 292 // Ensure one call for the signed in account. |
292 Assert.assertEquals(1, mObserver.getAvailableCallCount()); | 293 Assert.assertEquals(1, mObserver.getAvailableCallCount()); |
293 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 294 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
294 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 295 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
295 | 296 |
296 // Validate again and make sure no new calls are made. | 297 // Validate again and make sure no new calls are made. |
297 mOAuth2TokenService.validateAccounts(false); | 298 mOAuth2TokenService.validateAccounts(mContext, false); |
298 Assert.assertEquals(1, mObserver.getAvailableCallCount()); | 299 Assert.assertEquals(1, mObserver.getAvailableCallCount()); |
299 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 300 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
300 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 301 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
301 | 302 |
302 // Validate again with force notifications and make sure one new
calls is made. | 303 // Validate again with force notifications and make sure one new
calls is made. |
303 mOAuth2TokenService.validateAccounts(true); | 304 mOAuth2TokenService.validateAccounts(mContext, true); |
304 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 305 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
305 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 306 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
306 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 307 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
307 } | 308 } |
308 }); | 309 }); |
309 } | 310 } |
310 | 311 |
311 @Test | 312 @Test |
312 @MediumTest | 313 @MediumTest |
313 public void testValidateAccountsSingleAccountWithoutChanges() throws Throwab
le { | 314 public void testValidateAccountsSingleAccountWithoutChanges() throws Throwab
le { |
314 mUiThreadTestRule.runOnUiThread(new Runnable() { | 315 mUiThreadTestRule.runOnUiThread(new Runnable() { |
315 @Override | 316 @Override |
316 public void run() { | 317 public void run() { |
317 // Add account. | 318 // Add account. |
318 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 319 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
319 | 320 |
320 // Mark user as signed in. | 321 // Mark user as signed in. |
321 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 322 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
322 | 323 |
323 // Run one validation. | 324 // Run one validation. |
324 mOAuth2TokenService.validateAccounts(false); | 325 mOAuth2TokenService.validateAccounts(mContext, false); |
325 Assert.assertEquals(1, mObserver.getAvailableCallCount()); | 326 Assert.assertEquals(1, mObserver.getAvailableCallCount()); |
326 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 327 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
327 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 328 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
328 | 329 |
329 // Re-run validation. | 330 // Re-run validation. |
330 mOAuth2TokenService.validateAccounts(false); | 331 mOAuth2TokenService.validateAccounts(mContext, false); |
331 Assert.assertEquals(1, mObserver.getAvailableCallCount()); | 332 Assert.assertEquals(1, mObserver.getAvailableCallCount()); |
332 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 333 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
333 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 334 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
334 } | 335 } |
335 }); | 336 }); |
336 } | 337 } |
337 | 338 |
338 @Test | 339 @Test |
339 @MediumTest | 340 @MediumTest |
340 public void testValidateAccountsSingleAccountThenAddOne() throws Throwable { | 341 public void testValidateAccountsSingleAccountThenAddOne() throws Throwable { |
341 mUiThreadTestRule.runOnUiThread(new Runnable() { | 342 mUiThreadTestRule.runOnUiThread(new Runnable() { |
342 @Override | 343 @Override |
343 public void run() { | 344 public void run() { |
344 // Add account. | 345 // Add account. |
345 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 346 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
346 | 347 |
347 // Mark user as signed in. | 348 // Mark user as signed in. |
348 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 349 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
349 | 350 |
350 // Run one validation. | 351 // Run one validation. |
351 mOAuth2TokenService.validateAccounts(false); | 352 mOAuth2TokenService.validateAccounts(mContext, false); |
352 Assert.assertEquals(1, mObserver.getAvailableCallCount()); | 353 Assert.assertEquals(1, mObserver.getAvailableCallCount()); |
353 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 354 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
354 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 355 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
355 | 356 |
356 // Add another account. | 357 // Add another account. |
357 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); | 358 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); |
358 | 359 |
359 // Seed AccountTrackerService again since accounts changed after
last validation. | 360 // Seed AccountTrackerService again since accounts changed after
last validation. |
360 seedAccountTrackerService(mContext); | 361 seedAccountTrackerService(mContext); |
361 | 362 |
362 // Re-run validation. | 363 // Re-run validation. |
363 mOAuth2TokenService.validateAccounts(false); | 364 mOAuth2TokenService.validateAccounts(mContext, false); |
364 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 365 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
365 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 366 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
366 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 367 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
367 } | 368 } |
368 }); | 369 }); |
369 } | 370 } |
370 | 371 |
371 @Test | 372 @Test |
372 @MediumTest | 373 @MediumTest |
373 public void testValidateAccountsTwoAccountsThenRemoveOne() throws Throwable
{ | 374 public void testValidateAccountsTwoAccountsThenRemoveOne() throws Throwable
{ |
374 mUiThreadTestRule.runOnUiThread(new Runnable() { | 375 mUiThreadTestRule.runOnUiThread(new Runnable() { |
375 @Override | 376 @Override |
376 public void run() { | 377 public void run() { |
377 // Add accounts. | 378 // Add accounts. |
378 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 379 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
379 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); | 380 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); |
380 | 381 |
381 // Mark user as signed in. | 382 // Mark user as signed in. |
382 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 383 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
383 | 384 |
384 // Run one validation. | 385 // Run one validation. |
385 mOAuth2TokenService.validateAccounts(false); | 386 mOAuth2TokenService.validateAccounts(mContext, false); |
386 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 387 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
387 | 388 |
388 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); | 389 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); |
389 mOAuth2TokenService.validateAccounts(false); | 390 mOAuth2TokenService.validateAccounts(mContext, false); |
390 | 391 |
391 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 392 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
392 Assert.assertEquals(1, mObserver.getRevokedCallCount()); | 393 Assert.assertEquals(1, mObserver.getRevokedCallCount()); |
393 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 394 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
394 } | 395 } |
395 }); | 396 }); |
396 } | 397 } |
397 | 398 |
398 @Test | 399 @Test |
399 @MediumTest | 400 @MediumTest |
400 public void testValidateAccountsTwoAccountsThenRemoveAll() throws Throwable
{ | 401 public void testValidateAccountsTwoAccountsThenRemoveAll() throws Throwable
{ |
401 mUiThreadTestRule.runOnUiThread(new Runnable() { | 402 mUiThreadTestRule.runOnUiThread(new Runnable() { |
402 @Override | 403 @Override |
403 public void run() { | 404 public void run() { |
404 // Add accounts. | 405 // Add accounts. |
405 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 406 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
406 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); | 407 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); |
407 | 408 |
408 // Mark user as signed in. | 409 // Mark user as signed in. |
409 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 410 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
410 | 411 |
411 mOAuth2TokenService.validateAccounts(false); | 412 mOAuth2TokenService.validateAccounts(mContext, false); |
412 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 413 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
413 | 414 |
414 // Remove all. | 415 // Remove all. |
415 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_1); | 416 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_1); |
416 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); | 417 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); |
417 | 418 |
418 // Re-validate and run checks. | 419 // Re-validate and run checks. |
419 mOAuth2TokenService.validateAccounts(false); | 420 mOAuth2TokenService.validateAccounts(mContext, false); |
420 Assert.assertEquals(2, mObserver.getRevokedCallCount()); | 421 Assert.assertEquals(2, mObserver.getRevokedCallCount()); |
421 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 422 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
422 } | 423 } |
423 }); | 424 }); |
424 } | 425 } |
425 | 426 |
426 @Test | 427 @Test |
427 @MediumTest | 428 @MediumTest |
428 @RetryOnFailure | 429 @RetryOnFailure |
429 public void testValidateAccountsTwoAccountsThenRemoveAllSignOut() throws Thr
owable { | 430 public void testValidateAccountsTwoAccountsThenRemoveAllSignOut() throws Thr
owable { |
430 mUiThreadTestRule.runOnUiThread(new Runnable() { | 431 mUiThreadTestRule.runOnUiThread(new Runnable() { |
431 @Override | 432 @Override |
432 public void run() { | 433 public void run() { |
433 // Add accounts. | 434 // Add accounts. |
434 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 435 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
435 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); | 436 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); |
436 | 437 |
437 // Mark user as signed in. | 438 // Mark user as signed in. |
438 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 439 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
439 | 440 |
440 mOAuth2TokenService.validateAccounts(false); | 441 mOAuth2TokenService.validateAccounts(mContext, false); |
441 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 442 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
442 | 443 |
443 // Remove all. | 444 // Remove all. |
444 mChromeSigninController.setSignedInAccountName(null); | 445 mChromeSigninController.setSignedInAccountName(null); |
445 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_1); | 446 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_1); |
446 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); | 447 mAccountManager.removeAccountHolderExplicitly(TEST_ACCOUNT_HOLDE
R_2); |
447 | 448 |
448 // Re-validate and run checks. | 449 // Re-validate and run checks. |
449 mOAuth2TokenService.validateAccounts(false); | 450 mOAuth2TokenService.validateAccounts(mContext, false); |
450 Assert.assertEquals(2, mObserver.getRevokedCallCount()); | 451 Assert.assertEquals(2, mObserver.getRevokedCallCount()); |
451 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 452 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
452 } | 453 } |
453 }); | 454 }); |
454 } | 455 } |
455 | 456 |
456 @Test | 457 @Test |
457 @MediumTest | 458 @MediumTest |
458 public void testValidateAccountsTwoAccountsRegisteredAndOneSignedIn() throws
Throwable { | 459 public void testValidateAccountsTwoAccountsRegisteredAndOneSignedIn() throws
Throwable { |
459 mUiThreadTestRule.runOnUiThread(new Runnable() { | 460 mUiThreadTestRule.runOnUiThread(new Runnable() { |
460 @Override | 461 @Override |
461 public void run() { | 462 public void run() { |
462 // Add accounts. | 463 // Add accounts. |
463 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); | 464 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_1
); |
464 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); | 465 mAccountManager.addAccountHolderExplicitly(TEST_ACCOUNT_HOLDER_2
); |
465 | 466 |
466 // Mark user as signed in. | 467 // Mark user as signed in. |
467 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 468 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
468 | 469 |
469 // Run test. | 470 // Run test. |
470 mOAuth2TokenService.validateAccounts(false); | 471 mOAuth2TokenService.validateAccounts(mContext, false); |
471 | 472 |
472 // All accounts will be notified. It is up to the observer | 473 // All accounts will be notified. It is up to the observer |
473 // to design if any action is needed. | 474 // to design if any action is needed. |
474 Assert.assertEquals(2, mObserver.getAvailableCallCount()); | 475 Assert.assertEquals(2, mObserver.getAvailableCallCount()); |
475 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 476 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
476 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 477 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
477 } | 478 } |
478 }); | 479 }); |
479 } | 480 } |
480 | 481 |
481 @Test | 482 @Test |
482 @MediumTest | 483 @MediumTest |
483 public void testValidateAccountsNoAccountsRegisteredButSignedIn() throws Thr
owable { | 484 public void testValidateAccountsNoAccountsRegisteredButSignedIn() throws Thr
owable { |
484 mUiThreadTestRule.runOnUiThread(new Runnable() { | 485 mUiThreadTestRule.runOnUiThread(new Runnable() { |
485 @Override | 486 @Override |
486 public void run() { | 487 public void run() { |
487 // Mark user as signed in without setting up the account. | 488 // Mark user as signed in without setting up the account. |
488 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 489 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
489 | 490 |
490 // Run test. | 491 // Run test. |
491 mOAuth2TokenService.validateAccounts(false); | 492 mOAuth2TokenService.validateAccounts(mContext, false); |
492 | 493 |
493 // Ensure no calls have been made to the observer. | 494 // Ensure no calls have been made to the observer. |
494 Assert.assertEquals(0, mObserver.getAvailableCallCount()); | 495 Assert.assertEquals(0, mObserver.getAvailableCallCount()); |
495 Assert.assertEquals(0, mObserver.getRevokedCallCount()); | 496 Assert.assertEquals(0, mObserver.getRevokedCallCount()); |
496 Assert.assertEquals(0, mObserver.getLoadedCallCount()); | 497 Assert.assertEquals(0, mObserver.getLoadedCallCount()); |
497 } | 498 } |
498 }); | 499 }); |
499 } | 500 } |
500 | 501 |
501 @Test | 502 @Test |
502 @MediumTest | 503 @MediumTest |
503 public void testValidateAccountsFiresEventAtTheEnd() throws Throwable { | 504 public void testValidateAccountsFiresEventAtTheEnd() throws Throwable { |
504 mUiThreadTestRule.runOnUiThread(new Runnable() { | 505 mUiThreadTestRule.runOnUiThread(new Runnable() { |
505 @Override | 506 @Override |
506 public void run() { | 507 public void run() { |
507 // Mark user as signed in without setting up the account. | 508 // Mark user as signed in without setting up the account. |
508 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); | 509 mChromeSigninController.setSignedInAccountName(TEST_ACCOUNT1.nam
e); |
509 TestObserver ob = new TestObserver() { | 510 TestObserver ob = new TestObserver() { |
510 @Override | 511 @Override |
511 public void onRefreshTokenAvailable(Account account) { | 512 public void onRefreshTokenAvailable(Account account) { |
512 super.onRefreshTokenAvailable(account); | 513 super.onRefreshTokenAvailable(account); |
513 Assert.assertEquals(1, OAuth2TokenService.getAccounts().
length); | 514 Assert.assertEquals(1, OAuth2TokenService.getAccounts(mC
ontext).length); |
514 } | 515 } |
515 }; | 516 }; |
516 | 517 |
517 addObserver(ob); | 518 addObserver(ob); |
518 mOAuth2TokenService.validateAccounts(false); | 519 mOAuth2TokenService.validateAccounts(mContext, false); |
519 } | 520 } |
520 }); | 521 }); |
521 } | 522 } |
522 | 523 |
523 private static class TestObserver implements OAuth2TokenService.OAuth2TokenS
erviceObserver { | 524 private static class TestObserver implements OAuth2TokenService.OAuth2TokenS
erviceObserver { |
524 private int mAvailableCallCount; | 525 private int mAvailableCallCount; |
525 private int mRevokedCallCount; | 526 private int mRevokedCallCount; |
526 private int mLoadedCallCount; | 527 private int mLoadedCallCount; |
527 private Account mLastAccount; | 528 private Account mLastAccount; |
528 | 529 |
(...skipping 24 matching lines...) Expand all Loading... |
553 | 554 |
554 public int getLoadedCallCount() { | 555 public int getLoadedCallCount() { |
555 return mLoadedCallCount; | 556 return mLoadedCallCount; |
556 } | 557 } |
557 | 558 |
558 public Account getLastAccount() { | 559 public Account getLastAccount() { |
559 return mLastAccount; | 560 return mLastAccount; |
560 } | 561 } |
561 } | 562 } |
562 } | 563 } |
OLD | NEW |