| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 2535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2546 { | 2546 { |
| 2547 SCOPED_TRACE("Credit card 2"); | 2547 SCOPED_TRACE("Credit card 2"); |
| 2548 ExpectFilledForm(response_page_id, response_data, kPageID3, "", "", "", "", | 2548 ExpectFilledForm(response_page_id, response_data, kPageID3, "", "", "", "", |
| 2549 "", "", "", "", "", "", "", "", "", "", "2012", true, true, | 2549 "", "", "", "", "", "", "", "", "", "", "2012", true, true, |
| 2550 false); | 2550 false); |
| 2551 } | 2551 } |
| 2552 } | 2552 } |
| 2553 | 2553 |
| 2554 // Test that we correctly fill a phone number split across multiple fields. | 2554 // Test that we correctly fill a phone number split across multiple fields. |
| 2555 TEST_F(AutofillManagerTest, FillPhoneNumber) { | 2555 TEST_F(AutofillManagerTest, FillPhoneNumber) { |
| 2556 // In one form, rely on the maxlength attribute to imply phone number parts. | 2556 // In one form, rely on the maxlength attribute to imply US phone number |
| 2557 // In the other form, rely on the autocompletetype attribute. | 2557 // parts. In the other form, rely on the autocompletetype attribute. |
| 2558 FormData form_with_maxlength; | 2558 FormData form_with_us_number_max_length; |
| 2559 form_with_maxlength.name = ASCIIToUTF16("MyMaxlengthPhoneForm"); | 2559 form_with_us_number_max_length.name = ASCIIToUTF16("MyMaxlengthPhoneForm"); |
| 2560 form_with_maxlength.origin = GURL("http://myform.com/phone_form.html"); | 2560 form_with_us_number_max_length.origin = |
| 2561 form_with_maxlength.action = GURL("http://myform.com/phone_submit.html"); | 2561 GURL("http://myform.com/phone_form.html"); |
| 2562 FormData form_with_autocompletetype = form_with_maxlength; | 2562 form_with_us_number_max_length.action = |
| 2563 GURL("http://myform.com/phone_submit.html"); |
| 2564 FormData form_with_autocompletetype = form_with_us_number_max_length; |
| 2563 form_with_autocompletetype.name = ASCIIToUTF16("MyAutocompletetypePhoneForm"); | 2565 form_with_autocompletetype.name = ASCIIToUTF16("MyAutocompletetypePhoneForm"); |
| 2564 | 2566 |
| 2565 struct { | 2567 struct { |
| 2566 const char* label; | 2568 const char* label; |
| 2567 const char* name; | 2569 const char* name; |
| 2568 size_t max_length; | 2570 size_t max_length; |
| 2569 const char* autocomplete_attribute; | 2571 const char* autocomplete_attribute; |
| 2570 } test_fields[] = { | 2572 } test_fields[] = { |
| 2571 { "country code", "country_code", 1, "tel-country-code" }, | 2573 { "country code", "country_code", 1, "tel-country-code" }, |
| 2572 { "area code", "area_code", 3, "tel-area-code" }, | 2574 { "area code", "area_code", 3, "tel-area-code" }, |
| 2573 { "phone", "phone_prefix", 3, "tel-local-prefix" }, | 2575 { "phone", "phone_prefix", 3, "tel-local-prefix" }, |
| 2574 { "-", "phone_suffix", 4, "tel-local-suffix" }, | 2576 { "-", "phone_suffix", 4, "tel-local-suffix" }, |
| 2575 { "Phone Extension", "ext", 3, "tel-extension" } | 2577 { "Phone Extension", "ext", 3, "tel-extension" } |
| 2576 }; | 2578 }; |
| 2577 | 2579 |
| 2578 FormFieldData field; | 2580 FormFieldData field; |
| 2579 const size_t default_max_length = field.max_length; | 2581 const size_t default_max_length = field.max_length; |
| 2580 for (size_t i = 0; i < arraysize(test_fields); ++i) { | 2582 for (size_t i = 0; i < arraysize(test_fields); ++i) { |
| 2581 test::CreateTestFormField( | 2583 test::CreateTestFormField( |
| 2582 test_fields[i].label, test_fields[i].name, "", "text", &field); | 2584 test_fields[i].label, test_fields[i].name, "", "text", &field); |
| 2583 field.max_length = test_fields[i].max_length; | 2585 field.max_length = test_fields[i].max_length; |
| 2584 field.autocomplete_attribute = std::string(); | 2586 field.autocomplete_attribute = std::string(); |
| 2585 form_with_maxlength.fields.push_back(field); | 2587 form_with_us_number_max_length.fields.push_back(field); |
| 2586 | 2588 |
| 2587 field.max_length = default_max_length; | 2589 field.max_length = default_max_length; |
| 2588 field.autocomplete_attribute = test_fields[i].autocomplete_attribute; | 2590 field.autocomplete_attribute = test_fields[i].autocomplete_attribute; |
| 2589 form_with_autocompletetype.fields.push_back(field); | 2591 form_with_autocompletetype.fields.push_back(field); |
| 2590 } | 2592 } |
| 2591 | 2593 |
| 2592 std::vector<FormData> forms; | 2594 std::vector<FormData> forms; |
| 2593 forms.push_back(form_with_maxlength); | 2595 forms.push_back(form_with_us_number_max_length); |
| 2594 forms.push_back(form_with_autocompletetype); | 2596 forms.push_back(form_with_autocompletetype); |
| 2595 FormsSeen(forms); | 2597 FormsSeen(forms); |
| 2596 | 2598 |
| 2597 // We should be able to fill prefix and suffix fields for US numbers. | 2599 // We should be able to fill prefix and suffix fields for US numbers. |
| 2598 AutofillProfile* work_profile = autofill_manager_->GetProfileWithGUID( | 2600 AutofillProfile* work_profile = autofill_manager_->GetProfileWithGUID( |
| 2599 "00000000-0000-0000-0000-000000000002"); | 2601 "00000000-0000-0000-0000-000000000002"); |
| 2600 ASSERT_TRUE(work_profile != NULL); | 2602 ASSERT_TRUE(work_profile != NULL); |
| 2601 work_profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, | 2603 work_profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, |
| 2602 ASCIIToUTF16("16505554567")); | 2604 ASCIIToUTF16("16505554567")); |
| 2603 | 2605 |
| 2604 std::string guid(work_profile->guid()); | 2606 std::string guid(work_profile->guid()); |
| 2605 int page_id = 1; | 2607 int page_id = 1; |
| 2606 int response_page_id = 0; | 2608 int response_page_id = 0; |
| 2607 FormData response_data1; | 2609 FormData response_data1; |
| 2608 FillAutofillFormDataAndSaveResults( | 2610 FillAutofillFormDataAndSaveResults( |
| 2609 page_id, form_with_maxlength, *form_with_maxlength.fields.begin(), | 2611 page_id, form_with_us_number_max_length, |
| 2612 *form_with_us_number_max_length.fields.begin(), |
| 2610 MakeFrontendID(std::string(), guid), &response_page_id, &response_data1); | 2613 MakeFrontendID(std::string(), guid), &response_page_id, &response_data1); |
| 2611 EXPECT_EQ(1, response_page_id); | 2614 EXPECT_EQ(1, response_page_id); |
| 2612 | 2615 |
| 2613 ASSERT_EQ(5U, response_data1.fields.size()); | 2616 ASSERT_EQ(5U, response_data1.fields.size()); |
| 2614 EXPECT_EQ(ASCIIToUTF16("1"), response_data1.fields[0].value); | 2617 EXPECT_EQ(ASCIIToUTF16("1"), response_data1.fields[0].value); |
| 2615 EXPECT_EQ(ASCIIToUTF16("650"), response_data1.fields[1].value); | 2618 EXPECT_EQ(ASCIIToUTF16("650"), response_data1.fields[1].value); |
| 2616 EXPECT_EQ(ASCIIToUTF16("555"), response_data1.fields[2].value); | 2619 EXPECT_EQ(ASCIIToUTF16("555"), response_data1.fields[2].value); |
| 2617 EXPECT_EQ(ASCIIToUTF16("4567"), response_data1.fields[3].value); | 2620 EXPECT_EQ(ASCIIToUTF16("4567"), response_data1.fields[3].value); |
| 2618 EXPECT_EQ(base::string16(), response_data1.fields[4].value); | 2621 EXPECT_EQ(base::string16(), response_data1.fields[4].value); |
| 2619 | 2622 |
| 2620 page_id = 2; | 2623 page_id = 2; |
| 2621 response_page_id = 0; | 2624 response_page_id = 0; |
| 2622 FormData response_data2; | 2625 FormData response_data2; |
| 2623 FillAutofillFormDataAndSaveResults(page_id, form_with_autocompletetype, | 2626 FillAutofillFormDataAndSaveResults(page_id, form_with_autocompletetype, |
| 2624 *form_with_autocompletetype.fields.begin(), | 2627 *form_with_autocompletetype.fields.begin(), |
| 2625 MakeFrontendID(std::string(), guid), | 2628 MakeFrontendID(std::string(), guid), |
| 2626 &response_page_id, &response_data2); | 2629 &response_page_id, &response_data2); |
| 2627 EXPECT_EQ(2, response_page_id); | 2630 EXPECT_EQ(2, response_page_id); |
| 2628 | 2631 |
| 2629 ASSERT_EQ(5U, response_data2.fields.size()); | 2632 ASSERT_EQ(5U, response_data2.fields.size()); |
| 2630 EXPECT_EQ(ASCIIToUTF16("1"), response_data2.fields[0].value); | 2633 EXPECT_EQ(ASCIIToUTF16("1"), response_data2.fields[0].value); |
| 2631 EXPECT_EQ(ASCIIToUTF16("650"), response_data2.fields[1].value); | 2634 EXPECT_EQ(ASCIIToUTF16("650"), response_data2.fields[1].value); |
| 2632 EXPECT_EQ(ASCIIToUTF16("555"), response_data2.fields[2].value); | 2635 EXPECT_EQ(ASCIIToUTF16("555"), response_data2.fields[2].value); |
| 2633 EXPECT_EQ(ASCIIToUTF16("4567"), response_data2.fields[3].value); | 2636 EXPECT_EQ(ASCIIToUTF16("4567"), response_data2.fields[3].value); |
| 2634 EXPECT_EQ(base::string16(), response_data2.fields[4].value); | 2637 EXPECT_EQ(base::string16(), response_data2.fields[4].value); |
| 2635 | 2638 |
| 2636 // We should not be able to fill prefix and suffix fields for international | 2639 // We should not be able to fill international numbers correctly in a form |
| 2637 // numbers. | 2640 // containing fields with US max_length. However, the field should fill with |
| 2641 // the number of digits equal to the max length specified, starting from the |
| 2642 // right. |
| 2638 work_profile->SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("GB")); | 2643 work_profile->SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("GB")); |
| 2639 work_profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, | 2644 work_profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, |
| 2640 ASCIIToUTF16("447700954321")); | 2645 ASCIIToUTF16("447700954321")); |
| 2641 page_id = 3; | 2646 page_id = 3; |
| 2642 response_page_id = 0; | 2647 response_page_id = 0; |
| 2643 FormData response_data3; | 2648 FormData response_data3; |
| 2644 FillAutofillFormDataAndSaveResults( | 2649 FillAutofillFormDataAndSaveResults( |
| 2645 page_id, form_with_maxlength, *form_with_maxlength.fields.begin(), | 2650 page_id, form_with_us_number_max_length, |
| 2651 *form_with_us_number_max_length.fields.begin(), |
| 2646 MakeFrontendID(std::string(), guid), &response_page_id, &response_data3); | 2652 MakeFrontendID(std::string(), guid), &response_page_id, &response_data3); |
| 2647 EXPECT_EQ(3, response_page_id); | 2653 EXPECT_EQ(3, response_page_id); |
| 2648 | 2654 |
| 2649 ASSERT_EQ(5U, response_data3.fields.size()); | 2655 ASSERT_EQ(5U, response_data3.fields.size()); |
| 2650 EXPECT_EQ(ASCIIToUTF16("44"), response_data3.fields[0].value); | 2656 EXPECT_EQ(ASCIIToUTF16("4"), response_data3.fields[0].value); |
| 2651 EXPECT_EQ(ASCIIToUTF16("7700"), response_data3.fields[1].value); | 2657 EXPECT_EQ(ASCIIToUTF16("700"), response_data3.fields[1].value); |
| 2652 EXPECT_EQ(ASCIIToUTF16("954321"), response_data3.fields[2].value); | 2658 EXPECT_EQ(ASCIIToUTF16("321"), response_data3.fields[2].value); |
| 2653 EXPECT_EQ(ASCIIToUTF16("954321"), response_data3.fields[3].value); | 2659 EXPECT_EQ(ASCIIToUTF16("4321"), response_data3.fields[3].value); |
| 2654 EXPECT_EQ(base::string16(), response_data3.fields[4].value); | 2660 EXPECT_EQ(base::string16(), response_data3.fields[4].value); |
| 2655 | 2661 |
| 2656 page_id = 4; | 2662 page_id = 4; |
| 2657 response_page_id = 0; | 2663 response_page_id = 0; |
| 2658 FormData response_data4; | 2664 FormData response_data4; |
| 2659 FillAutofillFormDataAndSaveResults(page_id, form_with_autocompletetype, | 2665 FillAutofillFormDataAndSaveResults(page_id, form_with_autocompletetype, |
| 2660 *form_with_autocompletetype.fields.begin(), | 2666 *form_with_autocompletetype.fields.begin(), |
| 2661 MakeFrontendID(std::string(), guid), | 2667 MakeFrontendID(std::string(), guid), |
| 2662 &response_page_id, &response_data4); | 2668 &response_page_id, &response_data4); |
| 2663 EXPECT_EQ(4, response_page_id); | 2669 EXPECT_EQ(4, response_page_id); |
| (...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4291 FormsSeen(mixed_forms); | 4297 FormsSeen(mixed_forms); |
| 4292 | 4298 |
| 4293 // Suggestions should always be displayed. | 4299 // Suggestions should always be displayed. |
| 4294 for (const FormFieldData& field : mixed_form.fields) { | 4300 for (const FormFieldData& field : mixed_form.fields) { |
| 4295 GetAutofillSuggestions(mixed_form, field); | 4301 GetAutofillSuggestions(mixed_form, field); |
| 4296 EXPECT_TRUE(external_delegate_->on_suggestions_returned_seen()); | 4302 EXPECT_TRUE(external_delegate_->on_suggestions_returned_seen()); |
| 4297 } | 4303 } |
| 4298 } | 4304 } |
| 4299 | 4305 |
| 4300 } // namespace autofill | 4306 } // namespace autofill |
| OLD | NEW |