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/format_macros.h" | 6 #include "base/format_macros.h" |
7 #include "base/guid.h" | 7 #include "base/guid.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); | 824 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); |
825 test::SetProfileInfo(a.get(), "Thomas", NULL, "Jefferson", | 825 test::SetProfileInfo(a.get(), "Thomas", NULL, "Jefferson", |
826 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 826 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
827 NULL); | 827 NULL); |
828 test::SetProfileInfo(a.get(), "Thomas", NULL, "Adams", | 828 test::SetProfileInfo(a.get(), "Thomas", NULL, "Adams", |
829 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, | 829 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, |
830 NULL); | 830 NULL); |
831 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US")); | 831 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US")); |
832 } | 832 } |
833 | 833 |
834 TEST(AutofillProfileTest, OverwriteWithOrAddTo) { | 834 TEST(AutofillProfileTest, OverwriteWith) { |
835 AutofillProfile a(base::GenerateGUID(), "https://www.example.com"); | 835 AutofillProfile a(base::GenerateGUID(), "https://www.example.com"); |
836 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", | 836 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", |
837 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", | 837 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", |
838 "Hollywood", "CA", "91601", "US", | 838 "Hollywood", "CA", "91601", "US", |
839 "12345678910"); | 839 "12345678910"); |
840 std::vector<base::string16> first_names; | |
841 a.GetRawMultiInfo(NAME_FIRST, &first_names); | |
842 first_names.push_back(ASCIIToUTF16("Marion")); | |
843 a.SetRawMultiInfo(NAME_FIRST, first_names); | |
844 | |
845 std::vector<base::string16> last_names; | |
846 a.GetRawMultiInfo(NAME_LAST, &last_names); | |
847 last_names[last_names.size() - 1] = ASCIIToUTF16("Morrison"); | |
848 a.SetRawMultiInfo(NAME_LAST, last_names); | |
849 | 840 |
850 // Create an identical profile except that the new profile: | 841 // Create an identical profile except that the new profile: |
851 // (1) Has a different origin, | 842 // (1) Has a different origin, |
852 // (2) Has a different address line 2, | 843 // (2) Has a different address line 2, |
853 // (3) Lacks a company name, | 844 // (3) Lacks a company name, |
854 // (4) Has a different full name variant, and | 845 // (4) Has a different full name, and |
855 // (5) Has a language code. | 846 // (5) Has a language code. |
856 AutofillProfile b = a; | 847 AutofillProfile b = a; |
857 b.set_guid(base::GenerateGUID()); | 848 b.set_guid(base::GenerateGUID()); |
858 b.set_origin("Chrome settings"); | 849 b.set_origin("Chrome settings"); |
859 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51")); | 850 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51")); |
860 b.SetRawInfo(COMPANY_NAME, base::string16()); | 851 b.SetRawInfo(COMPANY_NAME, base::string16()); |
861 | 852 |
862 std::vector<base::string16> names; | 853 b.SetRawInfo(NAME_FULL, ASCIIToUTF16("Marion M. Morrison")); |
863 b.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names); | |
864 names.push_back(ASCIIToUTF16("Marion M. Morrison")); | |
865 b.SetRawMultiInfo(NAME_FULL, names); | |
866 b.set_language_code("en"); | 854 b.set_language_code("en"); |
867 | 855 |
868 a.OverwriteWithOrAddTo(b, "en-US"); | 856 a.OverwriteWith(b, "en-US"); |
869 EXPECT_EQ("Chrome settings", a.origin()); | 857 EXPECT_EQ("Chrome settings", a.origin()); |
870 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2)); | 858 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2)); |
871 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME)); | 859 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME)); |
872 a.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names); | 860 base::string16 name = a.GetInfo(AutofillType(NAME_FULL), "en-US"); |
873 ASSERT_EQ(3U, names.size()); | 861 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), name); |
874 EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison"), names[0]); | |
875 EXPECT_EQ(ASCIIToUTF16("Marion Morrison"), names[1]); | |
876 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), names[2]); | |
877 EXPECT_EQ("en", a.language_code()); | 862 EXPECT_EQ("en", a.language_code()); |
878 } | 863 } |
879 | 864 |
880 TEST(AutofillProfileTest, AssignmentOperator) { | 865 TEST(AutofillProfileTest, AssignmentOperator) { |
881 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); | 866 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); |
882 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", | 867 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", |
883 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", | 868 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", |
884 "Hollywood", "CA", "91601", "US", | 869 "Hollywood", "CA", "91601", "US", |
885 "12345678910"); | 870 "12345678910"); |
886 | 871 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, | 931 a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, |
947 ASCIIToUTF16("line one\nline two")); | 932 ASCIIToUTF16("line one\nline two")); |
948 test::SetProfileInfo(&b, "John", NULL, NULL, NULL, | 933 test::SetProfileInfo(&b, "John", NULL, NULL, NULL, |
949 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); | 934 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
950 b.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, | 935 b.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, |
951 ASCIIToUTF16("line one\nline two\nline three")); | 936 ASCIIToUTF16("line one\nline two\nline three")); |
952 EXPECT_GT(0, a.Compare(b)); | 937 EXPECT_GT(0, a.Compare(b)); |
953 EXPECT_LT(0, b.Compare(a)); | 938 EXPECT_LT(0, b.Compare(a)); |
954 } | 939 } |
955 | 940 |
956 TEST(AutofillProfileTest, MultiValueNames) { | |
957 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/"); | |
958 const base::string16 kJohnDoe(ASCIIToUTF16("John Doe")); | |
959 const base::string16 kJohnPDoe(ASCIIToUTF16("John P. Doe")); | |
960 std::vector<base::string16> set_values; | |
961 set_values.push_back(kJohnDoe); | |
962 set_values.push_back(kJohnPDoe); | |
963 p.SetRawMultiInfo(NAME_FULL, set_values); | |
964 | |
965 // Expect regular |GetInfo| returns the first element. | |
966 EXPECT_EQ(kJohnDoe, p.GetRawInfo(NAME_FULL)); | |
967 | |
968 // Ensure that we get out what we put in. | |
969 std::vector<base::string16> get_values; | |
970 p.GetRawMultiInfo(NAME_FULL, &get_values); | |
971 ASSERT_EQ(2UL, get_values.size()); | |
972 EXPECT_EQ(kJohnDoe, get_values[0]); | |
973 EXPECT_EQ(kJohnPDoe, get_values[1]); | |
974 | |
975 // Update the values. | |
976 AutofillProfile p2 = p; | |
977 EXPECT_EQ(0, p.Compare(p2)); | |
978 const base::string16 kNoOne(ASCIIToUTF16("No One")); | |
979 set_values[1] = kNoOne; | |
980 p.SetRawMultiInfo(NAME_FULL, set_values); | |
981 p.GetRawMultiInfo(NAME_FULL, &get_values); | |
982 ASSERT_EQ(2UL, get_values.size()); | |
983 EXPECT_EQ(kJohnDoe, get_values[0]); | |
984 EXPECT_EQ(kNoOne, get_values[1]); | |
985 EXPECT_NE(0, p.Compare(p2)); | |
986 | |
987 // Delete values. | |
988 set_values.clear(); | |
989 p.SetRawMultiInfo(NAME_FULL, set_values); | |
990 p.GetRawMultiInfo(NAME_FULL, &get_values); | |
991 ASSERT_EQ(1UL, get_values.size()); | |
992 EXPECT_EQ(base::string16(), get_values[0]); | |
993 | |
994 // Expect regular |GetInfo| returns empty value. | |
995 EXPECT_EQ(base::string16(), p.GetRawInfo(NAME_FULL)); | |
996 } | |
997 | |
998 TEST(AutofillProfileTest, MultiValueEmails) { | |
999 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/"); | |
1000 const base::string16 kJohnDoe(ASCIIToUTF16("john@doe.com")); | |
1001 const base::string16 kJohnPDoe(ASCIIToUTF16("john_p@doe.com")); | |
1002 std::vector<base::string16> set_values; | |
1003 set_values.push_back(kJohnDoe); | |
1004 set_values.push_back(kJohnPDoe); | |
1005 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values); | |
1006 | |
1007 // Expect regular |GetInfo| returns the first element. | |
1008 EXPECT_EQ(kJohnDoe, p.GetRawInfo(EMAIL_ADDRESS)); | |
1009 | |
1010 // Ensure that we get out what we put in. | |
1011 std::vector<base::string16> get_values; | |
1012 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values); | |
1013 ASSERT_EQ(2UL, get_values.size()); | |
1014 EXPECT_EQ(kJohnDoe, get_values[0]); | |
1015 EXPECT_EQ(kJohnPDoe, get_values[1]); | |
1016 | |
1017 // Update the values. | |
1018 AutofillProfile p2 = p; | |
1019 EXPECT_EQ(0, p.Compare(p2)); | |
1020 const base::string16 kNoOne(ASCIIToUTF16("no@one.com")); | |
1021 set_values[1] = kNoOne; | |
1022 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values); | |
1023 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values); | |
1024 ASSERT_EQ(2UL, get_values.size()); | |
1025 EXPECT_EQ(kJohnDoe, get_values[0]); | |
1026 EXPECT_EQ(kNoOne, get_values[1]); | |
1027 EXPECT_NE(0, p.Compare(p2)); | |
1028 | |
1029 // Delete values. | |
1030 set_values.clear(); | |
1031 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values); | |
1032 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values); | |
1033 ASSERT_EQ(1UL, get_values.size()); | |
1034 EXPECT_EQ(base::string16(), get_values[0]); | |
1035 | |
1036 // Expect regular |GetInfo| returns empty value. | |
1037 EXPECT_EQ(base::string16(), p.GetRawInfo(EMAIL_ADDRESS)); | |
1038 } | |
1039 | |
1040 TEST(AutofillProfileTest, MultiValuePhone) { | |
1041 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/"); | |
1042 const base::string16 kJohnDoe(ASCIIToUTF16("4151112222")); | |
1043 const base::string16 kJohnPDoe(ASCIIToUTF16("4151113333")); | |
1044 std::vector<base::string16> set_values; | |
1045 set_values.push_back(kJohnDoe); | |
1046 set_values.push_back(kJohnPDoe); | |
1047 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values); | |
1048 | |
1049 // Expect regular |GetInfo| returns the first element. | |
1050 EXPECT_EQ(kJohnDoe, p.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)); | |
1051 | |
1052 // Ensure that we get out what we put in. | |
1053 std::vector<base::string16> get_values; | |
1054 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values); | |
1055 ASSERT_EQ(2UL, get_values.size()); | |
1056 EXPECT_EQ(kJohnDoe, get_values[0]); | |
1057 EXPECT_EQ(kJohnPDoe, get_values[1]); | |
1058 | |
1059 // Update the values. | |
1060 AutofillProfile p2 = p; | |
1061 EXPECT_EQ(0, p.Compare(p2)); | |
1062 const base::string16 kNoOne(ASCIIToUTF16("4152110000")); | |
1063 set_values[1] = kNoOne; | |
1064 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values); | |
1065 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values); | |
1066 ASSERT_EQ(2UL, get_values.size()); | |
1067 EXPECT_EQ(kJohnDoe, get_values[0]); | |
1068 EXPECT_EQ(kNoOne, get_values[1]); | |
1069 EXPECT_NE(0, p.Compare(p2)); | |
1070 | |
1071 // Delete values. | |
1072 set_values.clear(); | |
1073 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values); | |
1074 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values); | |
1075 ASSERT_EQ(1UL, get_values.size()); | |
1076 EXPECT_EQ(base::string16(), get_values[0]); | |
1077 | |
1078 // Expect regular |GetInfo| returns empty value. | |
1079 EXPECT_EQ(base::string16(), p.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)); | |
1080 } | |
1081 | |
1082 TEST(AutofillProfileTest, IsPresentButInvalid) { | 941 TEST(AutofillProfileTest, IsPresentButInvalid) { |
1083 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); | 942 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); |
1084 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); | 943 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); |
1085 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); | 944 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); |
1086 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); | 945 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); |
1087 | 946 |
1088 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); | 947 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); |
1089 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); | 948 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); |
1090 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); | 949 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); |
1091 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); | 950 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 AutofillProfile::CanonicalizeProfileString(ASCIIToUTF16( | 1066 AutofillProfile::CanonicalizeProfileString(ASCIIToUTF16( |
1208 "1600 Amphitheatre, Pkwy."))); | 1067 "1600 Amphitheatre, Pkwy."))); |
1209 | 1068 |
1210 // Unicode punctuation (hyphen and space), multiple spaces collapsed. | 1069 // Unicode punctuation (hyphen and space), multiple spaces collapsed. |
1211 EXPECT_EQ(ASCIIToUTF16("mid island plaza"), | 1070 EXPECT_EQ(ASCIIToUTF16("mid island plaza"), |
1212 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16( | 1071 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16( |
1213 L"Mid\x2013Island\x2003 Plaza"))); | 1072 L"Mid\x2013Island\x2003 Plaza"))); |
1214 } | 1073 } |
1215 | 1074 |
1216 } // namespace autofill | 1075 } // namespace autofill |
OLD | NEW |