Home | History | Annotate | Download | only in browser
      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