Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: components/autofill/core/browser/autofill_profile_unittest.cc

Issue 347183005: autofill names - dont parse when calling SetRawInfo(FULL_NAME) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android test expectation Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 11 matching lines...) Expand all
22 using base::ASCIIToUTF16; 22 using base::ASCIIToUTF16;
23 23
24 namespace autofill { 24 namespace autofill {
25 25
26 namespace { 26 namespace {
27 27
28 base::string16 GetLabel(AutofillProfile* profile) { 28 base::string16 GetLabel(AutofillProfile* profile) {
29 std::vector<AutofillProfile*> profiles; 29 std::vector<AutofillProfile*> profiles;
30 profiles.push_back(profile); 30 profiles.push_back(profile);
31 std::vector<base::string16> labels; 31 std::vector<base::string16> labels;
32 AutofillProfile::CreateDifferentiatingLabels(profiles, &labels); 32 AutofillProfile::CreateDifferentiatingLabels(profiles, "en-US", &labels);
33 return labels[0]; 33 return labels[0];
34 } 34 }
35 35
36 // Holds the autofill profile |first|, |middle| and |last| names. 36 // Holds the autofill profile |first|, |middle| and |last| names.
37 struct NameParts { 37 struct NameParts {
38 NameParts(const std::string& first, 38 NameParts(const std::string& first,
39 const std::string& middle, 39 const std::string& middle,
40 const std::string& last) 40 const std::string& last)
41 : first(first), middle(middle), last(last) {} 41 : first(first), middle(middle), last(last) {}
42 42
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 // Case 7a: "<firstname> <lastname>, <address>" - same as #7, except for 169 // Case 7a: "<firstname> <lastname>, <address>" - same as #7, except for
170 // e-mail. 170 // e-mail.
171 AutofillProfile profile7a(base::GenerateGUID(), "https://www.example.com/"); 171 AutofillProfile profile7a(base::GenerateGUID(), "https://www.example.com/");
172 test::SetProfileInfo(&profile7a, "Marion", "Mitchell", 172 test::SetProfileInfo(&profile7a, "Marion", "Mitchell",
173 "Morrison", "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", 173 "Morrison", "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5",
174 "Hollywood", "CA", "91601", "US", "16505678910"); 174 "Hollywood", "CA", "91601", "US", "16505678910");
175 std::vector<AutofillProfile*> profiles; 175 std::vector<AutofillProfile*> profiles;
176 profiles.push_back(&profile7); 176 profiles.push_back(&profile7);
177 profiles.push_back(&profile7a); 177 profiles.push_back(&profile7a);
178 std::vector<base::string16> labels; 178 std::vector<base::string16> labels;
179 AutofillProfile::CreateDifferentiatingLabels(profiles, &labels); 179 AutofillProfile::CreateDifferentiatingLabels(profiles, "en-US", &labels);
180 ASSERT_EQ(profiles.size(), labels.size()); 180 ASSERT_EQ(profiles.size(), labels.size());
181 summary7 = labels[0]; 181 summary7 = labels[0];
182 base::string16 summary7a = labels[1]; 182 base::string16 summary7a = labels[1];
183 EXPECT_EQ(ASCIIToUTF16( 183 EXPECT_EQ(ASCIIToUTF16(
184 "Marion Mitchell Morrison, 123 Zoo St., johnwayne@me.xyz"), summary7); 184 "Marion Mitchell Morrison, 123 Zoo St., johnwayne@me.xyz"), summary7);
185 EXPECT_EQ(ASCIIToUTF16( 185 EXPECT_EQ(ASCIIToUTF16(
186 "Marion Mitchell Morrison, 123 Zoo St., marion@me.xyz"), summary7a); 186 "Marion Mitchell Morrison, 123 Zoo St., marion@me.xyz"), summary7a);
187 } 187 }
188 188
189 TEST(AutofillProfileTest, AdjustInferredLabels) { 189 TEST(AutofillProfileTest, AdjustInferredLabels) {
(...skipping 22 matching lines...) Expand all
212 "Doe", 212 "Doe",
213 "janedoe@tertium.com", 213 "janedoe@tertium.com",
214 "Pluto Inc.", 214 "Pluto Inc.",
215 "123 Letha Shore.", 215 "123 Letha Shore.",
216 "", 216 "",
217 "Dis", "CA", 217 "Dis", "CA",
218 "91222", 218 "91222",
219 "US", 219 "US",
220 "12345678910"); 220 "12345678910");
221 std::vector<base::string16> labels; 221 std::vector<base::string16> labels;
222 AutofillProfile::CreateDifferentiatingLabels(profiles.get(), &labels); 222 AutofillProfile::CreateDifferentiatingLabels(
223 profiles.get(), "en-US", &labels);
223 ASSERT_EQ(2U, labels.size()); 224 ASSERT_EQ(2U, labels.size());
224 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."), labels[0]); 225 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."), labels[0]);
225 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 226 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
226 227
227 profiles.push_back( 228 profiles.push_back(
228 new AutofillProfile(base::GenerateGUID(), "Chrome settings")); 229 new AutofillProfile(base::GenerateGUID(), "Chrome settings"));
229 test::SetProfileInfo( 230 test::SetProfileInfo(
230 profiles[2], 231 profiles[2],
231 "John", 232 "John",
232 "", 233 "",
233 "Doe", 234 "Doe",
234 "johndoe@tertium.com", 235 "johndoe@tertium.com",
235 "Underworld", 236 "Underworld",
236 "666 Erebus St.", 237 "666 Erebus St.",
237 "", 238 "",
238 "Elysium", "CA", 239 "Elysium", "CA",
239 "91111", 240 "91111",
240 "US", 241 "US",
241 "16502111111"); 242 "16502111111");
242 labels.clear(); 243 labels.clear();
243 AutofillProfile::CreateDifferentiatingLabels(profiles.get(), &labels); 244 AutofillProfile::CreateDifferentiatingLabels(
245 profiles.get(), "en-US", &labels);
244 246
245 // Profile 0 and 2 inferred label now includes an e-mail. 247 // Profile 0 and 2 inferred label now includes an e-mail.
246 ASSERT_EQ(3U, labels.size()); 248 ASSERT_EQ(3U, labels.size());
247 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@hades.com"), 249 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@hades.com"),
248 labels[0]); 250 labels[0]);
249 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 251 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
250 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@tertium.com"), 252 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., johndoe@tertium.com"),
251 labels[2]); 253 labels[2]);
252 254
253 profiles.resize(2); 255 profiles.resize(2);
254 256
255 profiles.push_back( 257 profiles.push_back(
256 new AutofillProfile(base::GenerateGUID(), std::string())); 258 new AutofillProfile(base::GenerateGUID(), std::string()));
257 test::SetProfileInfo( 259 test::SetProfileInfo(
258 profiles[2], 260 profiles[2],
259 "John", 261 "John",
260 "", 262 "",
261 "Doe", 263 "Doe",
262 "johndoe@hades.com", 264 "johndoe@hades.com",
263 "Underworld", 265 "Underworld",
264 "666 Erebus St.", 266 "666 Erebus St.",
265 "", 267 "",
266 "Elysium", "CO", // State is different 268 "Elysium", "CO", // State is different
267 "91111", 269 "91111",
268 "US", 270 "US",
269 "16502111111"); 271 "16502111111");
270 272
271 labels.clear(); 273 labels.clear();
272 AutofillProfile::CreateDifferentiatingLabels(profiles.get(), &labels); 274 AutofillProfile::CreateDifferentiatingLabels(
275 profiles.get(), "en-US", &labels);
273 276
274 // Profile 0 and 2 inferred label now includes a state. 277 // Profile 0 and 2 inferred label now includes a state.
275 ASSERT_EQ(3U, labels.size()); 278 ASSERT_EQ(3U, labels.size());
276 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]); 279 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]);
277 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 280 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
278 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO"), labels[2]); 281 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO"), labels[2]);
279 282
280 profiles.push_back( 283 profiles.push_back(
281 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 284 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
282 test::SetProfileInfo( 285 test::SetProfileInfo(
283 profiles[3], 286 profiles[3],
284 "John", 287 "John",
285 "", 288 "",
286 "Doe", 289 "Doe",
287 "johndoe@hades.com", 290 "johndoe@hades.com",
288 "Underworld", 291 "Underworld",
289 "666 Erebus St.", 292 "666 Erebus St.",
290 "", 293 "",
291 "Elysium", "CO", // State is different for some. 294 "Elysium", "CO", // State is different for some.
292 "91111", 295 "91111",
293 "US", 296 "US",
294 "16504444444"); // Phone is different for some. 297 "16504444444"); // Phone is different for some.
295 298
296 labels.clear(); 299 labels.clear();
297 AutofillProfile::CreateDifferentiatingLabels(profiles.get(), &labels); 300 AutofillProfile::CreateDifferentiatingLabels(
301 profiles.get(), "en-US", &labels);
298 ASSERT_EQ(4U, labels.size()); 302 ASSERT_EQ(4U, labels.size());
299 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]); 303 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]);
300 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 304 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
301 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, 16502111111"), 305 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, 16502111111"),
302 labels[2]); 306 labels[2]);
303 // This one differs from other ones by unique phone, so no need for extra 307 // This one differs from other ones by unique phone, so no need for extra
304 // information. 308 // information.
305 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, 16504444444"), 309 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, 16504444444"),
306 labels[3]); 310 labels[3]);
307 311
308 profiles.push_back( 312 profiles.push_back(
309 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 313 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
310 test::SetProfileInfo( 314 test::SetProfileInfo(
311 profiles[4], 315 profiles[4],
312 "John", 316 "John",
313 "", 317 "",
314 "Doe", 318 "Doe",
315 "johndoe@styx.com", // E-Mail is different for some. 319 "johndoe@styx.com", // E-Mail is different for some.
316 "Underworld", 320 "Underworld",
317 "666 Erebus St.", 321 "666 Erebus St.",
318 "", 322 "",
319 "Elysium", "CO", // State is different for some. 323 "Elysium", "CO", // State is different for some.
320 "91111", 324 "91111",
321 "US", 325 "US",
322 "16504444444"); // Phone is different for some. 326 "16504444444"); // Phone is different for some.
323 327
324 labels.clear(); 328 labels.clear();
325 AutofillProfile::CreateDifferentiatingLabels(profiles.get(), &labels); 329 AutofillProfile::CreateDifferentiatingLabels(
330 profiles.get(), "en-US", &labels);
326 ASSERT_EQ(5U, labels.size()); 331 ASSERT_EQ(5U, labels.size());
327 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]); 332 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]);
328 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 333 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
329 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com," 334 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com,"
330 " 16502111111"), labels[2]); 335 " 16502111111"), labels[2]);
331 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com," 336 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com,"
332 " 16504444444"), labels[3]); 337 " 16504444444"), labels[3]);
333 // This one differs from other ones by unique e-mail, so no need for extra 338 // This one differs from other ones by unique e-mail, so no need for extra
334 // information. 339 // information.
335 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@styx.com"), 340 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@styx.com"),
(...skipping 26 matching lines...) Expand all
362 "Pluto Inc.", 367 "Pluto Inc.",
363 "123 Letha Shore.", 368 "123 Letha Shore.",
364 "", 369 "",
365 "Dis", "CA", 370 "Dis", "CA",
366 "91222", 371 "91222",
367 "US", 372 "US",
368 "12345678910"); 373 "12345678910");
369 std::vector<base::string16> labels; 374 std::vector<base::string16> labels;
370 // Two fields at least - no filter. 375 // Two fields at least - no filter.
371 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 2, 376 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 2,
372 &labels); 377 "en-US", &labels);
373 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."), labels[0]); 378 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St."), labels[0]);
374 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); 379 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]);
375 380
376 // Three fields at least - no filter. 381 // Three fields at least - no filter.
377 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 3, 382 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 3,
378 &labels); 383 "en-US", &labels);
379 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"), 384 EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"),
380 labels[0]); 385 labels[0]);
381 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"), 386 EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"),
382 labels[1]); 387 labels[1]);
383 388
384 std::vector<ServerFieldType> suggested_fields; 389 std::vector<ServerFieldType> suggested_fields;
385 suggested_fields.push_back(ADDRESS_HOME_CITY); 390 suggested_fields.push_back(ADDRESS_HOME_CITY);
386 suggested_fields.push_back(ADDRESS_HOME_STATE); 391 suggested_fields.push_back(ADDRESS_HOME_STATE);
387 suggested_fields.push_back(ADDRESS_HOME_ZIP); 392 suggested_fields.push_back(ADDRESS_HOME_ZIP);
388 393
389 // Two fields at least, from suggested fields - no filter. 394 // Two fields at least, from suggested fields - no filter.
390 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 395 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
391 UNKNOWN_TYPE, 2, &labels); 396 UNKNOWN_TYPE, 2, "en-US", &labels);
392 EXPECT_EQ(ASCIIToUTF16("Elysium, CA"), labels[0]); 397 EXPECT_EQ(ASCIIToUTF16("Elysium, CA"), labels[0]);
393 EXPECT_EQ(ASCIIToUTF16("Dis, CA"), labels[1]); 398 EXPECT_EQ(ASCIIToUTF16("Dis, CA"), labels[1]);
394 399
395 // Three fields at least, from suggested fields - no filter. 400 // Three fields at least, from suggested fields - no filter.
396 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 401 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
397 UNKNOWN_TYPE, 3, &labels); 402 UNKNOWN_TYPE, 3, "en-US", &labels);
398 EXPECT_EQ(ASCIIToUTF16("Elysium, CA, 91111"), labels[0]); 403 EXPECT_EQ(ASCIIToUTF16("Elysium, CA, 91111"), labels[0]);
399 EXPECT_EQ(ASCIIToUTF16("Dis, CA, 91222"), labels[1]); 404 EXPECT_EQ(ASCIIToUTF16("Dis, CA, 91222"), labels[1]);
400 405
401 // Three fields at least, from suggested fields - but filter reduces available 406 // Three fields at least, from suggested fields - but filter reduces available
402 // fields to two. 407 // fields to two.
403 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 408 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
404 ADDRESS_HOME_STATE, 3, &labels); 409 ADDRESS_HOME_STATE, 3, "en-US",
410 &labels);
405 EXPECT_EQ(ASCIIToUTF16("Elysium, 91111"), labels[0]); 411 EXPECT_EQ(ASCIIToUTF16("Elysium, 91111"), labels[0]);
406 EXPECT_EQ(ASCIIToUTF16("Dis, 91222"), labels[1]); 412 EXPECT_EQ(ASCIIToUTF16("Dis, 91222"), labels[1]);
407 413
408 suggested_fields.clear(); 414 suggested_fields.clear();
409 // In our implementation we always display NAME_FULL for all NAME* fields... 415 // In our implementation we always display NAME_FULL for all NAME* fields...
410 suggested_fields.push_back(NAME_MIDDLE); 416 suggested_fields.push_back(NAME_MIDDLE);
411 // One field at least, from suggested fields - no filter. 417 // One field at least, from suggested fields - no filter.
412 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 418 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
413 UNKNOWN_TYPE, 1, &labels); 419 UNKNOWN_TYPE, 1, "en-US", &labels);
414 EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]); 420 EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]);
415 EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]); 421 EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]);
416 422
417 // One field at least, from suggested fields - filter the same as suggested 423 // One field at least, from suggested fields - filter the same as suggested
418 // field. 424 // field.
419 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 425 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
420 NAME_MIDDLE, 1, &labels); 426 NAME_MIDDLE, 1, "en-US", &labels);
421 EXPECT_EQ(base::string16(), labels[0]); 427 EXPECT_EQ(base::string16(), labels[0]);
422 EXPECT_EQ(base::string16(), labels[1]); 428 EXPECT_EQ(base::string16(), labels[1]);
423 429
424 suggested_fields.clear(); 430 suggested_fields.clear();
425 // In our implementation we always display NAME_FULL for NAME_MIDDLE_INITIAL 431 // In our implementation we always display NAME_FULL for NAME_MIDDLE_INITIAL
426 suggested_fields.push_back(NAME_MIDDLE_INITIAL); 432 suggested_fields.push_back(NAME_MIDDLE_INITIAL);
427 // One field at least, from suggested fields - no filter. 433 // One field at least, from suggested fields - no filter.
428 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 434 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
429 UNKNOWN_TYPE, 1, &labels); 435 UNKNOWN_TYPE, 1, "en-US", &labels);
430 EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]); 436 EXPECT_EQ(ASCIIToUTF16("John Doe"), labels[0]);
431 EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]); 437 EXPECT_EQ(ASCIIToUTF16("Jane Doe"), labels[1]);
432 438
433 // One field at least, from suggested fields - filter same as the first non- 439 // One field at least, from suggested fields - filter same as the first non-
434 // unknown suggested field. 440 // unknown suggested field.
435 suggested_fields.clear(); 441 suggested_fields.clear();
436 suggested_fields.push_back(UNKNOWN_TYPE); 442 suggested_fields.push_back(UNKNOWN_TYPE);
437 suggested_fields.push_back(NAME_FULL); 443 suggested_fields.push_back(NAME_FULL);
438 suggested_fields.push_back(ADDRESS_HOME_LINE1); 444 suggested_fields.push_back(ADDRESS_HOME_LINE1);
439 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 445 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
440 NAME_FULL, 1, &labels); 446 NAME_FULL, 1, "en-US", &labels);
441 EXPECT_EQ(base::string16(ASCIIToUTF16("666 Erebus St.")), labels[0]); 447 EXPECT_EQ(base::string16(ASCIIToUTF16("666 Erebus St.")), labels[0]);
442 EXPECT_EQ(base::string16(ASCIIToUTF16("123 Letha Shore.")), labels[1]); 448 EXPECT_EQ(base::string16(ASCIIToUTF16("123 Letha Shore.")), labels[1]);
443 } 449 }
444 450
445 // Test that we fall back to using the full name if there are no other 451 // Test that we fall back to using the full name if there are no other
446 // distinguishing fields, but only if it makes sense given the suggested fields. 452 // distinguishing fields, but only if it makes sense given the suggested fields.
447 TEST(AutofillProfileTest, CreateInferredLabelsFallsBackToFullName) { 453 TEST(AutofillProfileTest, CreateInferredLabelsFallsBackToFullName) {
448 ScopedVector<AutofillProfile> profiles; 454 ScopedVector<AutofillProfile> profiles;
449 profiles.push_back( 455 profiles.push_back(
450 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 456 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
451 test::SetProfileInfo(profiles[0], 457 test::SetProfileInfo(profiles[0],
452 "John", "", "Doe", "doe@example.com", "", 458 "John", "", "Doe", "doe@example.com", "",
453 "88 Nowhere Ave.", "", "", "", "", "", ""); 459 "88 Nowhere Ave.", "", "", "", "", "", "");
454 profiles.push_back( 460 profiles.push_back(
455 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 461 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
456 test::SetProfileInfo(profiles[1], 462 test::SetProfileInfo(profiles[1],
457 "Johnny", "K", "Doe", "doe@example.com", "", 463 "Johnny", "K", "Doe", "doe@example.com", "",
458 "88 Nowhere Ave.", "", "", "", "", "", ""); 464 "88 Nowhere Ave.", "", "", "", "", "", "");
459 465
460 // If the only name field in the suggested fields is the excluded field, we 466 // If the only name field in the suggested fields is the excluded field, we
461 // should not fall back to the full name as a distinguishing field. 467 // should not fall back to the full name as a distinguishing field.
462 std::vector<ServerFieldType> suggested_fields; 468 std::vector<ServerFieldType> suggested_fields;
463 suggested_fields.push_back(NAME_LAST); 469 suggested_fields.push_back(NAME_LAST);
464 suggested_fields.push_back(ADDRESS_HOME_LINE1); 470 suggested_fields.push_back(ADDRESS_HOME_LINE1);
465 suggested_fields.push_back(EMAIL_ADDRESS); 471 suggested_fields.push_back(EMAIL_ADDRESS);
466 std::vector<base::string16> labels; 472 std::vector<base::string16> labels;
467 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 473 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
468 NAME_LAST, 1, &labels); 474 NAME_LAST, 1, "en-US", &labels);
469 ASSERT_EQ(2U, labels.size()); 475 ASSERT_EQ(2U, labels.size());
470 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[0]); 476 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[0]);
471 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[1]); 477 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave."), labels[1]);
472 478
473 // Otherwise, we should. 479 // Otherwise, we should.
474 suggested_fields.push_back(NAME_FIRST); 480 suggested_fields.push_back(NAME_FIRST);
475 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 481 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
476 NAME_LAST, 1, &labels); 482 NAME_LAST, 1, "en-US", &labels);
477 ASSERT_EQ(2U, labels.size()); 483 ASSERT_EQ(2U, labels.size());
478 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., John Doe"), labels[0]); 484 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., John Doe"), labels[0]);
479 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., Johnny K Doe"), labels[1]); 485 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., Johnny K Doe"), labels[1]);
480 } 486 }
481 487
482 // Test that we do not show duplicate fields in the labels. 488 // Test that we do not show duplicate fields in the labels.
483 TEST(AutofillProfileTest, CreateInferredLabelsNoDuplicatedFields) { 489 TEST(AutofillProfileTest, CreateInferredLabelsNoDuplicatedFields) {
484 ScopedVector<AutofillProfile> profiles; 490 ScopedVector<AutofillProfile> profiles;
485 profiles.push_back( 491 profiles.push_back(
486 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 492 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
487 test::SetProfileInfo(profiles[0], 493 test::SetProfileInfo(profiles[0],
488 "John", "", "Doe", "doe@example.com", "", 494 "John", "", "Doe", "doe@example.com", "",
489 "88 Nowhere Ave.", "", "", "", "", "", ""); 495 "88 Nowhere Ave.", "", "", "", "", "", "");
490 profiles.push_back( 496 profiles.push_back(
491 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 497 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
492 test::SetProfileInfo(profiles[1], 498 test::SetProfileInfo(profiles[1],
493 "John", "", "Doe", "dojo@example.com", "", 499 "John", "", "Doe", "dojo@example.com", "",
494 "88 Nowhere Ave.", "", "", "", "", "", ""); 500 "88 Nowhere Ave.", "", "", "", "", "", "");
495 501
496 // If the only name field in the suggested fields is the excluded field, we 502 // If the only name field in the suggested fields is the excluded field, we
497 // should not fall back to the full name as a distinguishing field. 503 // should not fall back to the full name as a distinguishing field.
498 std::vector<ServerFieldType> suggested_fields; 504 std::vector<ServerFieldType> suggested_fields;
499 suggested_fields.push_back(ADDRESS_HOME_LINE1); 505 suggested_fields.push_back(ADDRESS_HOME_LINE1);
500 suggested_fields.push_back(ADDRESS_BILLING_LINE1); 506 suggested_fields.push_back(ADDRESS_BILLING_LINE1);
501 suggested_fields.push_back(EMAIL_ADDRESS); 507 suggested_fields.push_back(EMAIL_ADDRESS);
502 std::vector<base::string16> labels; 508 std::vector<base::string16> labels;
503 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 509 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
504 UNKNOWN_TYPE, 2, &labels); 510 UNKNOWN_TYPE, 2, "en-US", &labels);
505 ASSERT_EQ(2U, labels.size()); 511 ASSERT_EQ(2U, labels.size());
506 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., doe@example.com"), labels[0]); 512 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., doe@example.com"), labels[0]);
507 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., dojo@example.com"), labels[1]); 513 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., dojo@example.com"), labels[1]);
508 } 514 }
509 515
510 // Make sure that empty fields are not treated as distinguishing fields. 516 // Make sure that empty fields are not treated as distinguishing fields.
511 TEST(AutofillProfileTest, CreateInferredLabelsSkipsEmptyFields) { 517 TEST(AutofillProfileTest, CreateInferredLabelsSkipsEmptyFields) {
512 ScopedVector<AutofillProfile> profiles; 518 ScopedVector<AutofillProfile> profiles;
513 profiles.push_back( 519 profiles.push_back(
514 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 520 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
515 test::SetProfileInfo(profiles[0], 521 test::SetProfileInfo(profiles[0],
516 "John", "", "Doe", "doe@example.com", 522 "John", "", "Doe", "doe@example.com",
517 "Gogole", "", "", "", "", "", "", ""); 523 "Gogole", "", "", "", "", "", "", "");
518 profiles.push_back( 524 profiles.push_back(
519 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 525 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
520 test::SetProfileInfo(profiles[1], 526 test::SetProfileInfo(profiles[1],
521 "John", "", "Doe", "doe@example.com", 527 "John", "", "Doe", "doe@example.com",
522 "Ggoole", "", "", "", "", "", "", ""); 528 "Ggoole", "", "", "", "", "", "", "");
523 profiles.push_back( 529 profiles.push_back(
524 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 530 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
525 test::SetProfileInfo(profiles[2], 531 test::SetProfileInfo(profiles[2],
526 "John", "", "Doe", "john.doe@example.com", 532 "John", "", "Doe", "john.doe@example.com",
527 "Goolge", "", "", "", "", "", "", ""); 533 "Goolge", "", "", "", "", "", "", "");
528 534
529 std::vector<base::string16> labels; 535 std::vector<base::string16> labels;
530 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 3, 536 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 3,
531 &labels); 537 "en-US", &labels);
532 ASSERT_EQ(3U, labels.size()); 538 ASSERT_EQ(3U, labels.size());
533 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Gogole"), labels[0]); 539 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Gogole"), labels[0]);
534 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Ggoole"), labels[1]); 540 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Ggoole"), labels[1]);
535 EXPECT_EQ(ASCIIToUTF16("John Doe, john.doe@example.com, Goolge"), labels[2]); 541 EXPECT_EQ(ASCIIToUTF16("John Doe, john.doe@example.com, Goolge"), labels[2]);
536 542
537 // A field must have a non-empty value for each profile to be considered a 543 // A field must have a non-empty value for each profile to be considered a
538 // distinguishing field. 544 // distinguishing field.
539 profiles[1]->SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("88 Nowhere Ave.")); 545 profiles[1]->SetRawInfo(ADDRESS_HOME_LINE1, ASCIIToUTF16("88 Nowhere Ave."));
540 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 1, 546 AutofillProfile::CreateInferredLabels(profiles.get(), NULL, UNKNOWN_TYPE, 1,
541 &labels); 547 "en-US", &labels);
542 ASSERT_EQ(3U, labels.size()); 548 ASSERT_EQ(3U, labels.size());
543 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Gogole"), labels[0]); 549 EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Gogole"), labels[0]);
544 EXPECT_EQ(ASCIIToUTF16("John Doe, 88 Nowhere Ave., doe@example.com, Ggoole"), 550 EXPECT_EQ(ASCIIToUTF16("John Doe, 88 Nowhere Ave., doe@example.com, Ggoole"),
545 labels[1]) << labels[1]; 551 labels[1]) << labels[1];
546 EXPECT_EQ(ASCIIToUTF16("John Doe, john.doe@example.com"), labels[2]); 552 EXPECT_EQ(ASCIIToUTF16("John Doe, john.doe@example.com"), labels[2]);
547 } 553 }
548 554
549 // Test that labels that would otherwise have multiline values are flattened. 555 // Test that labels that would otherwise have multiline values are flattened.
550 TEST(AutofillProfileTest, CreateInferredLabelsFlattensMultiLineValues) { 556 TEST(AutofillProfileTest, CreateInferredLabelsFlattensMultiLineValues) {
551 ScopedVector<AutofillProfile> profiles; 557 ScopedVector<AutofillProfile> profiles;
552 profiles.push_back( 558 profiles.push_back(
553 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 559 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
554 test::SetProfileInfo(profiles[0], 560 test::SetProfileInfo(profiles[0],
555 "John", "", "Doe", "doe@example.com", "", 561 "John", "", "Doe", "doe@example.com", "",
556 "88 Nowhere Ave.", "Apt. 42", "", "", "", "", ""); 562 "88 Nowhere Ave.", "Apt. 42", "", "", "", "", "");
557 563
558 // If the only name field in the suggested fields is the excluded field, we 564 // If the only name field in the suggested fields is the excluded field, we
559 // should not fall back to the full name as a distinguishing field. 565 // should not fall back to the full name as a distinguishing field.
560 std::vector<ServerFieldType> suggested_fields; 566 std::vector<ServerFieldType> suggested_fields;
561 suggested_fields.push_back(NAME_FULL); 567 suggested_fields.push_back(NAME_FULL);
562 suggested_fields.push_back(ADDRESS_HOME_STREET_ADDRESS); 568 suggested_fields.push_back(ADDRESS_HOME_STREET_ADDRESS);
563 std::vector<base::string16> labels; 569 std::vector<base::string16> labels;
564 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields, 570 AutofillProfile::CreateInferredLabels(profiles.get(), &suggested_fields,
565 NAME_FULL, 1, &labels); 571 NAME_FULL, 1, "en-US", &labels);
566 ASSERT_EQ(1U, labels.size()); 572 ASSERT_EQ(1U, labels.size());
567 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., Apt. 42"), labels[0]); 573 EXPECT_EQ(ASCIIToUTF16("88 Nowhere Ave., Apt. 42"), labels[0]);
568 } 574 }
569 575
570 TEST(AutofillProfileTest, IsSubsetOf) { 576 TEST(AutofillProfileTest, IsSubsetOf) {
571 scoped_ptr<AutofillProfile> a, b; 577 scoped_ptr<AutofillProfile> a, b;
572 578
573 // |a| is a subset of |b|. 579 // |a| is a subset of |b|.
574 a.reset( 580 a.reset(
575 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 581 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
(...skipping 26 matching lines...) Expand all
602 NULL); 608 NULL);
603 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US")); 609 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US"));
604 } 610 }
605 611
606 TEST(AutofillProfileTest, OverwriteWithOrAddTo) { 612 TEST(AutofillProfileTest, OverwriteWithOrAddTo) {
607 AutofillProfile a(base::GenerateGUID(), "https://www.example.com"); 613 AutofillProfile a(base::GenerateGUID(), "https://www.example.com");
608 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", 614 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison",
609 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", 615 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5",
610 "Hollywood", "CA", "91601", "US", 616 "Hollywood", "CA", "91601", "US",
611 "12345678910"); 617 "12345678910");
612 std::vector<base::string16> names; 618 std::vector<base::string16> first_names;
613 a.GetRawMultiInfo(NAME_FULL, &names); 619 a.GetRawMultiInfo(NAME_FIRST, &first_names);
614 names.push_back(ASCIIToUTF16("Marion Morrison")); 620 first_names.push_back(ASCIIToUTF16("Marion"));
615 a.SetRawMultiInfo(NAME_FULL, names); 621 a.SetRawMultiInfo(NAME_FIRST, first_names);
622
623 std::vector<base::string16> last_names;
624 a.GetRawMultiInfo(NAME_LAST, &last_names);
625 last_names[last_names.size() - 1] = ASCIIToUTF16("Morrison");
626 a.SetRawMultiInfo(NAME_LAST, last_names);
616 627
617 // Create an identical profile except that the new profile: 628 // Create an identical profile except that the new profile:
618 // (1) Has a different origin, 629 // (1) Has a different origin,
619 // (2) Has a different address line 2, 630 // (2) Has a different address line 2,
620 // (3) Lacks a company name, 631 // (3) Lacks a company name,
621 // (4) Has a different full name variant, and 632 // (4) Has a different full name variant, and
622 // (5) Has a language code. 633 // (5) Has a language code.
623 AutofillProfile b = a; 634 AutofillProfile b = a;
624 b.set_guid(base::GenerateGUID()); 635 b.set_guid(base::GenerateGUID());
625 b.set_origin("Chrome settings"); 636 b.set_origin("Chrome settings");
626 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51")); 637 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51"));
627 b.SetRawInfo(COMPANY_NAME, base::string16()); 638 b.SetRawInfo(COMPANY_NAME, base::string16());
628 b.GetRawMultiInfo(NAME_FULL, &names); 639
640 std::vector<base::string16> names;
641 b.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names);
629 names.push_back(ASCIIToUTF16("Marion M. Morrison")); 642 names.push_back(ASCIIToUTF16("Marion M. Morrison"));
630 b.SetRawMultiInfo(NAME_FULL, names); 643 b.SetRawMultiInfo(NAME_FULL, names);
631 b.set_language_code("en"); 644 b.set_language_code("en");
632 645
633 a.OverwriteWithOrAddTo(b, "en-US"); 646 a.OverwriteWithOrAddTo(b, "en-US");
634 EXPECT_EQ("Chrome settings", a.origin()); 647 EXPECT_EQ("Chrome settings", a.origin());
635 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2)); 648 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2));
636 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME)); 649 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME));
637 a.GetRawMultiInfo(NAME_FULL, &names); 650 a.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names);
638 ASSERT_EQ(3U, names.size()); 651 ASSERT_EQ(3U, names.size());
639 EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison"), names[0]); 652 EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison"), names[0]);
640 EXPECT_EQ(ASCIIToUTF16("Marion Morrison"), names[1]); 653 EXPECT_EQ(ASCIIToUTF16("Marion Morrison"), names[1]);
641 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), names[2]); 654 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), names[2]);
642 EXPECT_EQ("en", a.language_code()); 655 EXPECT_EQ("en", a.language_code());
643 } 656 }
644 657
645 TEST(AutofillProfileTest, AssignmentOperator) { 658 TEST(AutofillProfileTest, AssignmentOperator) {
646 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); 659 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/");
647 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", 660 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison",
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 1116
1104 for (size_t i = 0; i < current_case.expected_result.size(); ++i) { 1117 for (size_t i = 0; i < current_case.expected_result.size(); ++i) {
1105 EXPECT_EQ(first_names[i], merged_first_names[i]); 1118 EXPECT_EQ(first_names[i], merged_first_names[i]);
1106 EXPECT_EQ(middle_names[i], merged_middle_names[i]); 1119 EXPECT_EQ(middle_names[i], merged_middle_names[i]);
1107 EXPECT_EQ(last_names[i], merged_last_names[i]); 1120 EXPECT_EQ(last_names[i], merged_last_names[i]);
1108 } 1121 }
1109 } 1122 }
1110 } 1123 }
1111 1124
1112 } // namespace autofill 1125 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_profile.cc ('k') | components/autofill/core/browser/contact_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698