autofill_type.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
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 EMAIL_ADDRESS: 48 return EMAIL; 49 50 case PHONE_HOME_NUMBER: 51 case PHONE_HOME_CITY_CODE: 52 case PHONE_HOME_COUNTRY_CODE: 53 case PHONE_HOME_CITY_AND_NUMBER: 54 case PHONE_HOME_WHOLE_NUMBER: 55 return PHONE_HOME; 56 57 case PHONE_BILLING_NUMBER: 58 case PHONE_BILLING_CITY_CODE: 59 case PHONE_BILLING_COUNTRY_CODE: 60 case PHONE_BILLING_CITY_AND_NUMBER: 61 case PHONE_BILLING_WHOLE_NUMBER: 62 return PHONE_BILLING; 63 64 case ADDRESS_HOME_LINE1: 65 case ADDRESS_HOME_LINE2: 66 case ADDRESS_HOME_APT_NUM: 67 case ADDRESS_HOME_CITY: 68 case ADDRESS_HOME_STATE: 69 case ADDRESS_HOME_ZIP: 70 case ADDRESS_HOME_COUNTRY: 71 return ADDRESS_HOME; 72 73 case ADDRESS_BILLING_LINE1: 74 case ADDRESS_BILLING_LINE2: 75 case ADDRESS_BILLING_APT_NUM: 76 case ADDRESS_BILLING_CITY: 77 case ADDRESS_BILLING_STATE: 78 case ADDRESS_BILLING_ZIP: 79 case ADDRESS_BILLING_COUNTRY: 80 return ADDRESS_BILLING; 81 82 case CREDIT_CARD_NAME: 83 case CREDIT_CARD_NUMBER: 84 case CREDIT_CARD_EXP_MONTH: 85 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 86 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 87 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 88 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 89 case CREDIT_CARD_TYPE: 90 case CREDIT_CARD_VERIFICATION_CODE: 91 return CREDIT_CARD; 92 93 case COMPANY_NAME: 94 return COMPANY; 95 96 default: 97 return NO_GROUP; 98 } 99} 100 101// static 102AutofillFieldType AutofillType::GetEquivalentFieldType( 103 AutofillFieldType field_type) { 104 // When billing information is requested from the profile we map to the 105 // home address equivalents. 106 switch (field_type) { 107 case ADDRESS_BILLING_LINE1: 108 return ADDRESS_HOME_LINE1; 109 110 case ADDRESS_BILLING_LINE2: 111 return ADDRESS_HOME_LINE2; 112 113 case ADDRESS_BILLING_APT_NUM: 114 return ADDRESS_HOME_APT_NUM; 115 116 case ADDRESS_BILLING_CITY: 117 return ADDRESS_HOME_CITY; 118 119 case ADDRESS_BILLING_STATE: 120 return ADDRESS_HOME_STATE; 121 122 case ADDRESS_BILLING_ZIP: 123 return ADDRESS_HOME_ZIP; 124 125 case ADDRESS_BILLING_COUNTRY: 126 return ADDRESS_HOME_COUNTRY; 127 128 case PHONE_BILLING_WHOLE_NUMBER: 129 return PHONE_HOME_WHOLE_NUMBER; 130 131 case PHONE_BILLING_NUMBER: 132 return PHONE_HOME_NUMBER; 133 134 case PHONE_BILLING_CITY_CODE: 135 return PHONE_HOME_CITY_CODE; 136 137 case PHONE_BILLING_COUNTRY_CODE: 138 return PHONE_HOME_COUNTRY_CODE; 139 140 case PHONE_BILLING_CITY_AND_NUMBER: 141 return PHONE_HOME_CITY_AND_NUMBER; 142 143 default: 144 return field_type; 145 } 146} 147 148// static 149AutofillFieldType AutofillType::GetEquivalentBillingFieldType( 150 AutofillFieldType field_type) { 151 switch (field_type) { 152 case ADDRESS_HOME_LINE1: 153 return ADDRESS_BILLING_LINE1; 154 155 case ADDRESS_HOME_LINE2: 156 return ADDRESS_BILLING_LINE2; 157 158 case ADDRESS_HOME_APT_NUM: 159 return ADDRESS_BILLING_APT_NUM; 160 161 case ADDRESS_HOME_CITY: 162 return ADDRESS_BILLING_CITY; 163 164 case ADDRESS_HOME_STATE: 165 return ADDRESS_BILLING_STATE; 166 167 case ADDRESS_HOME_ZIP: 168 return ADDRESS_BILLING_ZIP; 169 170 case ADDRESS_HOME_COUNTRY: 171 return ADDRESS_BILLING_COUNTRY; 172 173 case PHONE_HOME_WHOLE_NUMBER: 174 return PHONE_BILLING_WHOLE_NUMBER; 175 176 case PHONE_HOME_NUMBER: 177 return PHONE_BILLING_NUMBER; 178 179 case PHONE_HOME_CITY_CODE: 180 return PHONE_BILLING_CITY_CODE; 181 182 case PHONE_HOME_COUNTRY_CODE: 183 return PHONE_BILLING_COUNTRY_CODE; 184 185 case PHONE_HOME_CITY_AND_NUMBER: 186 return PHONE_BILLING_CITY_AND_NUMBER; 187 188 default: 189 return field_type; 190 } 191} 192 193// static 194std::string AutofillType::FieldTypeToString(AutofillFieldType type) { 195 switch (type) { 196 case NO_SERVER_DATA: 197 return "NO_SERVER_DATA"; 198 case UNKNOWN_TYPE: 199 return "UNKNOWN_TYPE"; 200 case EMPTY_TYPE: 201 return "EMPTY_TYPE"; 202 case NAME_FIRST: 203 return "NAME_FIRST"; 204 case NAME_MIDDLE: 205 return "NAME_MIDDLE"; 206 case NAME_LAST: 207 return "NAME_LAST"; 208 case NAME_MIDDLE_INITIAL: 209 return "NAME_MIDDLE_INITIAL"; 210 case NAME_FULL: 211 return "NAME_FULL"; 212 case NAME_SUFFIX: 213 return "NAME_SUFFIX"; 214 case EMAIL_ADDRESS: 215 return "EMAIL_ADDRESS"; 216 case PHONE_HOME_NUMBER: 217 return "PHONE_HOME_NUMBER"; 218 case PHONE_HOME_CITY_CODE: 219 return "PHONE_HOME_CITY_CODE"; 220 case PHONE_HOME_COUNTRY_CODE: 221 return "PHONE_HOME_COUNTRY_CODE"; 222 case PHONE_HOME_CITY_AND_NUMBER: 223 return "PHONE_HOME_CITY_AND_NUMBER"; 224 case PHONE_HOME_WHOLE_NUMBER: 225 return "PHONE_HOME_WHOLE_NUMBER"; 226 case PHONE_FAX_NUMBER: 227 return "PHONE_FAX_NUMBER"; 228 case PHONE_FAX_CITY_CODE: 229 return "PHONE_FAX_CITY_CODE"; 230 case PHONE_FAX_COUNTRY_CODE: 231 return "PHONE_FAX_COUNTRY_CODE"; 232 case PHONE_FAX_CITY_AND_NUMBER: 233 return "PHONE_FAX_CITY_AND_NUMBER"; 234 case PHONE_FAX_WHOLE_NUMBER: 235 return "PHONE_FAX_WHOLE_NUMBER"; 236 case ADDRESS_HOME_LINE1: 237 return "ADDRESS_HOME_LINE1"; 238 case ADDRESS_HOME_LINE2: 239 return "ADDRESS_HOME_LINE2"; 240 case ADDRESS_HOME_APT_NUM: 241 return "ADDRESS_HOME_APT_NUM"; 242 case ADDRESS_HOME_CITY: 243 return "ADDRESS_HOME_CITY"; 244 case ADDRESS_HOME_STATE: 245 return "ADDRESS_HOME_STATE"; 246 case ADDRESS_HOME_ZIP: 247 return "ADDRESS_HOME_ZIP"; 248 case ADDRESS_HOME_COUNTRY: 249 return "ADDRESS_HOME_COUNTRY"; 250 case ADDRESS_BILLING_LINE1: 251 return "ADDRESS_BILLING_LINE1"; 252 case ADDRESS_BILLING_LINE2: 253 return "ADDRESS_BILLING_LINE2"; 254 case ADDRESS_BILLING_APT_NUM: 255 return "ADDRESS_BILLING_APT_NUM"; 256 case ADDRESS_BILLING_CITY: 257 return "ADDRESS_BILLING_CITY"; 258 case ADDRESS_BILLING_STATE: 259 return "ADDRESS_BILLING_STATE"; 260 case ADDRESS_BILLING_ZIP: 261 return "ADDRESS_BILLING_ZIP"; 262 case ADDRESS_BILLING_COUNTRY: 263 return "ADDRESS_BILLING_COUNTRY"; 264 case CREDIT_CARD_NAME: 265 return "CREDIT_CARD_NAME"; 266 case CREDIT_CARD_NUMBER: 267 return "CREDIT_CARD_NUMBER"; 268 case CREDIT_CARD_EXP_MONTH: 269 return "CREDIT_CARD_EXP_MONTH"; 270 case CREDIT_CARD_EXP_2_DIGIT_YEAR: 271 return "CREDIT_CARD_EXP_2_DIGIT_YEAR"; 272 case CREDIT_CARD_EXP_4_DIGIT_YEAR: 273 return "CREDIT_CARD_EXP_4_DIGIT_YEAR"; 274 case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR: 275 return "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR"; 276 case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR: 277 return "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR"; 278 case CREDIT_CARD_TYPE: 279 return "CREDIT_CARD_TYPE"; 280 case CREDIT_CARD_VERIFICATION_CODE: 281 return "CREDIT_CARD_VERIFICATION_CODE"; 282 case COMPANY_NAME: 283 return "COMPANY_NAME"; 284 case FIELD_WITH_DEFAULT_VALUE: 285 return "FIELD_WITH_DEFAULT_VALUE"; 286 case PHONE_BILLING_NUMBER: 287 return "PHONE_BILLING_NUMBER"; 288 case PHONE_BILLING_CITY_CODE: 289 return "PHONE_BILLING_CITY_CODE"; 290 case PHONE_BILLING_COUNTRY_CODE: 291 return "PHONE_BILLING_COUNTRY_CODE"; 292 case PHONE_BILLING_CITY_AND_NUMBER: 293 return "PHONE_BILLING_CITY_AND_NUMBER"; 294 case PHONE_BILLING_WHOLE_NUMBER: 295 return "PHONE_BILLING_WHOLE_NUMBER"; 296 case MAX_VALID_FIELD_TYPE: 297 return std::string(); 298 } 299 return std::string(); 300} 301 302// static 303AutofillFieldType AutofillType::StringToFieldType(const std::string& str) { 304 if (str == "NO_SERVER_DATA") 305 return NO_SERVER_DATA; 306 if (str == "UNKNOWN_TYPE") 307 return UNKNOWN_TYPE; 308 if (str == "EMPTY_TYPE") 309 return EMPTY_TYPE; 310 if (str == "NAME_FIRST") 311 return NAME_FIRST; 312 if (str == "NAME_MIDDLE") 313 return NAME_MIDDLE; 314 if (str == "NAME_LAST") 315 return NAME_LAST; 316 if (str == "NAME_MIDDLE_INITIAL") 317 return NAME_MIDDLE_INITIAL; 318 if (str == "NAME_FULL") 319 return NAME_FULL; 320 if (str == "NAME_SUFFIX") 321 return NAME_SUFFIX; 322 if (str == "EMAIL_ADDRESS") 323 return EMAIL_ADDRESS; 324 if (str == "PHONE_HOME_NUMBER") 325 return PHONE_HOME_NUMBER; 326 if (str == "PHONE_HOME_CITY_CODE") 327 return PHONE_HOME_CITY_CODE; 328 if (str == "PHONE_HOME_COUNTRY_CODE") 329 return PHONE_HOME_COUNTRY_CODE; 330 if (str == "PHONE_HOME_CITY_AND_NUMBER") 331 return PHONE_HOME_CITY_AND_NUMBER; 332 if (str == "PHONE_HOME_WHOLE_NUMBER") 333 return PHONE_HOME_WHOLE_NUMBER; 334 if (str == "ADDRESS_HOME_LINE1") 335 return ADDRESS_HOME_LINE1; 336 if (str == "ADDRESS_HOME_LINE2") 337 return ADDRESS_HOME_LINE2; 338 if (str == "ADDRESS_HOME_APT_NUM") 339 return ADDRESS_HOME_APT_NUM; 340 if (str == "ADDRESS_HOME_CITY") 341 return ADDRESS_HOME_CITY; 342 if (str == "ADDRESS_HOME_STATE") 343 return ADDRESS_HOME_STATE; 344 if (str == "ADDRESS_HOME_ZIP") 345 return ADDRESS_HOME_ZIP; 346 if (str == "ADDRESS_HOME_COUNTRY") 347 return ADDRESS_HOME_COUNTRY; 348 if (str == "ADDRESS_BILLING_LINE1") 349 return ADDRESS_BILLING_LINE1; 350 if (str == "ADDRESS_BILLING_LINE2") 351 return ADDRESS_BILLING_LINE2; 352 if (str == "ADDRESS_BILLING_APT_NUM") 353 return ADDRESS_BILLING_APT_NUM; 354 if (str == "ADDRESS_BILLING_CITY") 355 return ADDRESS_BILLING_CITY; 356 if (str == "ADDRESS_BILLING_STATE") 357 return ADDRESS_BILLING_STATE; 358 if (str == "ADDRESS_BILLING_ZIP") 359 return ADDRESS_BILLING_ZIP; 360 if (str == "ADDRESS_BILLING_COUNTRY") 361 return ADDRESS_BILLING_COUNTRY; 362 if (str == "CREDIT_CARD_NAME") 363 return CREDIT_CARD_NAME; 364 if (str == "CREDIT_CARD_NUMBER") 365 return CREDIT_CARD_NUMBER; 366 if (str == "CREDIT_CARD_EXP_MONTH") 367 return CREDIT_CARD_EXP_MONTH; 368 if (str == "CREDIT_CARD_EXP_2_DIGIT_YEAR") 369 return CREDIT_CARD_EXP_2_DIGIT_YEAR; 370 if (str == "CREDIT_CARD_EXP_4_DIGIT_YEAR") 371 return CREDIT_CARD_EXP_4_DIGIT_YEAR; 372 if (str == "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR") 373 return CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR; 374 if (str == "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR") 375 return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR; 376 if (str == "CREDIT_CARD_TYPE") 377 return CREDIT_CARD_TYPE; 378 if (str == "CREDIT_CARD_VERIFICATION_CODE") 379 return CREDIT_CARD_VERIFICATION_CODE; 380 if (str == "COMPANY_NAME") 381 return COMPANY_NAME; 382 383 NOTREACHED() << "Unknown AutofillFieldType " << str; 384 return UNKNOWN_TYPE; 385} 386 387} // namespace autofill 388