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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/guid.h" | 6 #include "base/guid.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
11 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "components/autofill/core/browser/autofill_common_test.h" | 13 #include "components/autofill/core/browser/autofill_common_test.h" |
14 #include "components/autofill/core/browser/autofill_profile.h" | 14 #include "components/autofill/core/browser/autofill_profile.h" |
| 15 #include "components/autofill/core/browser/autofill_type.h" |
15 #include "components/autofill/core/common/form_field_data.h" | 16 #include "components/autofill/core/common/form_field_data.h" |
16 #include "grit/component_strings.h" | 17 #include "grit/component_strings.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
18 | 19 |
19 namespace autofill { | 20 namespace autofill { |
20 | 21 |
21 namespace { | 22 namespace { |
22 | 23 |
23 bool UpdateProfileLabel(AutofillProfile *profile) { | 24 bool UpdateProfileLabel(AutofillProfile *profile) { |
24 std::vector<AutofillProfile*> profiles; | 25 std::vector<AutofillProfile*> profiles; |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); | 338 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); |
338 | 339 |
339 // Three fields at least - no filter. | 340 // Three fields at least - no filter. |
340 AutofillProfile::CreateInferredLabels(&profiles.get(), NULL, UNKNOWN_TYPE, 3, | 341 AutofillProfile::CreateInferredLabels(&profiles.get(), NULL, UNKNOWN_TYPE, 3, |
341 &labels); | 342 &labels); |
342 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"), | 343 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"), |
343 labels[0]); | 344 labels[0]); |
344 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"), | 345 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"), |
345 labels[1]); | 346 labels[1]); |
346 | 347 |
347 std::vector<AutofillFieldType> suggested_fields; | 348 std::vector<ServerFieldType> suggested_fields; |
348 suggested_fields.push_back(ADDRESS_HOME_CITY); | 349 suggested_fields.push_back(ADDRESS_HOME_CITY); |
349 suggested_fields.push_back(ADDRESS_HOME_STATE); | 350 suggested_fields.push_back(ADDRESS_HOME_STATE); |
350 suggested_fields.push_back(ADDRESS_HOME_ZIP); | 351 suggested_fields.push_back(ADDRESS_HOME_ZIP); |
351 | 352 |
352 // Two fields at least, from suggested fields - no filter. | 353 // Two fields at least, from suggested fields - no filter. |
353 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, | 354 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, |
354 UNKNOWN_TYPE, 2, &labels); | 355 UNKNOWN_TYPE, 2, &labels); |
355 EXPECT_EQ(ASCIIToUTF16("Elysium, CA"), labels[0]); | 356 EXPECT_EQ(ASCIIToUTF16("Elysium, CA"), labels[0]); |
356 EXPECT_EQ(ASCIIToUTF16("Dis, CA"), labels[1]); | 357 EXPECT_EQ(ASCIIToUTF16("Dis, CA"), labels[1]); |
357 | 358 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 "John", "", "Doe", "doe@example.com", "", | 416 "John", "", "Doe", "doe@example.com", "", |
416 "88 Nowhere Ave.", "", "", "", "", "", ""); | 417 "88 Nowhere Ave.", "", "", "", "", "", ""); |
417 profiles.push_back( | 418 profiles.push_back( |
418 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); | 419 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); |
419 test::SetProfileInfo(profiles[1], | 420 test::SetProfileInfo(profiles[1], |
420 "Johnny", "K", "Doe", "doe@example.com", "", | 421 "Johnny", "K", "Doe", "doe@example.com", "", |
421 "88 Nowhere Ave.", "", "", "", "", "", ""); | 422 "88 Nowhere Ave.", "", "", "", "", "", ""); |
422 | 423 |
423 // If the only name field in the suggested fields is the excluded field, we | 424 // If the only name field in the suggested fields is the excluded field, we |
424 // should not fall back to the full name as a distinguishing field. | 425 // should not fall back to the full name as a distinguishing field. |
425 std::vector<AutofillFieldType> suggested_fields; | 426 std::vector<ServerFieldType> suggested_fields; |
426 suggested_fields.push_back(NAME_LAST); | 427 suggested_fields.push_back(NAME_LAST); |
427 suggested_fields.push_back(ADDRESS_HOME_LINE1); | 428 suggested_fields.push_back(ADDRESS_HOME_LINE1); |
428 suggested_fields.push_back(EMAIL_ADDRESS); | 429 suggested_fields.push_back(EMAIL_ADDRESS); |
429 std::vector<base::string16> labels; | 430 std::vector<base::string16> labels; |
430 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, | 431 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, |
431 NAME_LAST, 1, &labels); | 432 NAME_LAST, 1, &labels); |
432 ASSERT_EQ(2U, labels.size()); | 433 ASSERT_EQ(2U, labels.size()); |
433 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[0]); | 434 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[0]); |
434 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[1]); | 435 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[1]); |
435 | 436 |
(...skipping 15 matching lines...) Expand all Loading... |
451 "John", "", "Doe", "doe@example.com", "", | 452 "John", "", "Doe", "doe@example.com", "", |
452 "88 Nowhere Ave.", "", "", "", "", "", ""); | 453 "88 Nowhere Ave.", "", "", "", "", "", ""); |
453 profiles.push_back( | 454 profiles.push_back( |
454 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); | 455 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); |
455 test::SetProfileInfo(profiles[1], | 456 test::SetProfileInfo(profiles[1], |
456 "John", "", "Doe", "dojo@example.com", "", | 457 "John", "", "Doe", "dojo@example.com", "", |
457 "88 Nowhere Ave.", "", "", "", "", "", ""); | 458 "88 Nowhere Ave.", "", "", "", "", "", ""); |
458 | 459 |
459 // If the only name field in the suggested fields is the excluded field, we | 460 // If the only name field in the suggested fields is the excluded field, we |
460 // should not fall back to the full name as a distinguishing field. | 461 // should not fall back to the full name as a distinguishing field. |
461 std::vector<AutofillFieldType> suggested_fields; | 462 std::vector<ServerFieldType> suggested_fields; |
462 suggested_fields.push_back(ADDRESS_HOME_LINE1); | 463 suggested_fields.push_back(ADDRESS_HOME_LINE1); |
463 suggested_fields.push_back(ADDRESS_BILLING_LINE1); | 464 suggested_fields.push_back(ADDRESS_BILLING_LINE1); |
464 suggested_fields.push_back(EMAIL_ADDRESS); | 465 suggested_fields.push_back(EMAIL_ADDRESS); |
465 std::vector<base::string16> labels; | 466 std::vector<base::string16> labels; |
466 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, | 467 AutofillProfile::CreateInferredLabels(&profiles.get(), &suggested_fields, |
467 UNKNOWN_TYPE, 2, &labels); | 468 UNKNOWN_TYPE, 2, &labels); |
468 ASSERT_EQ(2U, labels.size()); | 469 ASSERT_EQ(2U, labels.size()); |
469 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., doe@example.com"), labels[0]); | 470 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., doe@example.com"), labels[0]); |
470 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., dojo@example.com"), labels[1]); | 471 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., dojo@example.com"), labels[1]); |
471 } | 472 } |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 options[i] = ASCIIToUTF16(kCountries[i]); | 781 options[i] = ASCIIToUTF16(kCountries[i]); |
781 } | 782 } |
782 | 783 |
783 FormFieldData field; | 784 FormFieldData field; |
784 field.form_control_type = "select-one"; | 785 field.form_control_type = "select-one"; |
785 field.option_values = options; | 786 field.option_values = options; |
786 field.option_contents = options; | 787 field.option_contents = options; |
787 | 788 |
788 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 789 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
789 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); | 790 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); |
790 profile.FillSelectControl(ADDRESS_HOME_COUNTRY, "en-US", &field); | 791 profile.FillSelectControl( |
| 792 AutofillType(ADDRESS_HOME_COUNTRY), "en-US", &field); |
791 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); | 793 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); |
792 } | 794 } |
793 | 795 |
794 TEST(AutofillProfileTest, AddressCountryAbbrev) { | 796 TEST(AutofillProfileTest, AddressCountryAbbrev) { |
795 const char* const kCountries[] = { | 797 const char* const kCountries[] = { |
796 "AL", "CA" | 798 "AL", "CA" |
797 }; | 799 }; |
798 std::vector<base::string16> options(arraysize(kCountries)); | 800 std::vector<base::string16> options(arraysize(kCountries)); |
799 for (size_t i = 0; i < arraysize(kCountries); ++i) { | 801 for (size_t i = 0; i < arraysize(kCountries); ++i) { |
800 options[i] = ASCIIToUTF16(kCountries[i]); | 802 options[i] = ASCIIToUTF16(kCountries[i]); |
801 } | 803 } |
802 | 804 |
803 FormFieldData field; | 805 FormFieldData field; |
804 field.form_control_type = "select-one"; | 806 field.form_control_type = "select-one"; |
805 field.option_values = options; | 807 field.option_values = options; |
806 field.option_contents = options; | 808 field.option_contents = options; |
807 | 809 |
808 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 810 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
809 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); | 811 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); |
810 profile.FillSelectControl(ADDRESS_HOME_COUNTRY, "en-US", &field); | 812 profile.FillSelectControl( |
| 813 AutofillType(ADDRESS_HOME_COUNTRY), "en-US", &field); |
811 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); | 814 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
812 } | 815 } |
813 | 816 |
814 TEST(AutofillProfileTest, AddressStateFull) { | 817 TEST(AutofillProfileTest, AddressStateFull) { |
815 const char* const kStates[] = { | 818 const char* const kStates[] = { |
816 "Alabama", "California" | 819 "Alabama", "California" |
817 }; | 820 }; |
818 std::vector<base::string16> options(arraysize(kStates)); | 821 std::vector<base::string16> options(arraysize(kStates)); |
819 for (size_t i = 0; i < arraysize(kStates); ++i) { | 822 for (size_t i = 0; i < arraysize(kStates); ++i) { |
820 options[i] = ASCIIToUTF16(kStates[i]); | 823 options[i] = ASCIIToUTF16(kStates[i]); |
821 } | 824 } |
822 | 825 |
823 FormFieldData field; | 826 FormFieldData field; |
824 field.form_control_type = "select-one"; | 827 field.form_control_type = "select-one"; |
825 field.option_values = options; | 828 field.option_values = options; |
826 field.option_contents = options; | 829 field.option_contents = options; |
827 | 830 |
828 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 831 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
829 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); | 832 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); |
830 profile.FillSelectControl(ADDRESS_HOME_STATE, "en-US", &field); | 833 profile.FillSelectControl(AutofillType(ADDRESS_HOME_STATE), "en-US", &field); |
831 EXPECT_EQ(ASCIIToUTF16("California"), field.value); | 834 EXPECT_EQ(ASCIIToUTF16("California"), field.value); |
832 } | 835 } |
833 | 836 |
834 TEST(AutofillProfileTest, AddressStateAbbrev) { | 837 TEST(AutofillProfileTest, AddressStateAbbrev) { |
835 const char* const kStates[] = { | 838 const char* const kStates[] = { |
836 "AL", "CA" | 839 "AL", "CA" |
837 }; | 840 }; |
838 std::vector<base::string16> options(arraysize(kStates)); | 841 std::vector<base::string16> options(arraysize(kStates)); |
839 for (size_t i = 0; i < arraysize(kStates); ++i) { | 842 for (size_t i = 0; i < arraysize(kStates); ++i) { |
840 options[i] = ASCIIToUTF16(kStates[i]); | 843 options[i] = ASCIIToUTF16(kStates[i]); |
841 } | 844 } |
842 | 845 |
843 FormFieldData field; | 846 FormFieldData field; |
844 field.form_control_type = "select-one"; | 847 field.form_control_type = "select-one"; |
845 field.option_values = options; | 848 field.option_values = options; |
846 field.option_contents = options; | 849 field.option_contents = options; |
847 | 850 |
848 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 851 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
849 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); | 852 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); |
850 profile.FillSelectControl(ADDRESS_HOME_STATE, "en-US", &field); | 853 profile.FillSelectControl(AutofillType(ADDRESS_HOME_STATE), "en-US", &field); |
851 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); | 854 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
852 } | 855 } |
853 | 856 |
854 TEST(AutofillProfileTest, FillByValue) { | 857 TEST(AutofillProfileTest, FillByValue) { |
855 const char* const kStates[] = { | 858 const char* const kStates[] = { |
856 "Alabama", "California" | 859 "Alabama", "California" |
857 }; | 860 }; |
858 std::vector<base::string16> values(arraysize(kStates)); | 861 std::vector<base::string16> values(arraysize(kStates)); |
859 std::vector<base::string16> contents(arraysize(kStates)); | 862 std::vector<base::string16> contents(arraysize(kStates)); |
860 for (unsigned int i = 0; i < arraysize(kStates); ++i) { | 863 for (unsigned int i = 0; i < arraysize(kStates); ++i) { |
861 values[i] = ASCIIToUTF16(kStates[i]); | 864 values[i] = ASCIIToUTF16(kStates[i]); |
862 contents[i] = ASCIIToUTF16(base::StringPrintf("%u", i)); | 865 contents[i] = ASCIIToUTF16(base::StringPrintf("%u", i)); |
863 } | 866 } |
864 | 867 |
865 FormFieldData field; | 868 FormFieldData field; |
866 field.form_control_type = "select-one"; | 869 field.form_control_type = "select-one"; |
867 field.option_values = values; | 870 field.option_values = values; |
868 field.option_contents = contents; | 871 field.option_contents = contents; |
869 | 872 |
870 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 873 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
871 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); | 874 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); |
872 profile.FillSelectControl(ADDRESS_HOME_STATE, "en-US", &field); | 875 profile.FillSelectControl(AutofillType(ADDRESS_HOME_STATE), "en-US", &field); |
873 EXPECT_EQ(ASCIIToUTF16("California"), field.value); | 876 EXPECT_EQ(ASCIIToUTF16("California"), field.value); |
874 } | 877 } |
875 | 878 |
876 TEST(AutofillProfileTest, FillByContents) { | 879 TEST(AutofillProfileTest, FillByContents) { |
877 const char* const kStates[] = { | 880 const char* const kStates[] = { |
878 "Alabama", "California" | 881 "Alabama", "California" |
879 }; | 882 }; |
880 std::vector<base::string16> values(arraysize(kStates)); | 883 std::vector<base::string16> values(arraysize(kStates)); |
881 std::vector<base::string16> contents(arraysize(kStates)); | 884 std::vector<base::string16> contents(arraysize(kStates)); |
882 for (unsigned int i = 0; i < arraysize(kStates); ++i) { | 885 for (unsigned int i = 0; i < arraysize(kStates); ++i) { |
883 values[i] = ASCIIToUTF16(base::StringPrintf("%u", i + 1)); | 886 values[i] = ASCIIToUTF16(base::StringPrintf("%u", i + 1)); |
884 contents[i] = ASCIIToUTF16(kStates[i]); | 887 contents[i] = ASCIIToUTF16(kStates[i]); |
885 } | 888 } |
886 | 889 |
887 FormFieldData field; | 890 FormFieldData field; |
888 field.form_control_type = "select-one"; | 891 field.form_control_type = "select-one"; |
889 field.option_values = values; | 892 field.option_values = values; |
890 field.option_contents = contents; | 893 field.option_contents = contents; |
891 | 894 |
892 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 895 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
893 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); | 896 profile.SetRawInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); |
894 profile.FillSelectControl(ADDRESS_HOME_STATE, "en-US", &field); | 897 profile.FillSelectControl(AutofillType(ADDRESS_HOME_STATE), "en-US", &field); |
895 EXPECT_EQ(ASCIIToUTF16("2"), field.value); | 898 EXPECT_EQ(ASCIIToUTF16("2"), field.value); |
896 } | 899 } |
897 | 900 |
898 TEST(AutofillProfileTest, IsPresentButInvalid) { | 901 TEST(AutofillProfileTest, IsPresentButInvalid) { |
899 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 902 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
900 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); | 903 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); |
901 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); | 904 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); |
902 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); | 905 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); |
903 | 906 |
904 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); | 907 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); |
(...skipping 14 matching lines...) Expand all Loading... |
919 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); | 922 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); |
920 | 923 |
921 profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("310")); | 924 profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("310")); |
922 EXPECT_TRUE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); | 925 EXPECT_TRUE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); |
923 | 926 |
924 profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("(310) 310-6000")); | 927 profile.SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("(310) 310-6000")); |
925 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); | 928 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); |
926 } | 929 } |
927 | 930 |
928 } // namespace autofill | 931 } // namespace autofill |
OLD | NEW |