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

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 23579009: [rAc] Move email address into billing address section. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update Mac test expectations Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
index ddb60c24ffcc8757fd6a83245bd67a20e3bc2bf1..0899efe02944c8637b658dff6c568c40ab3e55db 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
@@ -491,6 +491,18 @@ class AutofillDialogControllerTest : public ChromeRenderViewHostTestHarness {
return payload.a;
}
+ // Returns true if the given |section| contains a field of the given |type|.
+ bool SectionContainsField(DialogSection section, ServerFieldType type) {
+ const DetailInputs& inputs =
+ controller()->RequestedFieldsForSection(section);
+ for (DetailInputs::const_iterator it = inputs.begin(); it != inputs.end();
+ ++it) {
+ if (it->type == type)
+ return true;
+ }
+ return false;
+ }
+
TestAutofillDialogController* controller() { return controller_.get(); }
const FormStructure* form_structure() { return form_structure_; }
@@ -577,7 +589,7 @@ TEST_F(AutofillDialogControllerTest, PhoneNumberValidation) {
EXPECT_EQ(0U, validity_data.count(phone));
// Input an empty phone number with VALIDATE_FINAL.
- SetOutputValue( inputs, &outputs, phone, base::string16());
+ SetOutputValue(inputs, &outputs, phone, base::string16());
validity_data =
controller()->InputsAreValid(section, outputs, VALIDATE_FINAL);
EXPECT_EQ(1U, validity_data.count(phone));
@@ -820,7 +832,6 @@ TEST_F(AutofillDialogControllerTest, AutofillProfiles) {
// suggestion.
EXPECT_FALSE(controller()->MenuModelForSection(SECTION_CC));
EXPECT_FALSE(controller()->MenuModelForSection(SECTION_BILLING));
- EXPECT_FALSE(controller()->MenuModelForSection(SECTION_EMAIL));
EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(3);
@@ -831,7 +842,6 @@ TEST_F(AutofillDialogControllerTest, AutofillProfiles) {
shipping_model = controller()->MenuModelForSection(SECTION_SHIPPING);
ASSERT_TRUE(shipping_model);
EXPECT_EQ(3, shipping_model->GetItemCount());
- EXPECT_FALSE(controller()->MenuModelForSection(SECTION_EMAIL));
// An otherwise full but unverified profile should be ignored.
AutofillProfile full_profile(test::GetFullProfile());
@@ -841,7 +851,6 @@ TEST_F(AutofillDialogControllerTest, AutofillProfiles) {
shipping_model = controller()->MenuModelForSection(SECTION_SHIPPING);
ASSERT_TRUE(shipping_model);
EXPECT_EQ(3, shipping_model->GetItemCount());
- EXPECT_FALSE(controller()->MenuModelForSection(SECTION_EMAIL));
// A full, verified profile should be picked up.
AutofillProfile verified_profile(test::GetVerifiedProfile());
@@ -850,7 +859,6 @@ TEST_F(AutofillDialogControllerTest, AutofillProfiles) {
shipping_model = controller()->MenuModelForSection(SECTION_SHIPPING);
ASSERT_TRUE(shipping_model);
EXPECT_EQ(4, shipping_model->GetItemCount());
- EXPECT_TRUE(!!controller()->MenuModelForSection(SECTION_EMAIL));
}
// Makes sure that the choice of which Autofill profile to use for each section
@@ -898,9 +906,10 @@ TEST_F(AutofillDialogControllerTest, AutofillProfileDefaults) {
TEST_F(AutofillDialogControllerTest, AutofillProfileVariants) {
EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(1);
- ui::MenuModel* email_model =
- controller()->MenuModelForSection(SECTION_EMAIL);
- EXPECT_FALSE(email_model);
+ ui::MenuModel* shipping_model =
+ controller()->MenuModelForSection(SECTION_SHIPPING);
+ ASSERT_TRUE(!!shipping_model);
+ EXPECT_EQ(3, shipping_model->GetItemCount());
// Set up some variant data.
AutofillProfile full_profile(test::GetVerifiedProfile());
@@ -908,52 +917,14 @@ TEST_F(AutofillDialogControllerTest, AutofillProfileVariants) {
names.push_back(ASCIIToUTF16("John Doe"));
names.push_back(ASCIIToUTF16("Jane Doe"));
full_profile.SetRawMultiInfo(EMAIL_ADDRESS, names);
- const string16 kEmail1 = ASCIIToUTF16(kFakeEmail);
- const string16 kEmail2 = ASCIIToUTF16("admin@example.com");
std::vector<string16> emails;
- emails.push_back(kEmail1);
- emails.push_back(kEmail2);
+ emails.push_back(ASCIIToUTF16(kFakeEmail));
+ emails.push_back(ASCIIToUTF16("admin@example.com"));
full_profile.SetRawMultiInfo(EMAIL_ADDRESS, emails);
- // Respect variants for the email address field only.
+ // Non-default variants are ignored by the dialog.
controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- ui::MenuModel* shipping_model =
- controller()->MenuModelForSection(SECTION_SHIPPING);
EXPECT_EQ(4, shipping_model->GetItemCount());
- email_model = controller()->MenuModelForSection(SECTION_EMAIL);
- ASSERT_TRUE(!!email_model);
- EXPECT_EQ(4, email_model->GetItemCount());
-
- // The first one is the default.
- SuggestionsMenuModel* email_suggestions = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_EMAIL));
- EXPECT_EQ(0, email_suggestions->checked_item());
-
- email_model->ActivatedAt(0);
- EXPECT_EQ(kEmail1,
- controller()->SuggestionStateForSection(SECTION_EMAIL).
- vertically_compact_text);
- email_model->ActivatedAt(1);
- EXPECT_EQ(kEmail2,
- controller()->SuggestionStateForSection(SECTION_EMAIL).
- vertically_compact_text);
-
- controller()->EditClickedForSection(SECTION_EMAIL);
- const DetailInputs& inputs =
- controller()->RequestedFieldsForSection(SECTION_EMAIL);
- EXPECT_EQ(kEmail2, inputs[0].initial_value);
-
- // The choice of variant is persisted across runs of the dialog.
- email_model->ActivatedAt(0);
- email_model->ActivatedAt(1);
- FillCreditCardInputs();
- controller()->OnAccept();
-
- Reset();
- controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- email_suggestions = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_EMAIL));
- EXPECT_EQ(1, email_suggestions->checked_item());
}
TEST_F(AutofillDialogControllerTest, SuggestValidEmail) {
@@ -962,44 +933,32 @@ TEST_F(AutofillDialogControllerTest, SuggestValidEmail) {
profile.SetRawInfo(EMAIL_ADDRESS, kValidEmail);
controller()->GetTestingManager()->AddTestingProfile(&profile);
- controller()->MenuModelForSection(SECTION_EMAIL)->ActivatedAt(0);
- EXPECT_EQ(kValidEmail,
- controller()->SuggestionStateForSection(SECTION_EMAIL).
- vertically_compact_text);
+ // "add", "manage", and 1 suggestion.
+ EXPECT_EQ(
+ 3, controller()->MenuModelForSection(SECTION_BILLING)->GetItemCount());
+ // "add", "manage", 1 suggestion, and "same as billing".
+ EXPECT_EQ(
+ 4, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount());
}
TEST_F(AutofillDialogControllerTest, DoNotSuggestInvalidEmail) {
AutofillProfile profile(test::GetVerifiedProfile());
profile.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16(".!#$%&'*+/=?^_`-@-.."));
controller()->GetTestingManager()->AddTestingProfile(&profile);
- EXPECT_EQ(static_cast<ui::MenuModel*>(NULL),
- controller()->MenuModelForSection(SECTION_EMAIL));
-}
-
-TEST_F(AutofillDialogControllerTest, DoNotSuggestEmailFromIncompleteProfile) {
- AutofillProfile profile(test::GetVerifiedProfile());
- profile.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16(kFakeEmail));
- profile.SetRawInfo(ADDRESS_HOME_STATE, base::string16());
- controller()->GetTestingManager()->AddTestingProfile(&profile);
- EXPECT_EQ(static_cast<ui::MenuModel*>(NULL),
- controller()->MenuModelForSection(SECTION_EMAIL));
-}
-TEST_F(AutofillDialogControllerTest, DoNotSuggestEmailFromInvalidProfile) {
- AutofillProfile profile(test::GetVerifiedProfile());
- profile.SetRawInfo(EMAIL_ADDRESS, ASCIIToUTF16(kFakeEmail));
- profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("C"));
- controller()->GetTestingManager()->AddTestingProfile(&profile);
- EXPECT_EQ(static_cast<ui::MenuModel*>(NULL),
- controller()->MenuModelForSection(SECTION_EMAIL));
+ EXPECT_FALSE(!!controller()->MenuModelForSection(SECTION_BILLING));
+ // "add", "manage", 1 suggestion, and "same as billing".
+ EXPECT_EQ(
+ 4, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount());
}
TEST_F(AutofillDialogControllerTest, SuggestValidAddress) {
AutofillProfile full_profile(test::GetVerifiedProfile());
full_profile.set_origin(kSettingsOrigin);
controller()->GetTestingManager()->AddTestingProfile(&full_profile);
+ // "add", "manage", and 1 suggestion.
EXPECT_EQ(
- 4, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount());
+ 3, controller()->MenuModelForSection(SECTION_BILLING)->GetItemCount());
}
TEST_F(AutofillDialogControllerTest, DoNotSuggestInvalidAddress) {
@@ -1007,8 +966,16 @@ TEST_F(AutofillDialogControllerTest, DoNotSuggestInvalidAddress) {
full_profile.set_origin(kSettingsOrigin);
full_profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("C"));
controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- EXPECT_EQ(
- 3, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount());
+
+ EXPECT_FALSE(!!controller()->MenuModelForSection(SECTION_BILLING));
+}
+
+TEST_F(AutofillDialogControllerTest, DoNotSuggestIncompleteAddress) {
+ AutofillProfile profile(test::GetVerifiedProfile());
+ profile.SetRawInfo(ADDRESS_HOME_STATE, base::string16());
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+
+ EXPECT_FALSE(!!controller()->MenuModelForSection(SECTION_BILLING));
}
TEST_F(AutofillDialogControllerTest, AutofillCreditCards) {
@@ -1494,29 +1461,31 @@ TEST_F(AutofillDialogControllerTest, EditClicked) {
EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(1);
AutofillProfile full_profile(test::GetVerifiedProfile());
- const string16 kEmail = ASCIIToUTF16("first@johndoe.com");
- full_profile.SetRawInfo(EMAIL_ADDRESS, kEmail);
+ const string16 kName = ASCIIToUTF16("John Doe");
+ full_profile.SetRawInfo(NAME_FULL, kName);
controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- ui::MenuModel* email_model =
- controller()->MenuModelForSection(SECTION_EMAIL);
- EXPECT_EQ(3, email_model->GetItemCount());
+ ui::MenuModel* billing_model =
+ controller()->MenuModelForSection(SECTION_BILLING);
+ // "add", "manage", and 1 suggestion.
+ EXPECT_EQ(3, billing_model->GetItemCount());
// When unedited, the initial_value should be empty.
- email_model->ActivatedAt(0);
+ billing_model->ActivatedAt(0);
const DetailInputs& inputs0 =
- controller()->RequestedFieldsForSection(SECTION_EMAIL);
+ controller()->RequestedFieldsForSection(SECTION_BILLING);
EXPECT_EQ(string16(), inputs0[0].initial_value);
- EXPECT_EQ(kEmail,
- controller()->SuggestionStateForSection(SECTION_EMAIL).
- vertically_compact_text);
+ EXPECT_NE(base::string16::npos,
+ controller()->SuggestionStateForSection(SECTION_BILLING).
+ vertically_compact_text.find(kName));
// When edited, the initial_value should contain the value.
- controller()->EditClickedForSection(SECTION_EMAIL);
+ controller()->EditClickedForSection(SECTION_BILLING);
const DetailInputs& inputs1 =
- controller()->RequestedFieldsForSection(SECTION_EMAIL);
- EXPECT_EQ(kEmail, inputs1[0].initial_value);
- EXPECT_FALSE(controller()->SuggestionStateForSection(SECTION_EMAIL).visible);
+ controller()->RequestedFieldsForSection(SECTION_BILLING);
+ EXPECT_EQ(kName, inputs1[0].initial_value);
+ EXPECT_FALSE(
+ controller()->SuggestionStateForSection(SECTION_BILLING).visible);
}
// Tests that editing an autofill profile and then submitting works.
@@ -1592,48 +1561,6 @@ TEST_F(AutofillDialogControllerTest, AddAutofillProfile) {
EXPECT_EQ(full_profile2.GetInfo(AutofillType(input.type), "en-US"),
added_profile.GetInfo(AutofillType(input.type), "en-US"));
}
-
- // Also, the currently selected email address should get added to the new
- // profile.
- string16 original_email =
- full_profile.GetInfo(AutofillType(EMAIL_ADDRESS), "en-US");
- EXPECT_FALSE(original_email.empty());
- EXPECT_EQ(original_email,
- added_profile.GetInfo(AutofillType(EMAIL_ADDRESS), "en-US"));
-}
-
-// Makes sure that a newly added email address gets added to an existing profile
-// (as opposed to creating its own profile). http://crbug.com/240926
-TEST_F(AutofillDialogControllerTest, AddEmail) {
- SwitchToAutofill();
- EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(2);
-
- AutofillProfile full_profile(test::GetVerifiedProfile());
- CreditCard credit_card(test::GetVerifiedCreditCard());
- controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- controller()->GetTestingManager()->AddTestingCreditCard(&credit_card);
-
- ui::MenuModel* model = controller()->MenuModelForSection(SECTION_EMAIL);
- ASSERT_TRUE(model);
- // Activate the "Add email address" menu item.
- model->ActivatedAt(model->GetItemCount() - 2);
-
- // Fill in the inputs from the profile.
- DetailOutputMap outputs;
- const DetailInputs& inputs =
- controller()->RequestedFieldsForSection(SECTION_EMAIL);
- const DetailInput& input = inputs[0];
- string16 new_email = ASCIIToUTF16("addemailtest@example.com");
- outputs[&input] = new_email;
- controller()->GetView()->SetUserInput(SECTION_EMAIL, outputs);
-
- FillCreditCardInputs();
- controller()->OnAccept();
- std::vector<base::string16> email_values;
- full_profile.GetMultiInfo(
- AutofillType(EMAIL_ADDRESS), "en-US", &email_values);
- ASSERT_EQ(2U, email_values.size());
- EXPECT_EQ(new_email, email_values[1]);
}
TEST_F(AutofillDialogControllerTest, VerifyCvv) {
@@ -1983,8 +1910,10 @@ TEST_F(AutofillDialogControllerTest, ViewSubmitSetsPref) {
TEST_F(AutofillDialogControllerTest, HideWalletEmail) {
SwitchToAutofill();
- // Email section should be showing when using Autofill.
- EXPECT_TRUE(controller()->SectionIsActive(SECTION_EMAIL));
+ // Email field should be showing when using Autofill.
+ EXPECT_TRUE(controller()->SectionIsActive(SECTION_BILLING));
+ EXPECT_FALSE(controller()->SectionIsActive(SECTION_CC_BILLING));
+ EXPECT_TRUE(SectionContainsField(SECTION_BILLING, EMAIL_ADDRESS));
SwitchToWallet();
@@ -1998,8 +1927,10 @@ TEST_F(AutofillDialogControllerTest, HideWalletEmail) {
controller()->OnDidGetWalletItems(wallet_items.Pass());
EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
- // Email section should be hidden when using Wallet.
- EXPECT_FALSE(controller()->SectionIsActive(SECTION_EMAIL));
+ // Email field should be absent when using Wallet.
+ EXPECT_FALSE(controller()->SectionIsActive(SECTION_BILLING));
+ EXPECT_TRUE(controller()->SectionIsActive(SECTION_CC_BILLING));
+ EXPECT_FALSE(SectionContainsField(SECTION_CC_BILLING, EMAIL_ADDRESS));
controller()->OnAccept();
controller()->OnDidGetFullWallet(wallet::GetTestFullWallet());
@@ -2013,7 +1944,7 @@ TEST_F(AutofillDialogControllerTest, HideWalletEmail) {
break;
}
}
- ASSERT_LT(i, form_structure()->field_count());
+ EXPECT_LT(i, form_structure()->field_count());
}
// Test if autofill types of returned form structure are correct for billing
@@ -2048,13 +1979,13 @@ TEST_F(AutofillDialogControllerTest, SaveDetailsInChrome) {
controller()->GetTestingManager()->AddTestingCreditCard(&card);
EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome());
- controller()->EditClickedForSection(SECTION_EMAIL);
+ controller()->EditClickedForSection(SECTION_BILLING);
EXPECT_TRUE(controller()->ShouldOfferToSaveInChrome());
- controller()->MenuModelForSection(SECTION_EMAIL)->ActivatedAt(0);
+ controller()->MenuModelForSection(SECTION_BILLING)->ActivatedAt(0);
EXPECT_FALSE(controller()->ShouldOfferToSaveInChrome());
- controller()->MenuModelForSection(SECTION_EMAIL)->ActivatedAt(1);
+ controller()->MenuModelForSection(SECTION_BILLING)->ActivatedAt(1);
EXPECT_TRUE(controller()->ShouldOfferToSaveInChrome());
profile()->ForceIncognito(true);
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | chrome/browser/ui/autofill/autofill_dialog_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698