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

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

Issue 23882013: [rAc] Persist selection of newly added cards and addresses. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests, add a test 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 e5f825aab0e137387a790eeaf11346a7912b0bce..9cbdbf92772eb852cb65ec8e18d86a65f3e297e9 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
@@ -460,6 +460,30 @@ class AutofillDialogControllerTest : public ChromeRenderViewHostTestHarness {
controller()->GetView()->SetUserInput(SECTION_CC, cc_outputs);
}
+ // Activates the 'Add new foo' option from the |section|'s suggestions
+ // dropdown and fills the |section|'s inputs with the data from the
+ // |data_model|. If |section| is SECTION_CC, also fills in '123' for the CVC.
+ void FillInputs(DialogSection section, const AutofillDataModel& data_model) {
+ // Select the 'Add new foo' option.
+ ui::MenuModel* model = GetMenuModelForSection(section);
+ model->ActivatedAt(model->GetItemCount() - 2);
+
+ // Fill the inputs.
+ DetailOutputMap outputs;
+ const DetailInputs& inputs =
+ controller()->RequestedFieldsForSection(section);
+ for (size_t i = 0; i < inputs.size(); ++i) {
+ ServerFieldType type = inputs[i].type;
+ base::string16 output;
+ if (type == CREDIT_CARD_VERIFICATION_CODE)
+ output = ASCIIToUTF16("123");
+ else
+ output = data_model.GetInfo(AutofillType(type), "en-US");
+ outputs[&inputs[i]] = output;
+ }
+ controller()->GetView()->SetUserInput(section, outputs);
+ }
+
std::vector<DialogNotification> NotificationsOfType(
DialogNotification::Type type) {
std::vector<DialogNotification> right_type;
@@ -538,6 +562,11 @@ class AutofillDialogControllerTest : public ChromeRenderViewHostTestHarness {
return false;
}
+ SuggestionsMenuModel* GetMenuModelForSection(DialogSection section) {
+ ui::MenuModel* model = controller()->MenuModelForSection(section);
+ return static_cast<SuggestionsMenuModel*>(model);
+ }
+
TestAutofillDialogController* controller() { return controller_.get(); }
const FormStructure* form_structure() { return form_structure_; }
@@ -906,31 +935,27 @@ TEST_F(AutofillDialogControllerTest, AutofillProfiles) {
// Makes sure that the choice of which Autofill profile to use for each section
// is sticky.
TEST_F(AutofillDialogControllerTest, AutofillProfileDefaults) {
- AutofillProfile full_profile(test::GetFullProfile());
- full_profile.set_origin(kSettingsOrigin);
- controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- AutofillProfile full_profile2(test::GetFullProfile2());
- full_profile2.set_origin(kSettingsOrigin);
- controller()->GetTestingManager()->AddTestingProfile(&full_profile2);
+ AutofillProfile profile(test::GetVerifiedProfile());
+ AutofillProfile profile2(test::GetVerifiedProfile2());
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+ controller()->GetTestingManager()->AddTestingProfile(&profile2);
// Until a selection has been made, the default shipping suggestion is the
// first one (after "use billing").
- SuggestionsMenuModel* shipping_model = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_SHIPPING));
+ SuggestionsMenuModel* shipping_model =
+ GetMenuModelForSection(SECTION_SHIPPING);
EXPECT_EQ(1, shipping_model->checked_item());
for (int i = 2; i >= 0; --i) {
- shipping_model = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_SHIPPING));
+ shipping_model = GetMenuModelForSection(SECTION_SHIPPING);
shipping_model->ExecuteCommand(i, 0);
FillCreditCardInputs();
controller()->OnAccept();
Reset();
- controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- controller()->GetTestingManager()->AddTestingProfile(&full_profile2);
- shipping_model = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_SHIPPING));
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+ controller()->GetTestingManager()->AddTestingProfile(&profile2);
+ shipping_model = GetMenuModelForSection(SECTION_SHIPPING);
EXPECT_EQ(i, shipping_model->checked_item());
}
@@ -940,12 +965,54 @@ TEST_F(AutofillDialogControllerTest, AutofillProfileDefaults) {
FillCreditCardInputs();
controller()->OnAccept();
Reset();
- controller()->GetTestingManager()->AddTestingProfile(&full_profile);
- shipping_model = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_SHIPPING));
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+ shipping_model = GetMenuModelForSection(SECTION_SHIPPING);
EXPECT_EQ(1, shipping_model->checked_item());
}
+// Makes sure that a newly added Autofill profile becomes set as the default
+// choice for the next run.
+TEST_F(AutofillDialogControllerTest, NewAutofillProfileIsDefault) {
+ SwitchToAutofill();
+
+ AutofillProfile profile(test::GetVerifiedProfile());
+ CreditCard credit_card(test::GetVerifiedCreditCard());
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+ controller()->GetTestingManager()->AddTestingCreditCard(&credit_card);
+
+ // Until a selection has been made, the default suggestion is the first one.
+ // For the shipping section, this follows the "use billing" suggestion.
+ EXPECT_EQ(0, GetMenuModelForSection(SECTION_CC)->checked_item());
+ EXPECT_EQ(1, GetMenuModelForSection(SECTION_SHIPPING)->checked_item());
+
+ // Fill in the shipping and credit card sections with new data.
+ AutofillProfile new_profile(test::GetVerifiedProfile2());
+ CreditCard new_credit_card(test::GetVerifiedCreditCard2());
+ FillInputs(SECTION_SHIPPING, new_profile);
+ FillInputs(SECTION_CC, new_credit_card);
+ controller()->GetView()->CheckSaveDetailsLocallyCheckbox(true);
+ controller()->OnAccept();
+
+ // Update the |new_profile| and |new_credit_card|'s guids to the saved ones.
+ new_profile.set_guid(
+ controller()->GetTestingManager()->imported_profile().guid());
+ new_credit_card.set_guid(
+ controller()->GetTestingManager()->imported_credit_card().guid());
+
+ // Reload the dialog. The newly added address and credit card should now be
+ // set as the defaults.
+ Reset();
+ controller()->GetTestingManager()->AddTestingProfile(&profile);
+ controller()->GetTestingManager()->AddTestingProfile(&new_profile);
+ controller()->GetTestingManager()->AddTestingCreditCard(&credit_card);
+ controller()->GetTestingManager()->AddTestingCreditCard(&new_credit_card);
+
+ // Until a selection has been made, the default suggestion is the first one.
+ // For the shipping section, this follows the "use billing" suggestion.
+ EXPECT_EQ(1, GetMenuModelForSection(SECTION_CC)->checked_item());
+ EXPECT_EQ(2, GetMenuModelForSection(SECTION_SHIPPING)->checked_item());
+}
+
TEST_F(AutofillDialogControllerTest, AutofillProfileVariants) {
EXPECT_CALL(*controller()->GetView(), ModelChanged()).Times(1);
ui::MenuModel* shipping_model =
@@ -1425,8 +1492,7 @@ TEST_F(AutofillDialogControllerTest, ManageItem) {
controller()->GetTestingManager()->AddTestingProfile(&full_profile);
SwitchToAutofill();
- SuggestionsMenuModel* shipping = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_SHIPPING));
+ SuggestionsMenuModel* shipping = GetMenuModelForSection(SECTION_SHIPPING);
shipping->ExecuteCommand(shipping->GetItemCount() - 1, 0);
GURL autofill_manage_url = controller()->open_tab_url();
EXPECT_EQ("chrome", autofill_manage_url.scheme());
@@ -1440,8 +1506,7 @@ TEST_F(AutofillDialogControllerTest, ManageItem) {
GURL wallet_manage_addresses_url = controller()->open_tab_url();
EXPECT_EQ("https", wallet_manage_addresses_url.scheme());
- SuggestionsMenuModel* billing = static_cast<SuggestionsMenuModel*>(
- controller()->MenuModelForSection(SECTION_CC_BILLING));
+ SuggestionsMenuModel* billing = GetMenuModelForSection(SECTION_CC_BILLING);
controller()->SuggestionItemSelected(billing, billing->GetItemCount() - 1);
GURL wallet_manage_instruments_url = controller()->open_tab_url();
EXPECT_EQ("https", wallet_manage_instruments_url.scheme());
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | components/autofill/core/browser/autofill_common_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698