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