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

Side by Side Diff: components/autofill/core/browser/autofill_manager_unittest.cc

Issue 1137403002: Add upstream bits necessary for iOS card unmask prompt. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add clearActiveElement to autofill_controller.js Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 1495 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 FormFieldData* month_field = nullptr; 1506 FormFieldData* month_field = nullptr;
1507 for (size_t i = 0; i < form.fields.size(); ++i) { 1507 for (size_t i = 0; i < form.fields.size(); ++i) {
1508 if (form.fields[i].name == ASCIIToUTF16("cardnumber")) 1508 if (form.fields[i].name == ASCIIToUTF16("cardnumber"))
1509 number_field = &form.fields[i]; 1509 number_field = &form.fields[i];
1510 else if (form.fields[i].name == ASCIIToUTF16("nameoncard")) 1510 else if (form.fields[i].name == ASCIIToUTF16("nameoncard"))
1511 name_field = &form.fields[i]; 1511 name_field = &form.fields[i];
1512 else if (form.fields[i].name == ASCIIToUTF16("ccmonth")) 1512 else if (form.fields[i].name == ASCIIToUTF16("ccmonth"))
1513 month_field = &form.fields[i]; 1513 month_field = &form.fields[i];
1514 } 1514 }
1515 1515
1516 // Empty form - whole form is Autofilled. 1516 // Empty form - whole form is Autofilled (except on iOS).
1517 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field)); 1517 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field));
1518 #if defined(OS_IOS)
1519 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field));
1520 #else
1518 EXPECT_TRUE(WillFillCreditCardNumber(form, *name_field)); 1521 EXPECT_TRUE(WillFillCreditCardNumber(form, *name_field));
1522 #endif // defined(OS_IOS)
1523
1519 // If the user has entered a value, it won't be overridden. 1524 // If the user has entered a value, it won't be overridden.
1520 number_field->value = ASCIIToUTF16("gibberish"); 1525 number_field->value = ASCIIToUTF16("gibberish");
1521 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field)); 1526 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field));
1522 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field)); 1527 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field));
1528
1529 // But if that value is removed, it will be Autofilled (except on iOS).
1523 number_field->value.clear(); 1530 number_field->value.clear();
1531 #if defined(OS_IOS)
1532 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field));
1533 #else
1524 EXPECT_TRUE(WillFillCreditCardNumber(form, *name_field)); 1534 EXPECT_TRUE(WillFillCreditCardNumber(form, *name_field));
1535 #endif // defined(OS_IOS)
1525 1536
1526 // When part of the section is Autofilled, only fill the initiating field. 1537 // When part of the section is Autofilled, only fill the initiating field.
1527 month_field->is_autofilled = true; 1538 month_field->is_autofilled = true;
1528 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field)); 1539 EXPECT_FALSE(WillFillCreditCardNumber(form, *name_field));
1529 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field)); 1540 EXPECT_TRUE(WillFillCreditCardNumber(form, *number_field));
1530 } 1541 }
1531 1542
1532 // Test that we correctly fill an address form from an auxiliary profile. 1543 // Test that we correctly fill an address form from an auxiliary profile.
1533 TEST_F(AutofillManagerTest, FillAddressFormFromAuxiliaryProfile) { 1544 TEST_F(AutofillManagerTest, FillAddressFormFromAuxiliaryProfile) {
1534 personal_data_.ClearAutofillProfiles(); 1545 personal_data_.ClearAutofillProfiles();
(...skipping 1650 matching lines...) Expand 10 before | Expand all | Expand 10 after
3185 CreateTestCreditCardFormData(&form, true, false); 3196 CreateTestCreditCardFormData(&form, true, false);
3186 std::vector<FormData> forms(1, form); 3197 std::vector<FormData> forms(1, form);
3187 FormsSeen(forms); 3198 FormsSeen(forms);
3188 3199
3189 CreditCard card(CreditCard::MASKED_SERVER_CARD, "a123"); 3200 CreditCard card(CreditCard::MASKED_SERVER_CARD, "a123");
3190 test::SetCreditCardInfo(&card, "John Dillinger", "1881" /* Visa */, "01", 3201 test::SetCreditCardInfo(&card, "John Dillinger", "1881" /* Visa */, "01",
3191 "2017"); 3202 "2017");
3192 card.SetTypeForMaskedCard(kVisaCard); 3203 card.SetTypeForMaskedCard(kVisaCard);
3193 3204
3194 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCard(_)).Times(0); 3205 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCard(_)).Times(0);
3206 #if defined(OS_IOS)
3207 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _)).Times(4);
3208 #else
3195 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _)); 3209 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _));
3210 #endif // defined(OS_IOS)
3196 autofill_manager_->FillOrPreviewCreditCardForm( 3211 autofill_manager_->FillOrPreviewCreditCardForm(
3197 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form, 3212 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form,
3198 form.fields[0], card, 0); 3213 form.fields[0], card, 0);
3199 3214
3215 #if defined(OS_IOS)
3216 // Filling out the entire form on iOS requires requesting autofill on each of
3217 // the form fields.
3218 autofill_manager_->FillOrPreviewCreditCardForm(
3219 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form,
3220 form.fields[1], card, 0);
3221 autofill_manager_->FillOrPreviewCreditCardForm(
3222 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form,
3223 form.fields[2], card, 0);
3224 autofill_manager_->FillOrPreviewCreditCardForm(
3225 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form,
3226 form.fields[3], card, 0);
3227 #endif // defined(OS_IOS)
3228
3200 // Manually fill out |form| so we can use it in OnFormSubmitted. 3229 // Manually fill out |form| so we can use it in OnFormSubmitted.
3201 for (size_t i = 0; i < form.fields.size(); ++i) { 3230 for (size_t i = 0; i < form.fields.size(); ++i) {
3202 if (form.fields[i].name == ASCIIToUTF16("cardnumber")) 3231 if (form.fields[i].name == ASCIIToUTF16("cardnumber"))
3203 form.fields[i].value = ASCIIToUTF16("4012888888881881"); 3232 form.fields[i].value = ASCIIToUTF16("4012888888881881");
3204 else if (form.fields[i].name == ASCIIToUTF16("nameoncard")) 3233 else if (form.fields[i].name == ASCIIToUTF16("nameoncard"))
3205 form.fields[i].value = ASCIIToUTF16("John H Dillinger"); 3234 form.fields[i].value = ASCIIToUTF16("John H Dillinger");
3206 else if (form.fields[i].name == ASCIIToUTF16("ccmonth")) 3235 else if (form.fields[i].name == ASCIIToUTF16("ccmonth"))
3207 form.fields[i].value = ASCIIToUTF16("01"); 3236 form.fields[i].value = ASCIIToUTF16("01");
3208 else if (form.fields[i].name == ASCIIToUTF16("ccyear")) 3237 else if (form.fields[i].name == ASCIIToUTF16("ccyear"))
3209 form.fields[i].value = ASCIIToUTF16("2017"); 3238 form.fields[i].value = ASCIIToUTF16("2017");
3210 } 3239 }
3211 3240
3212 AutofillManager::UnmaskResponse response; 3241 AutofillManager::UnmaskResponse response;
3213 response.should_store_pan = false; 3242 response.should_store_pan = false;
3214 response.cvc = ASCIIToUTF16("123"); 3243 response.cvc = ASCIIToUTF16("123");
3215 autofill_manager_->OnUnmaskResponse(response); 3244 autofill_manager_->OnUnmaskResponse(response);
3216 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS, 3245 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS,
3217 "4012888888881881"); 3246 "4012888888881881");
3218 autofill_manager_->OnFormSubmitted(form); 3247 autofill_manager_->OnFormSubmitted(form);
3219 3248
3220 // The rest of this test is a regression test for http://crbug.com/483602. 3249 // The rest of this test is a regression test for http://crbug.com/483602.
3221 // The goal is not to crash. 3250 // The goal is not to crash.
3222 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _)); 3251 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _));
3223 for (size_t i = 0; i < form.fields.size(); ++i) { 3252 for (size_t i = 0; i < form.fields.size(); ++i) {
3224 form.fields[i].value.clear(); 3253 form.fields[i].value.clear();
3225 } 3254 }
3226 autofill_manager_->FillOrPreviewCreditCardForm( 3255 autofill_manager_->FillOrPreviewCreditCardForm(
3227 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form, 3256 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, form,
3228 form.fields[0], card, 0); 3257 form.fields[1], card, 0);
3229 autofill_manager_->OnUnmaskResponse(response); 3258 autofill_manager_->OnUnmaskResponse(response);
3230 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS, 3259 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS,
3231 "4012888888881881"); 3260 "4012888888881881");
3232 3261
3233 form = FormData(); 3262 form = FormData();
3234 test::CreateTestAddressFormData(&form); 3263 test::CreateTestAddressFormData(&form);
3235 forms[0] = form; 3264 forms[0] = form;
3236 FormsSeen(forms); 3265 FormsSeen(forms);
3237 for (size_t i = 0; i < form.fields.size(); ++i) { 3266 for (size_t i = 0; i < form.fields.size(); ++i) {
3238 if (form.fields[i].name == ASCIIToUTF16("firstname")) 3267 if (form.fields[i].name == ASCIIToUTF16("firstname"))
3239 form.fields[i].value = ASCIIToUTF16("Flo"); 3268 form.fields[i].value = ASCIIToUTF16("Flo");
3240 else if (form.fields[i].name == ASCIIToUTF16("lastname")) 3269 else if (form.fields[i].name == ASCIIToUTF16("lastname"))
3241 form.fields[i].value = ASCIIToUTF16("Master"); 3270 form.fields[i].value = ASCIIToUTF16("Master");
3242 else if (form.fields[i].name == ASCIIToUTF16("addr1")) 3271 else if (form.fields[i].name == ASCIIToUTF16("addr1"))
3243 form.fields[i].value = ASCIIToUTF16("123 Maple"); 3272 form.fields[i].value = ASCIIToUTF16("123 Maple");
3244 else if (form.fields[i].name == ASCIIToUTF16("city")) 3273 else if (form.fields[i].name == ASCIIToUTF16("city"))
3245 form.fields[i].value = ASCIIToUTF16("Dallas"); 3274 form.fields[i].value = ASCIIToUTF16("Dallas");
3246 else if (form.fields[i].name == ASCIIToUTF16("state")) 3275 else if (form.fields[i].name == ASCIIToUTF16("state"))
3247 form.fields[i].value = ASCIIToUTF16("Texas"); 3276 form.fields[i].value = ASCIIToUTF16("Texas");
3248 else if (form.fields[i].name == ASCIIToUTF16("zipcode")) 3277 else if (form.fields[i].name == ASCIIToUTF16("zipcode"))
3249 form.fields[i].value = ASCIIToUTF16("77401"); 3278 form.fields[i].value = ASCIIToUTF16("77401");
3250 else if (form.fields[i].name == ASCIIToUTF16("country")) 3279 else if (form.fields[i].name == ASCIIToUTF16("country"))
3251 form.fields[i].value = ASCIIToUTF16("US"); 3280 form.fields[i].value = ASCIIToUTF16("US");
3252 } 3281 }
3253 autofill_manager_->OnFormSubmitted(form); 3282 autofill_manager_->OnFormSubmitted(form);
3254 } 3283 }
3255 3284
3256 } // namespace autofill 3285 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698