| 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 "components/autofill/core/browser/autofill_profile.h" | 5 #include "components/autofill/core/browser/autofill_profile.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 AutofillProfile a; | 895 AutofillProfile a; |
| 896 SetupTestProfile(a); | 896 SetupTestProfile(a); |
| 897 | 897 |
| 898 AutofillProfile b = a; | 898 AutofillProfile b = a; |
| 899 b.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Aquarium St.")); | 899 b.SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("123 Aquarium St.")); |
| 900 EXPECT_TRUE(a.OverwriteWith(b, "en-US")); | 900 EXPECT_TRUE(a.OverwriteWith(b, "en-US")); |
| 901 base::string16 address = a.GetRawInfo(ADDRESS_HOME_LINE1); | 901 base::string16 address = a.GetRawInfo(ADDRESS_HOME_LINE1); |
| 902 EXPECT_EQ(ASCIIToUTF16("123 Aquarium St."), address); | 902 EXPECT_EQ(ASCIIToUTF16("123 Aquarium St."), address); |
| 903 } | 903 } |
| 904 | 904 |
| 905 TEST(AutofillProfileTest, OverwriteName_AddNameFull) { |
| 906 AutofillProfile a; |
| 907 |
| 908 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 909 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 910 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 911 |
| 912 AutofillProfile b = a; |
| 913 b.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("Marion Mitchell Morrison")); |
| 914 |
| 915 EXPECT_TRUE(a.OverwriteWith(b, "en-US")); |
| 916 EXPECT_EQ(base::ASCIIToUTF16("Marion"), a.GetRawInfo(NAME_FIRST)); |
| 917 EXPECT_EQ(base::ASCIIToUTF16("Mitchell"), a.GetRawInfo(NAME_MIDDLE)); |
| 918 EXPECT_EQ(base::ASCIIToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); |
| 919 EXPECT_EQ(base::ASCIIToUTF16("Marion Mitchell Morrison"), |
| 920 a.GetRawInfo(NAME_FULL)); |
| 921 } |
| 922 |
| 923 // Tests that OverwriteName overwrites the name parts if they have different |
| 924 // case. |
| 925 TEST(AutofillProfileTest, OverwriteName_DifferentCase) { |
| 926 AutofillProfile a; |
| 927 |
| 928 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("marion")); |
| 929 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("mitchell")); |
| 930 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("morrison")); |
| 931 |
| 932 AutofillProfile b = a; |
| 933 b.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 934 b.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 935 b.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 936 |
| 937 EXPECT_TRUE(a.OverwriteWith(b, "en-US")); |
| 938 EXPECT_EQ(base::ASCIIToUTF16("Marion"), a.GetRawInfo(NAME_FIRST)); |
| 939 EXPECT_EQ(base::ASCIIToUTF16("Mitchell"), a.GetRawInfo(NAME_MIDDLE)); |
| 940 EXPECT_EQ(base::ASCIIToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); |
| 941 } |
| 942 |
| 905 TEST(AutofillProfileTest, AssignmentOperator) { | 943 TEST(AutofillProfileTest, AssignmentOperator) { |
| 906 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); | 944 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); |
| 907 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", | 945 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", |
| 908 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", | 946 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", |
| 909 "Hollywood", "CA", "91601", "US", | 947 "Hollywood", "CA", "91601", "US", |
| 910 "12345678910"); | 948 "12345678910"); |
| 911 | 949 |
| 912 // Result of assignment should be logically equal to the original profile. | 950 // Result of assignment should be logically equal to the original profile. |
| 913 AutofillProfile b(base::GenerateGUID(), "http://www.example.com/"); | 951 AutofillProfile b(base::GenerateGUID(), "http://www.example.com/"); |
| 914 b = a; | 952 b = a; |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 EXPECT_EQ(ASCIIToUTF16("mid island plaza"), | 1148 EXPECT_EQ(ASCIIToUTF16("mid island plaza"), |
| 1111 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16( | 1149 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16( |
| 1112 L"Mid\x2013Island\x2003 Plaza"))); | 1150 L"Mid\x2013Island\x2003 Plaza"))); |
| 1113 | 1151 |
| 1114 // Newline character removed. | 1152 // Newline character removed. |
| 1115 EXPECT_EQ(ASCIIToUTF16("1600 amphitheatre pkwy app 2"), | 1153 EXPECT_EQ(ASCIIToUTF16("1600 amphitheatre pkwy app 2"), |
| 1116 AutofillProfile::CanonicalizeProfileString( | 1154 AutofillProfile::CanonicalizeProfileString( |
| 1117 ASCIIToUTF16("1600 amphitheatre pkwy \n App. 2"))); | 1155 ASCIIToUTF16("1600 amphitheatre pkwy \n App. 2"))); |
| 1118 } | 1156 } |
| 1119 | 1157 |
| 1158 TEST(AutofillProfileTest, SaveAdditionalInfo_Name_AddingNameFull) { |
| 1159 AutofillProfile a; |
| 1160 |
| 1161 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 1162 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 1163 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 1164 |
| 1165 AutofillProfile b = a; |
| 1166 b.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("Marion Mitchell Morrison")); |
| 1167 |
| 1168 EXPECT_TRUE(a.SaveAdditionalInfo(b, "en-US")); |
| 1169 |
| 1170 EXPECT_EQ(base::ASCIIToUTF16("Marion"), a.GetRawInfo(NAME_FIRST)); |
| 1171 EXPECT_EQ(base::ASCIIToUTF16("Mitchell"), a.GetRawInfo(NAME_MIDDLE)); |
| 1172 EXPECT_EQ(base::ASCIIToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); |
| 1173 EXPECT_EQ(base::ASCIIToUTF16("Marion Mitchell Morrison"), |
| 1174 a.GetRawInfo(NAME_FULL)); |
| 1175 } |
| 1176 |
| 1177 TEST(AutofillProfileTest, SaveAdditionalInfo_Name_KeepNameFull) { |
| 1178 AutofillProfile a; |
| 1179 |
| 1180 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 1181 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 1182 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 1183 a.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("Marion Mitchell Morrison")); |
| 1184 |
| 1185 AutofillProfile b = a; |
| 1186 b.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("")); |
| 1187 |
| 1188 EXPECT_TRUE(a.SaveAdditionalInfo(b, "en-US")); |
| 1189 |
| 1190 EXPECT_EQ(base::ASCIIToUTF16("Marion"), a.GetRawInfo(NAME_FIRST)); |
| 1191 EXPECT_EQ(base::ASCIIToUTF16("Mitchell"), a.GetRawInfo(NAME_MIDDLE)); |
| 1192 EXPECT_EQ(base::ASCIIToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); |
| 1193 EXPECT_EQ(base::ASCIIToUTF16("Marion Mitchell Morrison"), |
| 1194 a.GetRawInfo(NAME_FULL)); |
| 1195 } |
| 1196 |
| 1197 // TODO(crbug.com/608074): No loss of information for names should happen when |
| 1198 // using SaveAddtitionalInfo. |
| 1199 // Tests the merging of two similar profiles results the second profile's non- |
| 1200 // empty fields overwriting the initial profiles values. |
| 1201 TEST(AutofillProfileTest, SaveAdditionalInfo_Name_DifferentCaseNoNameFull) { |
| 1202 AutofillProfile a; |
| 1203 |
| 1204 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("marion")); |
| 1205 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("mitchell")); |
| 1206 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("morrison")); |
| 1207 a.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("Marion Mitchell Morrison")); |
| 1208 |
| 1209 AutofillProfile b = a; |
| 1210 b.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 1211 b.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 1212 b.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 1213 b.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("")); |
| 1214 |
| 1215 EXPECT_TRUE(a.SaveAdditionalInfo(b, "en-US")); |
| 1216 |
| 1217 // The first, middle and last names should have their first letter in |
| 1218 // uppercase. |
| 1219 EXPECT_EQ(base::ASCIIToUTF16("marion"), a.GetRawInfo(NAME_FIRST)); |
| 1220 EXPECT_EQ(base::ASCIIToUTF16("mitchell"), a.GetRawInfo(NAME_MIDDLE)); |
| 1221 EXPECT_EQ(base::ASCIIToUTF16("morrison"), a.GetRawInfo(NAME_LAST)); |
| 1222 EXPECT_EQ(base::ASCIIToUTF16("Marion Mitchell Morrison"), |
| 1223 a.GetRawInfo(NAME_FULL)); |
| 1224 } |
| 1225 |
| 1226 // TODO(crbug.com/608074): No loss of information for names should happen when |
| 1227 // using SaveAddtitionalInfo. |
| 1228 // Tests that no loss of information happens when SavingAdditionalInfo with a |
| 1229 // profile with an empty name part. |
| 1230 TEST(AutofillProfileTest, SaveAdditionalInfo_Name_LossOfInformation) { |
| 1231 AutofillProfile a; |
| 1232 |
| 1233 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 1234 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 1235 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 1236 |
| 1237 AutofillProfile b = a; |
| 1238 b.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("")); |
| 1239 |
| 1240 EXPECT_TRUE(a.SaveAdditionalInfo(b, "en-US")); |
| 1241 |
| 1242 EXPECT_EQ(base::ASCIIToUTF16("Marion"), a.GetRawInfo(NAME_FIRST)); |
| 1243 // This should not be empty. |
| 1244 EXPECT_EQ(base::ASCIIToUTF16(""), a.GetRawInfo(NAME_MIDDLE)); |
| 1245 EXPECT_EQ(base::ASCIIToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); |
| 1246 EXPECT_EQ(base::ASCIIToUTF16(""), a.GetRawInfo(NAME_FULL)); |
| 1247 } |
| 1248 |
| 1249 // TODO(crbug.com/608074): No loss of information for names should happen when |
| 1250 // using SaveAddtitionalInfo. |
| 1251 // Tests that merging two complementary profiles for names results in a profile |
| 1252 // with a complete name. |
| 1253 TEST(AutofillProfileTest, SaveAdditionalInfo_Name_ComplementaryInformation) { |
| 1254 AutofillProfile a; |
| 1255 |
| 1256 a.SetRawInfo(NAME_FIRST, base::ASCIIToUTF16("Marion")); |
| 1257 a.SetRawInfo(NAME_MIDDLE, base::ASCIIToUTF16("Mitchell")); |
| 1258 a.SetRawInfo(NAME_LAST, base::ASCIIToUTF16("Morrison")); |
| 1259 |
| 1260 AutofillProfile b; |
| 1261 b.SetRawInfo(NAME_FULL, base::ASCIIToUTF16("Marion Mitchell Morrison")); |
| 1262 |
| 1263 EXPECT_TRUE(a.SaveAdditionalInfo(b, "en-US")); |
| 1264 |
| 1265 // The first, middle and last names should be kept. |
| 1266 EXPECT_EQ(base::ASCIIToUTF16(""), a.GetRawInfo(NAME_FIRST)); |
| 1267 EXPECT_EQ(base::ASCIIToUTF16(""), a.GetRawInfo(NAME_MIDDLE)); |
| 1268 EXPECT_EQ(base::ASCIIToUTF16(""), a.GetRawInfo(NAME_LAST)); |
| 1269 EXPECT_EQ(base::ASCIIToUTF16("Marion Mitchell Morrison"), |
| 1270 a.GetRawInfo(NAME_FULL)); |
| 1271 } |
| 1272 |
| 1120 } // namespace autofill | 1273 } // namespace autofill |
| OLD | NEW |