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 3 // found in the LICENSE file. 4 5 #include "components/autofill/core/browser/autofill_type.h" 6 7 #include "base/logging.h" 8 9 namespace autofill { 10 11 AutofillType::AutofillType(ServerFieldType field_type) 12 : html_type_(HTML_TYPE_UNKNOWN), 13 html_mode_(HTML_MODE_NONE) { 14 if ((field_type < NO_SERVER_DATA || field_type >= MAX_VALID_FIELD_TYPE) || 15 (field_type >= 15 && field_type <= 19) || 16 (field_type >= 25 && field_type <= 29) || 17 (field_type >= 44 && field_type <= 50)) { 18 server_type_ = UNKNOWN_TYPE; 19 } else { 20 server_type_ = field_type; 21 } 22 } 23 24 AutofillType::AutofillType(HtmlFieldType field_type, HtmlFieldMode mode) 25 : server_type_(UNKNOWN_TYPE), 26 html_type_(field_type), 27 html_mode_(mode) {} 28 29 30 AutofillType::AutofillType(const AutofillType& autofill_type) { 31 *this = autofill_type; 32 } 33 34 AutofillType& AutofillType::operator=(const AutofillType& autofill_type) { 35 if (this != &autofill_type) { 36 this->server_type_ = autofill_type.server_type_; 37 this->html_type_ = autofill_type.html_type_; 38 this->html_mode_ = autofill_type.html_mode_; 39 } 40 41 return *this; 42 } 43 44 FieldTypeGroup AutofillType::group() const { 45 switch (server_type_) { 46 case NAME_FIRST: 47 case NAME_MIDDLE: 48 case NAME_LAST: 49 case NAME_MIDDLE_INITIAL: 50 case NAME_FULL: 51 case NAME_SUFFIX: 52 return NAME; 53 54 case NAME_BILLING_FIRST: 55 case NAME_BILLING_MIDDLE: 56 case NAME_BILLING_LAST: 57 case NAME_BILLING_MIDDLE_INITIAL: 58 case NAME_BILLING_FULL: 59 case NAME_BILLING_SUFFIX: 60 return NAME_BILLING; 61 62 case EMAIL_ADDRESS: 63 return EMAIL; 64 65 case PHONE_HOME_NUMBER: 66 case PHONE_HOME_CITY_CODE: 67 case PHONE_HOME_COUNTRY_CODE: 68 case PHONE_HOME_CITY_AND_NUMBER: 69 case PHONE_HOME_WHOLE_NUMBER: 70 return PHONE_HOME; 71 72 case PHONE_BILLING_NUMBER: 73 case PHONE_BILLING_CITY_CODE: 74 case PHONE_BILLING_COUNTRY_CODE: 75 case PHONE_BILLING_CITY_AND_NUMBER: 76 case PHONE_BILLING_WHOLE_NUMBER: 77 return PHONE_BILLING; 78 79 case ADDRESS_HOME_LINE1: 80 case ADDRESS_HOME_LINE2: 81 case ADDRESS_HOME_LINE3: 82 case ADDRESS_HOME_APT_NUM: 83 case ADDRESS_HOME_CITY: 84 case ADDRESS_HOME_STATE: 85 case ADDRESS_HOME_ZIP: 86 case ADDRESS_HOME_COUNTRY: 87 case ADDRESS_HOME_STREET_ADDRESS: 88 case ADDRESS_HOME_SORTING_CODE: 89 case ADDRESS_HOME_DEPENDENT_LOCALITY: 90 return ADDRESS_HOME; 91 92 case ADDRESS_BILLING_LINE1: 93 case ADDRESS_BILLING_LINE2: 94 case ADDRESS_BILLING_LINE3: 95 case ADDRESS_BILLING_APT_NUM: 96 case ADDRESS_BILLING_CITY: 97 case ADDRESS_BILLING_STATE: 98 case ADDRESS_BILLING_ZIP: 99 case ADDRESS_BILLING_COUNTRY: 100 case ADDRESS_BILLING_STREET_ADDRESS: 101 case ADDRESS_BILLING_SORTING_CODE: 102 case ADDRESS_BILLING_DEPENDENT_LOCALITY: 103 return ADDRESS_BILLING; 104 105 case CREDIT_CARD_NAME: 106 case CREDIT_CARD_NUMBER: 107 case CREDIT_CARD_EXP_MONTH: 108 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 109 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 110 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 111 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 112 case CREDIT_CARD_TYPE: 113 case CREDIT_CARD_VERIFICATION_CODE: 114 return CREDIT_CARD; 115 116 case COMPANY_NAME: 117 return COMPANY; 118 119 case PASSWORD: 120 case ACCOUNT_CREATION_PASSWORD: 121 return PASSWORD_FIELD; 122 123 case NO_SERVER_DATA: 124 case EMPTY_TYPE: 125 case PHONE_FAX_NUMBER: 126 case PHONE_FAX_CITY_CODE: 127 case PHONE_FAX_COUNTRY_CODE: 128 case PHONE_FAX_CITY_AND_NUMBER: 129 case PHONE_FAX_WHOLE_NUMBER: 130 case FIELD_WITH_DEFAULT_VALUE: 131 case MERCHANT_EMAIL_SIGNUP: 132 case MERCHANT_PROMO_CODE: 133 return NO_GROUP; 134 135 case MAX_VALID_FIELD_TYPE: 136 NOTREACHED(); 137 return NO_GROUP; 138 139 case UNKNOWN_TYPE: 140 break; 141 } 142 143 switch (html_type_) { 144 case HTML_TYPE_NAME: 145 case HTML_TYPE_GIVEN_NAME: 146 case HTML_TYPE_ADDITIONAL_NAME: 147 case HTML_TYPE_ADDITIONAL_NAME_INITIAL: 148 case HTML_TYPE_FAMILY_NAME: 149 return html_mode_ == HTML_MODE_BILLING ? NAME_BILLING : NAME; 150 151 case HTML_TYPE_ORGANIZATION: 152 return COMPANY; 153 154 case HTML_TYPE_STREET_ADDRESS: 155 case HTML_TYPE_ADDRESS_LINE1: 156 case HTML_TYPE_ADDRESS_LINE2: 157 case HTML_TYPE_ADDRESS_LINE3: 158 case HTML_TYPE_ADDRESS_LEVEL1: 159 case HTML_TYPE_ADDRESS_LEVEL2: 160 case HTML_TYPE_ADDRESS_LEVEL3: 161 case HTML_TYPE_COUNTRY_CODE: 162 case HTML_TYPE_COUNTRY_NAME: 163 case HTML_TYPE_POSTAL_CODE: 164 case HTML_TYPE_FULL_ADDRESS: 165 return html_mode_ == HTML_MODE_BILLING ? ADDRESS_BILLING : ADDRESS_HOME; 166 167 case HTML_TYPE_CREDIT_CARD_NAME: 168 case HTML_TYPE_CREDIT_CARD_NUMBER: 169 case HTML_TYPE_CREDIT_CARD_EXP: 170 case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 171 case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 172 case HTML_TYPE_CREDIT_CARD_EXP_MONTH: 173 case HTML_TYPE_CREDIT_CARD_EXP_YEAR: 174 case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR: 175 case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR: 176 case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE: 177 case HTML_TYPE_CREDIT_CARD_TYPE: 178 return CREDIT_CARD; 179 180 case HTML_TYPE_TEL: 181 case HTML_TYPE_TEL_COUNTRY_CODE: 182 case HTML_TYPE_TEL_NATIONAL: 183 case HTML_TYPE_TEL_AREA_CODE: 184 case HTML_TYPE_TEL_LOCAL: 185 case HTML_TYPE_TEL_LOCAL_PREFIX: 186 case HTML_TYPE_TEL_LOCAL_SUFFIX: 187 return html_mode_ == HTML_MODE_BILLING ? PHONE_BILLING : PHONE_HOME; 188 189 case HTML_TYPE_EMAIL: 190 return EMAIL; 191 192 case HTML_TYPE_UNKNOWN: 193 break; 194 } 195 196 return NO_GROUP; 197 } 198 199 bool AutofillType::IsUnknown() const { 200 return server_type_ == UNKNOWN_TYPE && html_type_ == HTML_TYPE_UNKNOWN; 201 } 202 203 ServerFieldType AutofillType::GetStorableType() const { 204 // Map billing types to the equivalent non-billing types. 205 switch (server_type_) { 206 case ADDRESS_BILLING_LINE1: 207 return ADDRESS_HOME_LINE1; 208 209 case ADDRESS_BILLING_LINE2: 210 return ADDRESS_HOME_LINE2; 211 212 case ADDRESS_BILLING_LINE3: 213 return ADDRESS_HOME_LINE3; 214 215 case ADDRESS_BILLING_APT_NUM: 216 return ADDRESS_HOME_APT_NUM; 217 218 case ADDRESS_BILLING_CITY: 219 return ADDRESS_HOME_CITY; 220 221 case ADDRESS_BILLING_STATE: 222 return ADDRESS_HOME_STATE; 223 224 case ADDRESS_BILLING_ZIP: 225 return ADDRESS_HOME_ZIP; 226 227 case ADDRESS_BILLING_COUNTRY: 228 return ADDRESS_HOME_COUNTRY; 229 230 case PHONE_BILLING_WHOLE_NUMBER: 231 return PHONE_HOME_WHOLE_NUMBER; 232 233 case PHONE_BILLING_NUMBER: 234 return PHONE_HOME_NUMBER; 235 236 case PHONE_BILLING_CITY_CODE: 237 return PHONE_HOME_CITY_CODE; 238 239 case PHONE_BILLING_COUNTRY_CODE: 240 return PHONE_HOME_COUNTRY_CODE; 241 242 case PHONE_BILLING_CITY_AND_NUMBER: 243 return PHONE_HOME_CITY_AND_NUMBER; 244 245 case NAME_BILLING_FIRST: 246 return NAME_FIRST; 247 248 case NAME_BILLING_MIDDLE: 249 return NAME_MIDDLE; 250 251 case NAME_BILLING_LAST: 252 return NAME_LAST; 253 254 case NAME_BILLING_MIDDLE_INITIAL: 255 return NAME_MIDDLE_INITIAL; 256 257 case NAME_BILLING_FULL: 258 return NAME_FULL; 259 260 case NAME_BILLING_SUFFIX: 261 return NAME_SUFFIX; 262 263 case ADDRESS_BILLING_STREET_ADDRESS: 264 return ADDRESS_HOME_STREET_ADDRESS; 265 266 case ADDRESS_BILLING_SORTING_CODE: 267 return ADDRESS_HOME_SORTING_CODE; 268 269 case ADDRESS_BILLING_DEPENDENT_LOCALITY: 270 return ADDRESS_HOME_DEPENDENT_LOCALITY; 271 272 case UNKNOWN_TYPE: 273 break; // Try to parse HTML types instead. 274 275 default: 276 return server_type_; 277 } 278 279 switch (html_type_) { 280 case HTML_TYPE_UNKNOWN: 281 return UNKNOWN_TYPE; 282 283 case HTML_TYPE_NAME: 284 return NAME_FULL; 285 286 case HTML_TYPE_GIVEN_NAME: 287 return NAME_FIRST; 288 289 case HTML_TYPE_ADDITIONAL_NAME: 290 return NAME_MIDDLE; 291 292 case HTML_TYPE_FAMILY_NAME: 293 return NAME_LAST; 294 295 case HTML_TYPE_ORGANIZATION: 296 return COMPANY_NAME; 297 298 case HTML_TYPE_STREET_ADDRESS: 299 return ADDRESS_HOME_STREET_ADDRESS; 300 301 case HTML_TYPE_ADDRESS_LINE1: 302 return ADDRESS_HOME_LINE1; 303 304 case HTML_TYPE_ADDRESS_LINE2: 305 return ADDRESS_HOME_LINE2; 306 307 case HTML_TYPE_ADDRESS_LINE3: 308 return ADDRESS_HOME_LINE3; 309 310 case HTML_TYPE_ADDRESS_LEVEL1: 311 return ADDRESS_HOME_STATE; 312 313 case HTML_TYPE_ADDRESS_LEVEL2: 314 return ADDRESS_HOME_CITY; 315 316 case HTML_TYPE_ADDRESS_LEVEL3: 317 return ADDRESS_HOME_DEPENDENT_LOCALITY; 318 319 case HTML_TYPE_COUNTRY_CODE: 320 case HTML_TYPE_COUNTRY_NAME: 321 return ADDRESS_HOME_COUNTRY; 322 323 case HTML_TYPE_POSTAL_CODE: 324 return ADDRESS_HOME_ZIP; 325 326 // Full address is composed of other types; it can't be stored. 327 case HTML_TYPE_FULL_ADDRESS: 328 return UNKNOWN_TYPE; 329 330 case HTML_TYPE_CREDIT_CARD_NAME: 331 return CREDIT_CARD_NAME; 332 333 case HTML_TYPE_CREDIT_CARD_NUMBER: 334 return CREDIT_CARD_NUMBER; 335 336 case HTML_TYPE_CREDIT_CARD_EXP: 337 return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR; 338 339 case HTML_TYPE_CREDIT_CARD_EXP_MONTH: 340 return CREDIT_CARD_EXP_MONTH; 341 342 case HTML_TYPE_CREDIT_CARD_EXP_YEAR: 343 return CREDIT_CARD_EXP_4_DIGIT_YEAR; 344 345 case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE: 346 return CREDIT_CARD_VERIFICATION_CODE; 347 348 case HTML_TYPE_CREDIT_CARD_TYPE: 349 return CREDIT_CARD_TYPE; 350 351 case HTML_TYPE_TEL: 352 return PHONE_HOME_WHOLE_NUMBER; 353 354 case HTML_TYPE_TEL_COUNTRY_CODE: 355 return PHONE_HOME_COUNTRY_CODE; 356 357 case HTML_TYPE_TEL_NATIONAL: 358 return PHONE_HOME_CITY_AND_NUMBER; 359 360 case HTML_TYPE_TEL_AREA_CODE: 361 return PHONE_HOME_CITY_CODE; 362 363 case HTML_TYPE_TEL_LOCAL: 364 case HTML_TYPE_TEL_LOCAL_PREFIX: 365 case HTML_TYPE_TEL_LOCAL_SUFFIX: 366 return PHONE_HOME_NUMBER; 367 368 case HTML_TYPE_EMAIL: 369 return EMAIL_ADDRESS; 370 371 case HTML_TYPE_ADDITIONAL_NAME_INITIAL: 372 return NAME_MIDDLE_INITIAL; 373 374 case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 375 return CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR; 376 377 case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 378 return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR; 379 380 case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR: 381 return CREDIT_CARD_EXP_2_DIGIT_YEAR; 382 383 case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR: 384 return CREDIT_CARD_EXP_4_DIGIT_YEAR; 385 } 386 387 NOTREACHED(); 388 return UNKNOWN_TYPE; 389 } 390 391 // static 392 ServerFieldType AutofillType::GetEquivalentBillingFieldType( 393 ServerFieldType field_type) { 394 switch (field_type) { 395 case ADDRESS_HOME_LINE1: 396 return ADDRESS_BILLING_LINE1; 397 398 case ADDRESS_HOME_LINE2: 399 return ADDRESS_BILLING_LINE2; 400 401 case ADDRESS_HOME_APT_NUM: 402 return ADDRESS_BILLING_APT_NUM; 403 404 case ADDRESS_HOME_CITY: 405 return ADDRESS_BILLING_CITY; 406 407 case ADDRESS_HOME_STATE: 408 return ADDRESS_BILLING_STATE; 409 410 case ADDRESS_HOME_ZIP: 411 return ADDRESS_BILLING_ZIP; 412 413 case ADDRESS_HOME_COUNTRY: 414 return ADDRESS_BILLING_COUNTRY; 415 416 case ADDRESS_HOME_STREET_ADDRESS: 417 return ADDRESS_BILLING_STREET_ADDRESS; 418 419 case ADDRESS_HOME_SORTING_CODE: 420 return ADDRESS_BILLING_SORTING_CODE; 421 422 case ADDRESS_HOME_DEPENDENT_LOCALITY: 423 return ADDRESS_BILLING_DEPENDENT_LOCALITY; 424 425 case PHONE_HOME_WHOLE_NUMBER: 426 return PHONE_BILLING_WHOLE_NUMBER; 427 428 case PHONE_HOME_NUMBER: 429 return PHONE_BILLING_NUMBER; 430 431 case PHONE_HOME_CITY_CODE: 432 return PHONE_BILLING_CITY_CODE; 433 434 case PHONE_HOME_COUNTRY_CODE: 435 return PHONE_BILLING_COUNTRY_CODE; 436 437 case PHONE_HOME_CITY_AND_NUMBER: 438 return PHONE_BILLING_CITY_AND_NUMBER; 439 440 case NAME_FIRST: 441 return NAME_BILLING_FIRST; 442 443 case NAME_MIDDLE: 444 return NAME_BILLING_MIDDLE; 445 446 case NAME_LAST: 447 return NAME_BILLING_LAST; 448 449 case NAME_MIDDLE_INITIAL: 450 return NAME_BILLING_MIDDLE_INITIAL; 451 452 case NAME_FULL: 453 return NAME_BILLING_FULL; 454 455 case NAME_SUFFIX: 456 return NAME_BILLING_SUFFIX; 457 458 default: 459 return field_type; 460 } 461 } 462 463 std::string AutofillType::ToString() const { 464 if (IsUnknown()) 465 return "UNKNOWN_TYPE"; 466 467 switch (server_type_) { 468 case NO_SERVER_DATA: 469 return "NO_SERVER_DATA"; 470 case UNKNOWN_TYPE: 471 break; // Should be handled in the HTML type handling code below. 472 case EMPTY_TYPE: 473 return "EMPTY_TYPE"; 474 case NAME_FIRST: 475 return "NAME_FIRST"; 476 case NAME_MIDDLE: 477 return "NAME_MIDDLE"; 478 case NAME_LAST: 479 return "NAME_LAST"; 480 case NAME_MIDDLE_INITIAL: 481 return "NAME_MIDDLE_INITIAL"; 482 case NAME_FULL: 483 return "NAME_FULL"; 484 case NAME_SUFFIX: 485 return "NAME_SUFFIX"; 486 case NAME_BILLING_FIRST: 487 return "NAME_BILLING_FIRST"; 488 case NAME_BILLING_MIDDLE: 489 return "NAME_BILLING_MIDDLE"; 490 case NAME_BILLING_LAST: 491 return "NAME_BILLING_LAST"; 492 case NAME_BILLING_MIDDLE_INITIAL: 493 return "NAME_BILLING_MIDDLE_INITIAL"; 494 case NAME_BILLING_FULL: 495 return "NAME_BILLING_FULL"; 496 case NAME_BILLING_SUFFIX: 497 return "NAME_BILLING_SUFFIX"; 498 case EMAIL_ADDRESS: 499 return "EMAIL_ADDRESS"; 500 case PHONE_HOME_NUMBER: 501 return "PHONE_HOME_NUMBER"; 502 case PHONE_HOME_CITY_CODE: 503 return "PHONE_HOME_CITY_CODE"; 504 case PHONE_HOME_COUNTRY_CODE: 505 return "PHONE_HOME_COUNTRY_CODE"; 506 case PHONE_HOME_CITY_AND_NUMBER: 507 return "PHONE_HOME_CITY_AND_NUMBER"; 508 case PHONE_HOME_WHOLE_NUMBER: 509 return "PHONE_HOME_WHOLE_NUMBER"; 510 case PHONE_FAX_NUMBER: 511 return "PHONE_FAX_NUMBER"; 512 case PHONE_FAX_CITY_CODE: 513 return "PHONE_FAX_CITY_CODE"; 514 case PHONE_FAX_COUNTRY_CODE: 515 return "PHONE_FAX_COUNTRY_CODE"; 516 case PHONE_FAX_CITY_AND_NUMBER: 517 return "PHONE_FAX_CITY_AND_NUMBER"; 518 case PHONE_FAX_WHOLE_NUMBER: 519 return "PHONE_FAX_WHOLE_NUMBER"; 520 case ADDRESS_HOME_LINE1: 521 return "ADDRESS_HOME_LINE1"; 522 case ADDRESS_HOME_LINE2: 523 return "ADDRESS_HOME_LINE2"; 524 case ADDRESS_HOME_LINE3: 525 return "ADDRESS_HOME_LINE3"; 526 case ADDRESS_HOME_APT_NUM: 527 return "ADDRESS_HOME_APT_NUM"; 528 case ADDRESS_HOME_CITY: 529 return "ADDRESS_HOME_CITY"; 530 case ADDRESS_HOME_STATE: 531 return "ADDRESS_HOME_STATE"; 532 case ADDRESS_HOME_ZIP: 533 return "ADDRESS_HOME_ZIP"; 534 case ADDRESS_HOME_COUNTRY: 535 return "ADDRESS_HOME_COUNTRY"; 536 case ADDRESS_BILLING_LINE1: 537 return "ADDRESS_BILLING_LINE1"; 538 case ADDRESS_BILLING_LINE2: 539 return "ADDRESS_BILLING_LINE2"; 540 case ADDRESS_BILLING_LINE3: 541 return "ADDRESS_BILLING_LINE3"; 542 case ADDRESS_BILLING_APT_NUM: 543 return "ADDRESS_BILLING_APT_NUM"; 544 case ADDRESS_BILLING_CITY: 545 return "ADDRESS_BILLING_CITY"; 546 case ADDRESS_BILLING_STATE: 547 return "ADDRESS_BILLING_STATE"; 548 case ADDRESS_BILLING_ZIP: 549 return "ADDRESS_BILLING_ZIP"; 550 case ADDRESS_BILLING_COUNTRY: 551 return "ADDRESS_BILLING_COUNTRY"; 552 case CREDIT_CARD_NAME: 553 return "CREDIT_CARD_NAME"; 554 case CREDIT_CARD_NUMBER: 555 return "CREDIT_CARD_NUMBER"; 556 case CREDIT_CARD_EXP_MONTH: 557 return "CREDIT_CARD_EXP_MONTH"; 558 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 559 return "CREDIT_CARD_EXP_2_DIGIT_YEAR"; 560 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 561 return "CREDIT_CARD_EXP_4_DIGIT_YEAR"; 562 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 563 return "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR"; 564 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 565 return "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR"; 566 case CREDIT_CARD_TYPE: 567 return "CREDIT_CARD_TYPE"; 568 case CREDIT_CARD_VERIFICATION_CODE: 569 return "CREDIT_CARD_VERIFICATION_CODE"; 570 case COMPANY_NAME: 571 return "COMPANY_NAME"; 572 case FIELD_WITH_DEFAULT_VALUE: 573 return "FIELD_WITH_DEFAULT_VALUE"; 574 case PHONE_BILLING_NUMBER: 575 return "PHONE_BILLING_NUMBER"; 576 case PHONE_BILLING_CITY_CODE: 577 return "PHONE_BILLING_CITY_CODE"; 578 case PHONE_BILLING_COUNTRY_CODE: 579 return "PHONE_BILLING_COUNTRY_CODE"; 580 case PHONE_BILLING_CITY_AND_NUMBER: 581 return "PHONE_BILLING_CITY_AND_NUMBER"; 582 case PHONE_BILLING_WHOLE_NUMBER: 583 return "PHONE_BILLING_WHOLE_NUMBER"; 584 case MERCHANT_EMAIL_SIGNUP: 585 return "MERCHANT_EMAIL_SIGNUP"; 586 case MERCHANT_PROMO_CODE: 587 return "MERCHANT_PROMO_CODE"; 588 case PASSWORD: 589 return "PASSWORD"; 590 case ACCOUNT_CREATION_PASSWORD: 591 return "ACCOUNT_CREATION_PASSWORD"; 592 case ADDRESS_HOME_STREET_ADDRESS: 593 return "ADDRESS_HOME_STREET_ADDRESS"; 594 case ADDRESS_BILLING_STREET_ADDRESS: 595 return "ADDRESS_BILLING_STREET_ADDRESS"; 596 case ADDRESS_HOME_SORTING_CODE: 597 return "ADDRESS_HOME_SORTING_CODE"; 598 case ADDRESS_BILLING_SORTING_CODE: 599 return "ADDRESS_BILLING_SORTING_CODE"; 600 case ADDRESS_HOME_DEPENDENT_LOCALITY: 601 return "ADDRESS_HOME_DEPENDENT_LOCALITY"; 602 case ADDRESS_BILLING_DEPENDENT_LOCALITY: 603 return "ADDRESS_BILLING_DEPENDENT_LOCALITY"; 604 605 case MAX_VALID_FIELD_TYPE: 606 return std::string(); 607 } 608 609 switch (html_type_) { 610 case HTML_TYPE_UNKNOWN: 611 NOTREACHED(); 612 break; 613 case HTML_TYPE_NAME: 614 return "HTML_TYPE_NAME"; 615 case HTML_TYPE_GIVEN_NAME: 616 return "HTML_TYPE_GIVEN_NAME"; 617 case HTML_TYPE_ADDITIONAL_NAME: 618 return "HTML_TYPE_ADDITIONAL_NAME"; 619 case HTML_TYPE_FAMILY_NAME: 620 return "HTML_TYPE_FAMILY_NAME"; 621 case HTML_TYPE_ORGANIZATION: 622 return "HTML_TYPE_ORGANIZATION"; 623 case HTML_TYPE_STREET_ADDRESS: 624 return "HTML_TYPE_STREET_ADDRESS"; 625 case HTML_TYPE_ADDRESS_LINE1: 626 return "HTML_TYPE_ADDRESS_LINE1"; 627 case HTML_TYPE_ADDRESS_LINE2: 628 return "HTML_TYPE_ADDRESS_LINE2"; 629 case HTML_TYPE_ADDRESS_LINE3: 630 return "HTML_TYPE_ADDRESS_LINE3"; 631 case HTML_TYPE_ADDRESS_LEVEL1: 632 return "HTML_TYPE_ADDRESS_LEVEL1"; 633 case HTML_TYPE_ADDRESS_LEVEL2: 634 return "HTML_TYPE_ADDRESS_LEVEL2"; 635 case HTML_TYPE_ADDRESS_LEVEL3: 636 return "HTML_TYPE_ADDRESS_LEVEL3"; 637 case HTML_TYPE_COUNTRY_CODE: 638 return "HTML_TYPE_COUNTRY_CODE"; 639 case HTML_TYPE_COUNTRY_NAME: 640 return "HTML_TYPE_COUNTRY_NAME"; 641 case HTML_TYPE_POSTAL_CODE: 642 return "HTML_TYPE_POSTAL_CODE"; 643 case HTML_TYPE_FULL_ADDRESS: 644 return "HTML_TYPE_FULL_ADDRESS"; 645 case HTML_TYPE_CREDIT_CARD_NAME: 646 return "HTML_TYPE_CREDIT_CARD_NAME"; 647 case HTML_TYPE_CREDIT_CARD_NUMBER: 648 return "HTML_TYPE_CREDIT_CARD_NUMBER"; 649 case HTML_TYPE_CREDIT_CARD_EXP: 650 return "HTML_TYPE_CREDIT_CARD_EXP"; 651 case HTML_TYPE_CREDIT_CARD_EXP_MONTH: 652 return "HTML_TYPE_CREDIT_CARD_EXP_MONTH"; 653 case HTML_TYPE_CREDIT_CARD_EXP_YEAR: 654 return "HTML_TYPE_CREDIT_CARD_EXP_YEAR"; 655 case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE: 656 return "HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE"; 657 case HTML_TYPE_CREDIT_CARD_TYPE: 658 return "HTML_TYPE_CREDIT_CARD_TYPE"; 659 case HTML_TYPE_TEL: 660 return "HTML_TYPE_TEL"; 661 case HTML_TYPE_TEL_COUNTRY_CODE: 662 return "HTML_TYPE_TEL_COUNTRY_CODE"; 663 case HTML_TYPE_TEL_NATIONAL: 664 return "HTML_TYPE_TEL_NATIONAL"; 665 case HTML_TYPE_TEL_AREA_CODE: 666 return "HTML_TYPE_TEL_AREA_CODE"; 667 case HTML_TYPE_TEL_LOCAL: 668 return "HTML_TYPE_TEL_LOCAL"; 669 case HTML_TYPE_TEL_LOCAL_PREFIX: 670 return "HTML_TYPE_TEL_LOCAL_PREFIX"; 671 case HTML_TYPE_TEL_LOCAL_SUFFIX: 672 return "HTML_TYPE_TEL_LOCAL_SUFFIX"; 673 case HTML_TYPE_EMAIL: 674 return "HTML_TYPE_EMAIL"; 675 case HTML_TYPE_ADDITIONAL_NAME_INITIAL: 676 return "HTML_TYPE_ADDITIONAL_NAME_INITIAL"; 677 case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 678 return "HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR"; 679 case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 680 return "HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR"; 681 case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR: 682 return "HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR"; 683 case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR: 684 return "HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR"; 685 } 686 687 NOTREACHED(); 688 return std::string(); 689 } 690 691 } // namespace autofill 692