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