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