OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |