OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
7 #include "chrome/browser/content_settings/cookie_settings.h" | 7 #include "chrome/browser/content_settings/cookie_settings.h" |
8 #include "chrome/browser/prefs/pref_service.h" | 8 #include "chrome/browser/prefs/pref_service.h" |
9 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 9 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
(...skipping 30 matching lines...) Expand all Loading... | |
41 | 41 |
42 // Explicit URLs are sign in URLs created by chrome for specific sign in access | 42 // Explicit URLs are sign in URLs created by chrome for specific sign in access |
43 // points. Implicit URLs are those to sign for some Google service, like gmail | 43 // points. Implicit URLs are those to sign for some Google service, like gmail |
44 // or drive. In former case, with a valid URL, we don't want to offer the | 44 // or drive. In former case, with a valid URL, we don't want to offer the |
45 // interstitial. In all other cases we do. | 45 // interstitial. In all other cases we do. |
46 | 46 |
47 const char kImplicitURLString[] = | 47 const char kImplicitURLString[] = |
48 "https://accounts.google.com/ServiceLogin" | 48 "https://accounts.google.com/ServiceLogin" |
49 "?service=foo&continue=http://foo.google.com"; | 49 "?service=foo&continue=http://foo.google.com"; |
50 | 50 |
51 bool UseWebBasedSigninFlow() { | |
52 const bool use_web_based_singin_flow = | |
53 CommandLine::ForCurrentProcess()->HasSwitch( | |
54 switches::kUseWebBasedSigninFlow); | |
55 return use_web_based_singin_flow; | |
56 } | |
57 | |
58 class SigninManagerMock : public FakeSigninManager { | 51 class SigninManagerMock : public FakeSigninManager { |
59 public: | 52 public: |
60 explicit SigninManagerMock(Profile* profile) | 53 explicit SigninManagerMock(Profile* profile) |
61 : FakeSigninManager(profile) {} | 54 : FakeSigninManager(profile) {} |
62 MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username)); | 55 MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username)); |
63 }; | 56 }; |
64 | 57 |
65 class TestProfileIOData : public ProfileIOData { | 58 class TestProfileIOData : public ProfileIOData { |
66 public: | 59 public: |
67 TestProfileIOData(bool is_incognito, PrefService* pref_service, | 60 TestProfileIOData(bool is_incognito, PrefService* pref_service, |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
325 PrefService* pref_service = testing_profile->GetPrefs(); | 318 PrefService* pref_service = testing_profile->GetPrefs(); |
326 PrefService* local_state = g_browser_process->local_state(); | 319 PrefService* local_state = g_browser_process->local_state(); |
327 CookieSettings* cookie_settings = | 320 CookieSettings* cookie_settings = |
328 CookieSettings::Factory::GetForProfile(testing_profile); | 321 CookieSettings::Factory::GetForProfile(testing_profile); |
329 TestProfileIOData* io_data = new TestProfileIOData( | 322 TestProfileIOData* io_data = new TestProfileIOData( |
330 is_incognito, pref_service, local_state, cookie_settings); | 323 is_incognito, pref_service, local_state, cookie_settings); |
331 return io_data; | 324 return io_data; |
332 } | 325 } |
333 | 326 |
334 TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { | 327 TEST_F(OneClickSigninHelperTest, CanOfferNoContents) { |
335 EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, "user@gmail.com", true)); | 328 int error_message_id = 0; |
336 EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, "", false)); | 329 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
330 NULL, OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
331 "user@gmail.com", &error_message_id)); | |
332 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
333 NULL, OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
334 "user@gmail.com", &error_message_id)); | |
335 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
336 NULL, OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
337 "", &error_message_id)); | |
337 } | 338 } |
338 | 339 |
339 TEST_F(OneClickSigninHelperTest, CanOffer) { | 340 TEST_F(OneClickSigninHelperTest, CanOffer) { |
340 CreateSigninManager(false, ""); | 341 CreateSigninManager(false, ""); |
341 | 342 |
342 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 343 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
343 WillRepeatedly(Return(true)); | 344 WillRepeatedly(Return(true)); |
344 | 345 |
346 int error_message_id = 0; | |
347 | |
345 EnableOneClick(true); | 348 EnableOneClick(true); |
346 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), "user@gmail.com", | 349 EXPECT_TRUE(OneClickSigninHelper::CanOffer( |
347 true)); | 350 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
348 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), "", false)); | 351 "user@gmail.com", &error_message_id)); |
352 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
353 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
354 "user@gmail.com", &error_message_id)); | |
355 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
356 web_contents(), | |
357 OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
358 "", &error_message_id)); | |
349 | 359 |
350 EnableOneClick(false); | 360 EnableOneClick(false); |
351 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "user@gmail.com", | 361 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
352 true)); | 362 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
353 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "", false)); | 363 "user@gmail.com", &error_message_id)); |
364 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
365 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
366 "user@gmail.com", &error_message_id)); | |
367 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
368 web_contents(), | |
369 OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
370 "", &error_message_id)); | |
354 } | 371 } |
355 | 372 |
356 TEST_F(OneClickSigninHelperTest, CanOfferFirstSetup) { | 373 TEST_F(OneClickSigninHelperTest, CanOfferFirstSetup) { |
357 CreateSigninManager(false, ""); | 374 CreateSigninManager(false, ""); |
358 | 375 |
359 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 376 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
360 WillRepeatedly(Return(true)); | 377 WillRepeatedly(Return(true)); |
361 | 378 |
362 // Invoke OneClickTestProfileSyncService factory function and grab result. | 379 // Invoke OneClickTestProfileSyncService factory function and grab result. |
363 OneClickTestProfileSyncService* sync = | 380 OneClickTestProfileSyncService* sync = |
364 static_cast<OneClickTestProfileSyncService*>( | 381 static_cast<OneClickTestProfileSyncService*>( |
365 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 382 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
366 static_cast<Profile*>(browser_context()), | 383 static_cast<Profile*>(browser_context()), |
367 OneClickTestProfileSyncService::Build)); | 384 OneClickTestProfileSyncService::Build)); |
368 | 385 |
369 sync->set_first_setup_in_progress(true); | 386 sync->set_first_setup_in_progress(true); |
370 | 387 |
371 EXPECT_EQ(UseWebBasedSigninFlow(), | 388 int error_message_id = 0; |
372 OneClickSigninHelper::CanOffer(web_contents(), | 389 EXPECT_TRUE(OneClickSigninHelper::CanOffer( |
373 "foo@gmail.com", | 390 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
374 true)); | 391 "foo@gmail.com", &error_message_id)); |
375 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), | 392 EXPECT_TRUE(OneClickSigninHelper::CanOffer( |
376 "foo@gmail.com", | 393 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, |
377 false)); | 394 "foo@gmail.com", &error_message_id)); |
395 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
396 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
397 "", &error_message_id)); | |
378 } | 398 } |
379 | 399 |
380 TEST_F(OneClickSigninHelperTest, CanOfferProfileConnected) { | 400 TEST_F(OneClickSigninHelperTest, CanOfferProfileConnected) { |
381 CreateSigninManager(false, "foo@gmail.com"); | 401 CreateSigninManager(false, "foo@gmail.com"); |
382 | 402 |
383 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 403 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
384 WillRepeatedly(Return(true)); | 404 WillRepeatedly(Return(true)); |
385 | 405 |
386 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), | 406 int error_message_id = 0; |
387 "foo@gmail.com", | 407 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
388 true)); | 408 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
389 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), | 409 "foo@gmail.com", &error_message_id)); |
390 "user@gmail.com", | 410 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
391 true)); | 411 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
392 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), | 412 "user@gmail.com", &error_message_id)); |
393 "", | 413 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
394 false)); | 414 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, |
415 "foo@gmail.com", &error_message_id)); | |
416 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
417 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
418 "user@gmail.com", &error_message_id)); | |
419 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
420 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
421 "", &error_message_id)); | |
395 } | 422 } |
396 | 423 |
397 TEST_F(OneClickSigninHelperTest, CanOfferUsernameNotAllowed) { | 424 TEST_F(OneClickSigninHelperTest, CanOfferUsernameNotAllowed) { |
398 CreateSigninManager(false, "foo@gmail.com"); | 425 CreateSigninManager(false, "foo@gmail.com"); |
399 | 426 |
400 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 427 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
401 WillRepeatedly(Return(false)); | 428 WillRepeatedly(Return(false)); |
402 | 429 |
403 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), | 430 int error_message_id = 0; |
404 "foo@gmail.com", | 431 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
405 true)); | 432 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
406 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), | 433 "foo@gmail.com", &error_message_id)); |
407 "", | 434 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
408 false)); | 435 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, |
436 "foo@gmail.com", &error_message_id)); | |
437 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
438 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
439 "", &error_message_id)); | |
409 } | 440 } |
410 | 441 |
411 TEST_F(OneClickSigninHelperTest, CanOfferWithRejectedEmail) { | 442 TEST_F(OneClickSigninHelperTest, CanOfferWithRejectedEmail) { |
412 CreateSigninManager(false, ""); | 443 CreateSigninManager(false, ""); |
413 | 444 |
414 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 445 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
415 WillRepeatedly(Return(true)); | 446 WillRepeatedly(Return(true)); |
416 | 447 |
417 AddEmailToOneClickRejectedList("foo@gmail.com"); | 448 AddEmailToOneClickRejectedList("foo@gmail.com"); |
418 AddEmailToOneClickRejectedList("user@gmail.com"); | 449 AddEmailToOneClickRejectedList("user@gmail.com"); |
419 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "foo@gmail.com", | 450 |
420 true)); | 451 int error_message_id = 0; |
421 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "user@gmail.com", | 452 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
422 true)); | 453 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
423 EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents(), "john@gmail.com", | 454 "foo@gmail.com", &error_message_id)); |
424 true)); | 455 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
456 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
457 "user@gmail.com", &error_message_id)); | |
458 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
459 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
460 "foo@gmail.com", &error_message_id)); | |
461 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
462 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
463 "user@gmail.com", &error_message_id)); | |
464 EXPECT_TRUE(OneClickSigninHelper::CanOffer( | |
465 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
466 "john@gmail.com", &error_message_id)); | |
425 } | 467 } |
426 | 468 |
427 TEST_F(OneClickSigninHelperTest, CanOfferIncognito) { | 469 TEST_F(OneClickSigninHelperTest, CanOfferIncognito) { |
428 CreateSigninManager(true, ""); | 470 CreateSigninManager(true, ""); |
429 | 471 |
430 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "user@gmail.com", | 472 int error_message_id = 0; |
431 true)); | 473 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
432 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "", false)); | 474 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
475 "user@gmail.com", &error_message_id)); | |
476 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
477 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
478 "user@gmail.com", &error_message_id)); | |
479 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
480 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
481 "", &error_message_id)); | |
433 } | 482 } |
434 | 483 |
435 TEST_F(OneClickSigninHelperTest, CanOfferNoSigninCookies) { | 484 TEST_F(OneClickSigninHelperTest, CanOfferNoSigninCookies) { |
436 CreateSigninManager(false, ""); | 485 CreateSigninManager(false, ""); |
437 AllowSigninCookies(false); | 486 AllowSigninCookies(false); |
438 | 487 |
439 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). | 488 EXPECT_CALL(*signin_manager_, IsAllowedUsername(_)). |
440 WillRepeatedly(Return(true)); | 489 WillRepeatedly(Return(true)); |
441 | 490 |
442 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "user@gmail.com", | 491 int error_message_id = 0; |
443 true)); | 492 EXPECT_FALSE(OneClickSigninHelper::CanOffer( |
444 EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents(), "", false)); | 493 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, |
494 "user@gmail.com", &error_message_id)); | |
495 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
496 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_ALL, | |
497 "user@gmail.com", &error_message_id)); | |
498 EXPECT_FALSE(OneClickSigninHelper::CanOffer( | |
499 web_contents(), OneClickSigninHelper::CAN_OFFER_FOR_INTERSTITAL_ONLY, | |
Andrew T Wilson (Slow)
2012/12/03 14:54:49
Should we be checking the value in error_message_i
| |
500 "", &error_message_id)); | |
445 } | 501 } |
446 | 502 |
447 // I/O thread tests | 503 // I/O thread tests |
448 | 504 |
449 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) { | 505 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) { |
450 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 506 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
451 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | 507 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, |
452 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 508 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
453 valid_gaia_url_, "", &request_, io_data.get())); | 509 valid_gaia_url_, "", &request_, io_data.get())); |
454 } | 510 } |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
563 valid_gaia_url_, "", &request_, io_data.get())); | 619 valid_gaia_url_, "", &request_, io_data.get())); |
564 } | 620 } |
565 | 621 |
566 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) { | 622 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) { |
567 AllowSigninCookies(false); | 623 AllowSigninCookies(false); |
568 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 624 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
569 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 625 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
570 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 626 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
571 valid_gaia_url_, "", &request_, io_data.get())); | 627 valid_gaia_url_, "", &request_, io_data.get())); |
572 } | 628 } |
OLD | NEW |