blob: c47a9dfb0ceb311a00cce4f1bc8d669ecc698edc [file] [log] [blame]
Ben Murdocheb525c52013-07-10 11:40:50 +01001// 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
Ben Murdocheb525c52013-07-10 11:40:50 +01007#include "base/logging.h"
8
9namespace autofill {
10
Ben Murdochbb1529c2013-08-08 10:24:53 +010011AutofillType::AutofillType(ServerFieldType field_type)
12 : html_type_(HTML_TYPE_UNKNOWN),
13 html_mode_(HTML_MODE_NONE) {
Ben Murdocheb525c52013-07-10 11:40:50 +010014 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) ||
Ben Murdoch32409262013-08-07 11:04:47 +010017 (field_type >= 44 && field_type <= 50)) {
18 server_type_ = UNKNOWN_TYPE;
19 } else {
20 server_type_ = field_type;
21 }
Ben Murdocheb525c52013-07-10 11:40:50 +010022}
23
Ben Murdochbb1529c2013-08-08 10:24:53 +010024AutofillType::AutofillType(HtmlFieldType field_type, HtmlFieldMode mode)
25 : server_type_(UNKNOWN_TYPE),
26 html_type_(field_type),
27 html_mode_(mode) {}
28
29
Ben Murdocheb525c52013-07-10 11:40:50 +010030AutofillType::AutofillType(const AutofillType& autofill_type) {
31 *this = autofill_type;
32}
33
34AutofillType& AutofillType::operator=(const AutofillType& autofill_type) {
Ben Murdochbb1529c2013-08-08 10:24:53 +010035 if (this != &autofill_type) {
Ben Murdoch32409262013-08-07 11:04:47 +010036 this->server_type_ = autofill_type.server_type_;
Ben Murdochbb1529c2013-08-08 10:24:53 +010037 this->html_type_ = autofill_type.html_type_;
38 this->html_mode_ = autofill_type.html_mode_;
39 }
40
Ben Murdocheb525c52013-07-10 11:40:50 +010041 return *this;
42}
43
Ben Murdocheb525c52013-07-10 11:40:50 +010044FieldTypeGroup AutofillType::group() const {
Ben Murdoch32409262013-08-07 11:04:47 +010045 switch (server_type_) {
Ben Murdocheb525c52013-07-10 11:40:50 +010046 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
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +010054 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
Ben Murdocheb525c52013-07-10 11:40:50 +010062 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
Ben Murdochbb1529c2013-08-08 10:24:53 +0100111 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:
Ben Murdocheb525c52013-07-10 11:40:50 +0100119 return NO_GROUP;
Ben Murdochbb1529c2013-08-08 10:24:53 +0100120
121 case MAX_VALID_FIELD_TYPE:
122 NOTREACHED();
123 return NO_GROUP;
124
125 case UNKNOWN_TYPE:
126 break;
Ben Murdocheb525c52013-07-10 11:40:50 +0100127 }
Ben Murdochbb1529c2013-08-08 10:24:53 +0100128
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;
Ben Murdocheb525c52013-07-10 11:40:50 +0100179}
180
Ben Murdochbb1529c2013-08-08 10:24:53 +0100181bool 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_) {
Ben Murdocheb525c52013-07-10 11:40:50 +0100188 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
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100224 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
Ben Murdochbb1529c2013-08-08 10:24:53 +0100242 case UNKNOWN_TYPE:
243 break; // Try to parse HTML types instead.
244
Ben Murdocheb525c52013-07-10 11:40:50 +0100245 default:
Ben Murdochbb1529c2013-08-08 10:24:53 +0100246 return server_type_;
Ben Murdocheb525c52013-07-10 11:40:50 +0100247 }
Ben Murdochbb1529c2013-08-08 10:24:53 +0100248
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;
Ben Murdocheb525c52013-07-10 11:40:50 +0100346}
347
348// static
Ben Murdoch32409262013-08-07 11:04:47 +0100349ServerFieldType AutofillType::GetEquivalentBillingFieldType(
350 ServerFieldType field_type) {
Ben Murdocheb525c52013-07-10 11:40:50 +0100351 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
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100388 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
Ben Murdocheb525c52013-07-10 11:40:50 +0100406 default:
407 return field_type;
408 }
409}
410
Ben Murdochbb1529c2013-08-08 10:24:53 +0100411std::string AutofillType::ToString() const {
412 if (IsUnknown())
413 return "UNKNOWN_TYPE";
414
415 switch (server_type_) {
Ben Murdocheb525c52013-07-10 11:40:50 +0100416 case NO_SERVER_DATA:
417 return "NO_SERVER_DATA";
418 case UNKNOWN_TYPE:
Ben Murdochbb1529c2013-08-08 10:24:53 +0100419 break; // Should be handled in the HTML type handling code below.
Ben Murdocheb525c52013-07-10 11:40:50 +0100420 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";
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100434 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";
Ben Murdocheb525c52013-07-10 11:40:50 +0100446 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";
Ben Murdoch7dbb3d52013-07-17 14:55:54 +0100458 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";
Ben Murdocheb525c52013-07-10 11:40:50 +0100468 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";
Ben Murdoch7dbb3d52013-07-17 14:55:54 +0100516 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();
Ben Murdocheb525c52013-07-10 11:40:50 +0100530 }
Ben Murdochbb1529c2013-08-08 10:24:53 +0100531
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();
Ben Murdocheb525c52013-07-10 11:40:50 +0100603 return std::string();
604}
605
606// static
Ben Murdoch32409262013-08-07 11:04:47 +0100607ServerFieldType AutofillType::StringToFieldType(const std::string& str) {
Ben Murdocheb525c52013-07-10 11:40:50 +0100608 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;
Torne (Richard Coles)a36e5922013-08-05 13:57:33 +0100626 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;
Ben Murdocheb525c52013-07-10 11:40:50 +0100638 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
Ben Murdoch32409262013-08-07 11:04:47 +0100699 NOTREACHED() << "Unknown ServerFieldType " << str;
Ben Murdocheb525c52013-07-10 11:40:50 +0100700 return UNKNOWN_TYPE;
701}
702
703} // namespace autofill