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