Chromium Code Reviews| 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 |