autofill_type.cc revision a36e5920737c6adbddd3e43b760e5de8431db6e0
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 <ostream> 8 9#include "base/logging.h" 10 11namespace autofill { 12 13AutofillType::AutofillType(AutofillFieldType field_type) { 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 field_type_ = UNKNOWN_TYPE; 19 else 20 field_type_ = field_type; 21} 22 23AutofillType::AutofillType(const AutofillType& autofill_type) { 24 *this = autofill_type; 25} 26 27AutofillType& AutofillType::operator=(const AutofillType& autofill_type) { 28 if (this != &autofill_type) 29 this->field_type_ = autofill_type.field_type_; 30 return *this; 31} 32 33AutofillFieldType AutofillType::field_type() const { 34 return field_type_; 35} 36 37FieldTypeGroup AutofillType::group() const { 38 switch (field_type_) { 39 case NAME_FIRST: 40 case NAME_MIDDLE: 41 case NAME_LAST: 42 case NAME_MIDDLE_INITIAL: 43 case NAME_FULL: 44 case NAME_SUFFIX: 45 return NAME; 46 47 case NAME_BILLING_FIRST: 48 case NAME_BILLING_MIDDLE: 49 case NAME_BILLING_LAST: 50 case NAME_BILLING_MIDDLE_INITIAL: 51 case NAME_BILLING_FULL: 52 case NAME_BILLING_SUFFIX: 53 return NAME_BILLING; 54 55 case EMAIL_ADDRESS: 56 return EMAIL; 57 58 case PHONE_HOME_NUMBER: 59 case PHONE_HOME_CITY_CODE: 60 case PHONE_HOME_COUNTRY_CODE: 61 case PHONE_HOME_CITY_AND_NUMBER: 62 case PHONE_HOME_WHOLE_NUMBER: 63 return PHONE_HOME; 64 65 case PHONE_BILLING_NUMBER: 66 case PHONE_BILLING_CITY_CODE: 67 case PHONE_BILLING_COUNTRY_CODE: 68 case PHONE_BILLING_CITY_AND_NUMBER: 69 case PHONE_BILLING_WHOLE_NUMBER: 70 return PHONE_BILLING; 71 72 case ADDRESS_HOME_LINE1: 73 case ADDRESS_HOME_LINE2: 74 case ADDRESS_HOME_APT_NUM: 75 case ADDRESS_HOME_CITY: 76 case ADDRESS_HOME_STATE: 77 case ADDRESS_HOME_ZIP: 78 case ADDRESS_HOME_COUNTRY: 79 return ADDRESS_HOME; 80 81 case ADDRESS_BILLING_LINE1: 82 case ADDRESS_BILLING_LINE2: 83 case ADDRESS_BILLING_APT_NUM: 84 case ADDRESS_BILLING_CITY: 85 case ADDRESS_BILLING_STATE: 86 case ADDRESS_BILLING_ZIP: 87 case ADDRESS_BILLING_COUNTRY: 88 return ADDRESS_BILLING; 89 90 case CREDIT_CARD_NAME: 91 case CREDIT_CARD_NUMBER: 92 case CREDIT_CARD_EXP_MONTH: 93 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 94 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 95 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 96 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 97 case CREDIT_CARD_TYPE: 98 case CREDIT_CARD_VERIFICATION_CODE: 99 return CREDIT_CARD; 100 101 case COMPANY_NAME: 102 return COMPANY; 103 104 default: 105 return NO_GROUP; 106 } 107} 108 109// static 110AutofillFieldType AutofillType::GetEquivalentFieldType( 111 AutofillFieldType field_type) { 112 // When billing information is requested from the profile we map to the 113 // home address equivalents. 114 switch (field_type) { 115 case ADDRESS_BILLING_LINE1: 116 return ADDRESS_HOME_LINE1; 117 118 case ADDRESS_BILLING_LINE2: 119 return ADDRESS_HOME_LINE2; 120 121 case ADDRESS_BILLING_APT_NUM: 122 return ADDRESS_HOME_APT_NUM; 123 124 case ADDRESS_BILLING_CITY: 125 return ADDRESS_HOME_CITY; 126 127 case ADDRESS_BILLING_STATE: 128 return ADDRESS_HOME_STATE; 129 130 case ADDRESS_BILLING_ZIP: 131 return ADDRESS_HOME_ZIP; 132 133 case ADDRESS_BILLING_COUNTRY: 134 return ADDRESS_HOME_COUNTRY; 135 136 case PHONE_BILLING_WHOLE_NUMBER: 137 return PHONE_HOME_WHOLE_NUMBER; 138 139 case PHONE_BILLING_NUMBER: 140 return PHONE_HOME_NUMBER; 141 142 case PHONE_BILLING_CITY_CODE: 143 return PHONE_HOME_CITY_CODE; 144 145 case PHONE_BILLING_COUNTRY_CODE: 146 return PHONE_HOME_COUNTRY_CODE; 147 148 case PHONE_BILLING_CITY_AND_NUMBER: 149 return PHONE_HOME_CITY_AND_NUMBER; 150 151 case NAME_BILLING_FIRST: 152 return NAME_FIRST; 153 154 case NAME_BILLING_MIDDLE: 155 return NAME_MIDDLE; 156 157 case NAME_BILLING_LAST: 158 return NAME_LAST; 159 160 case NAME_BILLING_MIDDLE_INITIAL: 161 return NAME_MIDDLE_INITIAL; 162 163 case NAME_BILLING_FULL: 164 return NAME_FULL; 165 166 case NAME_BILLING_SUFFIX: 167 return NAME_SUFFIX; 168 169 default: 170 return field_type; 171 } 172} 173 174// static 175AutofillFieldType AutofillType::GetEquivalentBillingFieldType( 176 AutofillFieldType field_type) { 177 switch (field_type) { 178 case ADDRESS_HOME_LINE1: 179 return ADDRESS_BILLING_LINE1; 180 181 case ADDRESS_HOME_LINE2: 182 return ADDRESS_BILLING_LINE2; 183 184 case ADDRESS_HOME_APT_NUM: 185 return ADDRESS_BILLING_APT_NUM; 186 187 case ADDRESS_HOME_CITY: 188 return ADDRESS_BILLING_CITY; 189 190 case ADDRESS_HOME_STATE: 191 return ADDRESS_BILLING_STATE; 192 193 case ADDRESS_HOME_ZIP: 194 return ADDRESS_BILLING_ZIP; 195 196 case ADDRESS_HOME_COUNTRY: 197 return ADDRESS_BILLING_COUNTRY; 198 199 case PHONE_HOME_WHOLE_NUMBER: 200 return PHONE_BILLING_WHOLE_NUMBER; 201 202 case PHONE_HOME_NUMBER: 203 return PHONE_BILLING_NUMBER; 204 205 case PHONE_HOME_CITY_CODE: 206 return PHONE_BILLING_CITY_CODE; 207 208 case PHONE_HOME_COUNTRY_CODE: 209 return PHONE_BILLING_COUNTRY_CODE; 210 211 case PHONE_HOME_CITY_AND_NUMBER: 212 return PHONE_BILLING_CITY_AND_NUMBER; 213 214 case NAME_FIRST: 215 return NAME_BILLING_FIRST; 216 217 case NAME_MIDDLE: 218 return NAME_BILLING_MIDDLE; 219 220 case NAME_LAST: 221 return NAME_BILLING_LAST; 222 223 case NAME_MIDDLE_INITIAL: 224 return NAME_BILLING_MIDDLE_INITIAL; 225 226 case NAME_FULL: 227 return NAME_BILLING_FULL; 228 229 case NAME_SUFFIX: 230 return NAME_BILLING_SUFFIX; 231 232 default: 233 return field_type; 234 } 235} 236 237// static 238std::string AutofillType::FieldTypeToString(AutofillFieldType type) { 239 switch (type) { 240 case NO_SERVER_DATA: 241 return "NO_SERVER_DATA"; 242 case UNKNOWN_TYPE: 243 return "UNKNOWN_TYPE"; 244 case EMPTY_TYPE: 245 return "EMPTY_TYPE"; 246 case NAME_FIRST: 247 return "NAME_FIRST"; 248 case NAME_MIDDLE: 249 return "NAME_MIDDLE"; 250 case NAME_LAST: 251 return "NAME_LAST"; 252 case NAME_MIDDLE_INITIAL: 253 return "NAME_MIDDLE_INITIAL"; 254 case NAME_FULL: 255 return "NAME_FULL"; 256 case NAME_SUFFIX: 257 return "NAME_SUFFIX"; 258 case NAME_BILLING_FIRST: 259 return "NAME_BILLING_FIRST"; 260 case NAME_BILLING_MIDDLE: 261 return "NAME_BILLING_MIDDLE"; 262 case NAME_BILLING_LAST: 263 return "NAME_BILLING_LAST"; 264 case NAME_BILLING_MIDDLE_INITIAL: 265 return "NAME_BILLING_MIDDLE_INITIAL"; 266 case NAME_BILLING_FULL: 267 return "NAME_BILLING_FULL"; 268 case NAME_BILLING_SUFFIX: 269 return "NAME_BILLING_SUFFIX"; 270 case EMAIL_ADDRESS: 271 return "EMAIL_ADDRESS"; 272 case PHONE_HOME_NUMBER: 273 return "PHONE_HOME_NUMBER"; 274 case PHONE_HOME_CITY_CODE: 275 return "PHONE_HOME_CITY_CODE"; 276 case PHONE_HOME_COUNTRY_CODE: 277 return "PHONE_HOME_COUNTRY_CODE"; 278 case PHONE_HOME_CITY_AND_NUMBER: 279 return "PHONE_HOME_CITY_AND_NUMBER"; 280 case PHONE_HOME_WHOLE_NUMBER: 281 return "PHONE_HOME_WHOLE_NUMBER"; 282 case PHONE_FAX_NUMBER: 283 return "PHONE_FAX_NUMBER"; 284 case PHONE_FAX_CITY_CODE: 285 return "PHONE_FAX_CITY_CODE"; 286 case PHONE_FAX_COUNTRY_CODE: 287 return "PHONE_FAX_COUNTRY_CODE"; 288 case PHONE_FAX_CITY_AND_NUMBER: 289 return "PHONE_FAX_CITY_AND_NUMBER"; 290 case PHONE_FAX_WHOLE_NUMBER: 291 return "PHONE_FAX_WHOLE_NUMBER"; 292 case ADDRESS_HOME_LINE1: 293 return "ADDRESS_HOME_LINE1"; 294 case ADDRESS_HOME_LINE2: 295 return "ADDRESS_HOME_LINE2"; 296 case ADDRESS_HOME_APT_NUM: 297 return "ADDRESS_HOME_APT_NUM"; 298 case ADDRESS_HOME_CITY: 299 return "ADDRESS_HOME_CITY"; 300 case ADDRESS_HOME_STATE: 301 return "ADDRESS_HOME_STATE"; 302 case ADDRESS_HOME_ZIP: 303 return "ADDRESS_HOME_ZIP"; 304 case ADDRESS_HOME_COUNTRY: 305 return "ADDRESS_HOME_COUNTRY"; 306 case ADDRESS_BILLING_LINE1: 307 return "ADDRESS_BILLING_LINE1"; 308 case ADDRESS_BILLING_LINE2: 309 return "ADDRESS_BILLING_LINE2"; 310 case ADDRESS_BILLING_APT_NUM: 311 return "ADDRESS_BILLING_APT_NUM"; 312 case ADDRESS_BILLING_CITY: 313 return "ADDRESS_BILLING_CITY"; 314 case ADDRESS_BILLING_STATE: 315 return "ADDRESS_BILLING_STATE"; 316 case ADDRESS_BILLING_ZIP: 317 return "ADDRESS_BILLING_ZIP"; 318 case ADDRESS_BILLING_COUNTRY: 319 return "ADDRESS_BILLING_COUNTRY"; 320 case CREDIT_CARD_NAME: 321 return "CREDIT_CARD_NAME"; 322 case CREDIT_CARD_NUMBER: 323 return "CREDIT_CARD_NUMBER"; 324 case CREDIT_CARD_EXP_MONTH: 325 return "CREDIT_CARD_EXP_MONTH"; 326 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 327 return "CREDIT_CARD_EXP_2_DIGIT_YEAR"; 328 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 329 return "CREDIT_CARD_EXP_4_DIGIT_YEAR"; 330 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 331 return "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR"; 332 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 333 return "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR"; 334 case CREDIT_CARD_TYPE: 335 return "CREDIT_CARD_TYPE"; 336 case CREDIT_CARD_VERIFICATION_CODE: 337 return "CREDIT_CARD_VERIFICATION_CODE"; 338 case COMPANY_NAME: 339 return "COMPANY_NAME"; 340 case FIELD_WITH_DEFAULT_VALUE: 341 return "FIELD_WITH_DEFAULT_VALUE"; 342 case PHONE_BILLING_NUMBER: 343 return "PHONE_BILLING_NUMBER"; 344 case PHONE_BILLING_CITY_CODE: 345 return "PHONE_BILLING_CITY_CODE"; 346 case PHONE_BILLING_COUNTRY_CODE: 347 return "PHONE_BILLING_COUNTRY_CODE"; 348 case PHONE_BILLING_CITY_AND_NUMBER: 349 return "PHONE_BILLING_CITY_AND_NUMBER"; 350 case PHONE_BILLING_WHOLE_NUMBER: 351 return "PHONE_BILLING_WHOLE_NUMBER"; 352 case MAX_VALID_FIELD_TYPE: 353 return std::string(); 354 } 355 return std::string(); 356} 357 358// static 359AutofillFieldType AutofillType::StringToFieldType(const std::string& str) { 360 if (str == "NO_SERVER_DATA") 361 return NO_SERVER_DATA; 362 if (str == "UNKNOWN_TYPE") 363 return UNKNOWN_TYPE; 364 if (str == "EMPTY_TYPE") 365 return EMPTY_TYPE; 366 if (str == "NAME_FIRST") 367 return NAME_FIRST; 368 if (str == "NAME_MIDDLE") 369 return NAME_MIDDLE; 370 if (str == "NAME_LAST") 371 return NAME_LAST; 372 if (str == "NAME_MIDDLE_INITIAL") 373 return NAME_MIDDLE_INITIAL; 374 if (str == "NAME_FULL") 375 return NAME_FULL; 376 if (str == "NAME_SUFFIX") 377 return NAME_SUFFIX; 378 if (str == "NAME_BILLING_FIRST") 379 return NAME_BILLING_FIRST; 380 if (str == "NAME_BILLING_MIDDLE") 381 return NAME_BILLING_MIDDLE; 382 if (str == "NAME_BILLING_LAST") 383 return NAME_BILLING_LAST; 384 if (str == "NAME_BILLING_MIDDLE_INITIAL") 385 return NAME_BILLING_MIDDLE_INITIAL; 386 if (str == "NAME_BILLING_FULL") 387 return NAME_BILLING_FULL; 388 if (str == "NAME_BILLING_SUFFIX") 389 return NAME_BILLING_SUFFIX; 390 if (str == "EMAIL_ADDRESS") 391 return EMAIL_ADDRESS; 392 if (str == "PHONE_HOME_NUMBER") 393 return PHONE_HOME_NUMBER; 394 if (str == "PHONE_HOME_CITY_CODE") 395 return PHONE_HOME_CITY_CODE; 396 if (str == "PHONE_HOME_COUNTRY_CODE") 397 return PHONE_HOME_COUNTRY_CODE; 398 if (str == "PHONE_HOME_CITY_AND_NUMBER") 399 return PHONE_HOME_CITY_AND_NUMBER; 400 if (str == "PHONE_HOME_WHOLE_NUMBER") 401 return PHONE_HOME_WHOLE_NUMBER; 402 if (str == "ADDRESS_HOME_LINE1") 403 return ADDRESS_HOME_LINE1; 404 if (str == "ADDRESS_HOME_LINE2") 405 return ADDRESS_HOME_LINE2; 406 if (str == "ADDRESS_HOME_APT_NUM") 407 return ADDRESS_HOME_APT_NUM; 408 if (str == "ADDRESS_HOME_CITY") 409 return ADDRESS_HOME_CITY; 410 if (str == "ADDRESS_HOME_STATE") 411 return ADDRESS_HOME_STATE; 412 if (str == "ADDRESS_HOME_ZIP") 413 return ADDRESS_HOME_ZIP; 414 if (str == "ADDRESS_HOME_COUNTRY") 415 return ADDRESS_HOME_COUNTRY; 416 if (str == "ADDRESS_BILLING_LINE1") 417 return ADDRESS_BILLING_LINE1; 418 if (str == "ADDRESS_BILLING_LINE2") 419 return ADDRESS_BILLING_LINE2; 420 if (str == "ADDRESS_BILLING_APT_NUM") 421 return ADDRESS_BILLING_APT_NUM; 422 if (str == "ADDRESS_BILLING_CITY") 423 return ADDRESS_BILLING_CITY; 424 if (str == "ADDRESS_BILLING_STATE") 425 return ADDRESS_BILLING_STATE; 426 if (str == "ADDRESS_BILLING_ZIP") 427 return ADDRESS_BILLING_ZIP; 428 if (str == "ADDRESS_BILLING_COUNTRY") 429 return ADDRESS_BILLING_COUNTRY; 430 if (str == "CREDIT_CARD_NAME") 431 return CREDIT_CARD_NAME; 432 if (str == "CREDIT_CARD_NUMBER") 433 return CREDIT_CARD_NUMBER; 434 if (str == "CREDIT_CARD_EXP_MONTH") 435 return CREDIT_CARD_EXP_MONTH; 436 if (str == "CREDIT_CARD_EXP_2_DIGIT_YEAR") 437 return CREDIT_CARD_EXP_2_DIGIT_YEAR; 438 if (str == "CREDIT_CARD_EXP_4_DIGIT_YEAR") 439 return CREDIT_CARD_EXP_4_DIGIT_YEAR; 440 if (str == "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR") 441 return CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR; 442 if (str == "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR") 443 return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR; 444 if (str == "CREDIT_CARD_TYPE") 445 return CREDIT_CARD_TYPE; 446 if (str == "CREDIT_CARD_VERIFICATION_CODE") 447 return CREDIT_CARD_VERIFICATION_CODE; 448 if (str == "COMPANY_NAME") 449 return COMPANY_NAME; 450 451 NOTREACHED() << "Unknown AutofillFieldType " << str; 452 return UNKNOWN_TYPE; 453} 454 455} // namespace autofill 456