| 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/guid.h" | 5 #include "base/guid.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h" | 10 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h" |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 // A full profile should be picked up. | 418 // A full profile should be picked up. |
| 419 AutofillProfile full_profile(test::GetFullProfile()); | 419 AutofillProfile full_profile(test::GetFullProfile()); |
| 420 full_profile.set_origin(kSettingsOrigin); | 420 full_profile.set_origin(kSettingsOrigin); |
| 421 full_profile.SetRawInfo(ADDRESS_HOME_LINE2, string16()); | 421 full_profile.SetRawInfo(ADDRESS_HOME_LINE2, string16()); |
| 422 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 422 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 423 shipping_model = controller()->MenuModelForSection(SECTION_SHIPPING); | 423 shipping_model = controller()->MenuModelForSection(SECTION_SHIPPING); |
| 424 EXPECT_EQ(4, shipping_model->GetItemCount()); | 424 EXPECT_EQ(4, shipping_model->GetItemCount()); |
| 425 EXPECT_TRUE(!!controller()->MenuModelForSection(SECTION_EMAIL)); | 425 EXPECT_TRUE(!!controller()->MenuModelForSection(SECTION_EMAIL)); |
| 426 } | 426 } |
| 427 | 427 |
| 428 // Makes sure that the choice of which Autofill profile to use for each section |
| 429 // is sticky. |
| 430 TEST_F(AutofillDialogControllerTest, AutofillProfileDefaults) { |
| 431 AutofillProfile full_profile(test::GetFullProfile()); |
| 432 full_profile.set_origin(kSettingsOrigin); |
| 433 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 434 AutofillProfile full_profile2(test::GetFullProfile2()); |
| 435 full_profile2.set_origin(kSettingsOrigin); |
| 436 controller()->GetTestingManager()->AddTestingProfile(&full_profile2); |
| 437 |
| 438 // Until a selection has been made, the default shipping suggestion is the |
| 439 // first one (after "use billing"). |
| 440 SuggestionsMenuModel* shipping_model = static_cast<SuggestionsMenuModel*>( |
| 441 controller()->MenuModelForSection(SECTION_SHIPPING)); |
| 442 EXPECT_EQ(1, shipping_model->checked_item()); |
| 443 |
| 444 for (int i = 2; i >= 0; --i) { |
| 445 shipping_model = static_cast<SuggestionsMenuModel*>( |
| 446 controller()->MenuModelForSection(SECTION_SHIPPING)); |
| 447 shipping_model->ExecuteCommand(i, 0); |
| 448 controller()->OnAccept(); |
| 449 |
| 450 TearDown(); |
| 451 SetUp(); |
| 452 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 453 controller()->GetTestingManager()->AddTestingProfile(&full_profile2); |
| 454 shipping_model = static_cast<SuggestionsMenuModel*>( |
| 455 controller()->MenuModelForSection(SECTION_SHIPPING)); |
| 456 EXPECT_EQ(i, shipping_model->checked_item()); |
| 457 } |
| 458 |
| 459 // Try again, but don't add the default profile to the PDM. The dialog |
| 460 // should fall back to the first profile. |
| 461 shipping_model->ExecuteCommand(2, 0); |
| 462 controller()->OnAccept(); |
| 463 TearDown(); |
| 464 SetUp(); |
| 465 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 466 shipping_model = static_cast<SuggestionsMenuModel*>( |
| 467 controller()->MenuModelForSection(SECTION_SHIPPING)); |
| 468 EXPECT_EQ(1, shipping_model->checked_item()); |
| 469 } |
| 470 |
| 428 TEST_F(AutofillDialogControllerTest, AutofillProfileVariants) { | 471 TEST_F(AutofillDialogControllerTest, AutofillProfileVariants) { |
| 429 EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(1); | 472 EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(1); |
| 430 ui::MenuModel* email_model = | 473 ui::MenuModel* email_model = |
| 431 controller()->MenuModelForSection(SECTION_EMAIL); | 474 controller()->MenuModelForSection(SECTION_EMAIL); |
| 432 EXPECT_FALSE(email_model); | 475 EXPECT_FALSE(email_model); |
| 433 | 476 |
| 434 // Set up some variant data. | 477 // Set up some variant data. |
| 435 AutofillProfile full_profile(test::GetFullProfile()); | 478 AutofillProfile full_profile(test::GetFullProfile()); |
| 436 std::vector<string16> names; | 479 std::vector<string16> names; |
| 437 names.push_back(ASCIIToUTF16("John Doe")); | 480 names.push_back(ASCIIToUTF16("John Doe")); |
| 438 names.push_back(ASCIIToUTF16("Jane Doe")); | 481 names.push_back(ASCIIToUTF16("Jane Doe")); |
| 439 full_profile.SetRawMultiInfo(EMAIL_ADDRESS, names); | 482 full_profile.SetRawMultiInfo(EMAIL_ADDRESS, names); |
| 440 const string16 kEmail1 = ASCIIToUTF16(kFakeEmail); | 483 const string16 kEmail1 = ASCIIToUTF16(kFakeEmail); |
| 441 const string16 kEmail2 = ASCIIToUTF16("admin@example.com"); | 484 const string16 kEmail2 = ASCIIToUTF16("admin@example.com"); |
| 442 std::vector<string16> emails; | 485 std::vector<string16> emails; |
| 443 emails.push_back(kEmail1); | 486 emails.push_back(kEmail1); |
| 444 emails.push_back(kEmail2); | 487 emails.push_back(kEmail2); |
| 445 full_profile.SetRawMultiInfo(EMAIL_ADDRESS, emails); | 488 full_profile.SetRawMultiInfo(EMAIL_ADDRESS, emails); |
| 446 | 489 |
| 447 // Respect variants for the email address field only. | 490 // Respect variants for the email address field only. |
| 448 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 491 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 449 ui::MenuModel* shipping_model = | 492 ui::MenuModel* shipping_model = |
| 450 controller()->MenuModelForSection(SECTION_SHIPPING); | 493 controller()->MenuModelForSection(SECTION_SHIPPING); |
| 451 EXPECT_EQ(4, shipping_model->GetItemCount()); | 494 EXPECT_EQ(4, shipping_model->GetItemCount()); |
| 452 email_model = controller()->MenuModelForSection(SECTION_EMAIL); | 495 email_model = controller()->MenuModelForSection(SECTION_EMAIL); |
| 453 ASSERT_TRUE(!!email_model); | 496 ASSERT_TRUE(!!email_model); |
| 454 EXPECT_EQ(4, email_model->GetItemCount()); | 497 EXPECT_EQ(4, email_model->GetItemCount()); |
| 455 | 498 |
| 499 // The first one is the default. |
| 500 SuggestionsMenuModel* email_suggestions = static_cast<SuggestionsMenuModel*>( |
| 501 controller()->MenuModelForSection(SECTION_EMAIL)); |
| 502 EXPECT_EQ(0, email_suggestions->checked_item()); |
| 503 |
| 456 email_model->ActivatedAt(0); | 504 email_model->ActivatedAt(0); |
| 457 EXPECT_EQ(kEmail1, | 505 EXPECT_EQ(kEmail1, |
| 458 controller()->SuggestionStateForSection(SECTION_EMAIL).text); | 506 controller()->SuggestionStateForSection(SECTION_EMAIL).text); |
| 459 email_model->ActivatedAt(1); | 507 email_model->ActivatedAt(1); |
| 460 EXPECT_EQ(kEmail2, | 508 EXPECT_EQ(kEmail2, |
| 461 controller()->SuggestionStateForSection(SECTION_EMAIL).text); | 509 controller()->SuggestionStateForSection(SECTION_EMAIL).text); |
| 462 | 510 |
| 463 controller()->EditClickedForSection(SECTION_EMAIL); | 511 controller()->EditClickedForSection(SECTION_EMAIL); |
| 464 const DetailInputs& inputs = | 512 const DetailInputs& inputs = |
| 465 controller()->RequestedFieldsForSection(SECTION_EMAIL); | 513 controller()->RequestedFieldsForSection(SECTION_EMAIL); |
| 466 EXPECT_EQ(kEmail2, inputs[0].initial_value); | 514 EXPECT_EQ(kEmail2, inputs[0].initial_value); |
| 515 |
| 516 // The choice of variant is persisted across runs of the dialog. |
| 517 email_model->ActivatedAt(0); |
| 518 email_model->ActivatedAt(1); |
| 519 controller()->OnAccept(); |
| 520 |
| 521 TearDown(); |
| 522 SetUp(); |
| 523 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
| 524 email_suggestions = static_cast<SuggestionsMenuModel*>( |
| 525 controller()->MenuModelForSection(SECTION_EMAIL)); |
| 526 EXPECT_EQ(1, email_suggestions->checked_item()); |
| 467 } | 527 } |
| 468 | 528 |
| 469 // Test selecting a shipping address different from billing as address. | 529 // Test selecting a shipping address different from billing as address. |
| 470 TEST_F(AutofillDialogControllerTest, DontUseBillingAsShipping) { | 530 TEST_F(AutofillDialogControllerTest, DontUseBillingAsShipping) { |
| 471 AutofillProfile full_profile(test::GetFullProfile()); | 531 AutofillProfile full_profile(test::GetFullProfile()); |
| 472 AutofillProfile full_profile2(test::GetFullProfile2()); | 532 AutofillProfile full_profile2(test::GetFullProfile2()); |
| 473 CreditCard credit_card; | 533 CreditCard credit_card; |
| 474 test::SetCreditCardInfo(&credit_card, "Test User", | 534 test::SetCreditCardInfo(&credit_card, "Test User", |
| 475 "4234567890654321", // Visa | 535 "4234567890654321", // Visa |
| 476 "11", "2100"); | 536 "11", "2100"); |
| (...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1208 EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome()); | 1268 EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome()); |
| 1209 | 1269 |
| 1210 controller()->MenuModelForSection(SECTION_EMAIL)->ActivatedAt(1); | 1270 controller()->MenuModelForSection(SECTION_EMAIL)->ActivatedAt(1); |
| 1211 EXPECT_TRUE(controller()->ShouldOfferToSaveInChrome()); | 1271 EXPECT_TRUE(controller()->ShouldOfferToSaveInChrome()); |
| 1212 | 1272 |
| 1213 profile()->set_incognito(true); | 1273 profile()->set_incognito(true); |
| 1214 EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome()); | 1274 EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome()); |
| 1215 } | 1275 } |
| 1216 | 1276 |
| 1217 } // namespace autofill | 1277 } // namespace autofill |
| OLD | NEW |