blob: 3f2b48a3509df92bddea5fece7b771461160b1a7 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/autofill/core/browser/autofill_type.h"
#include "base/logging.h"
namespace autofill {
FieldTypeGroup GroupTypeOfServerFieldType(ServerFieldType field_type) {
switch (field_type) {
case NAME_FIRST:
case NAME_MIDDLE:
case NAME_LAST:
case NAME_MIDDLE_INITIAL:
case NAME_FULL:
case NAME_SUFFIX:
return NAME;
case NAME_BILLING_FIRST:
case NAME_BILLING_MIDDLE:
case NAME_BILLING_LAST:
case NAME_BILLING_MIDDLE_INITIAL:
case NAME_BILLING_FULL:
case NAME_BILLING_SUFFIX:
return NAME_BILLING;
case EMAIL_ADDRESS:
case USERNAME_AND_EMAIL_ADDRESS:
return EMAIL;
case PHONE_HOME_NUMBER:
case PHONE_HOME_CITY_CODE:
case PHONE_HOME_COUNTRY_CODE:
case PHONE_HOME_CITY_AND_NUMBER:
case PHONE_HOME_WHOLE_NUMBER:
case PHONE_HOME_EXTENSION:
return PHONE_HOME;
case PHONE_BILLING_NUMBER:
case PHONE_BILLING_CITY_CODE:
case PHONE_BILLING_COUNTRY_CODE:
case PHONE_BILLING_CITY_AND_NUMBER:
case PHONE_BILLING_WHOLE_NUMBER:
return PHONE_BILLING;
case ADDRESS_HOME_LINE1:
case ADDRESS_HOME_LINE2:
case ADDRESS_HOME_LINE3:
case ADDRESS_HOME_APT_NUM:
case ADDRESS_HOME_CITY:
case ADDRESS_HOME_STATE:
case ADDRESS_HOME_ZIP:
case ADDRESS_HOME_COUNTRY:
case ADDRESS_HOME_STREET_ADDRESS:
case ADDRESS_HOME_SORTING_CODE:
case ADDRESS_HOME_DEPENDENT_LOCALITY:
return ADDRESS_HOME;
case ADDRESS_BILLING_LINE1:
case ADDRESS_BILLING_LINE2:
case ADDRESS_BILLING_LINE3:
case ADDRESS_BILLING_APT_NUM:
case ADDRESS_BILLING_CITY:
case ADDRESS_BILLING_STATE:
case ADDRESS_BILLING_ZIP:
case ADDRESS_BILLING_COUNTRY:
case ADDRESS_BILLING_STREET_ADDRESS:
case ADDRESS_BILLING_SORTING_CODE:
case ADDRESS_BILLING_DEPENDENT_LOCALITY:
return ADDRESS_BILLING;
case CREDIT_CARD_NAME_FULL:
case CREDIT_CARD_NAME_FIRST:
case CREDIT_CARD_NAME_LAST:
case CREDIT_CARD_NUMBER:
case CREDIT_CARD_EXP_MONTH:
case CREDIT_CARD_EXP_2_DIGIT_YEAR:
case CREDIT_CARD_EXP_4_DIGIT_YEAR:
case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
case CREDIT_CARD_TYPE:
case CREDIT_CARD_VERIFICATION_CODE:
return CREDIT_CARD;
case COMPANY_NAME:
return COMPANY;
case PASSWORD:
case ACCOUNT_CREATION_PASSWORD:
case NOT_ACCOUNT_CREATION_PASSWORD:
case NEW_PASSWORD:
case PROBABLY_NEW_PASSWORD:
case NOT_NEW_PASSWORD:
case CONFIRMATION_PASSWORD:
return PASSWORD_FIELD;
case NO_SERVER_DATA:
case EMPTY_TYPE:
case AMBIGUOUS_TYPE:
case PHONE_FAX_NUMBER:
case PHONE_FAX_CITY_CODE:
case PHONE_FAX_COUNTRY_CODE:
case PHONE_FAX_CITY_AND_NUMBER:
case PHONE_FAX_WHOLE_NUMBER:
case FIELD_WITH_DEFAULT_VALUE:
case MERCHANT_EMAIL_SIGNUP:
case MERCHANT_PROMO_CODE:
return NO_GROUP;
case MAX_VALID_FIELD_TYPE:
NOTREACHED();
return NO_GROUP;
case USERNAME:
return USERNAME_FIELD;
case SEARCH_TERM:
return UNFILLABLE;
case UNKNOWN_TYPE:
return NO_GROUP;
default:
return NO_GROUP;
}
}
FieldTypeGroup GroupTypeOfHtmlFieldType(HtmlFieldType field_type,
HtmlFieldMode field_mode) {
switch (field_type) {
case HTML_TYPE_NAME:
case HTML_TYPE_GIVEN_NAME:
case HTML_TYPE_ADDITIONAL_NAME:
case HTML_TYPE_ADDITIONAL_NAME_INITIAL:
case HTML_TYPE_FAMILY_NAME:
return field_mode == HTML_MODE_BILLING ? NAME_BILLING : NAME;
case HTML_TYPE_ORGANIZATION:
return COMPANY;
case HTML_TYPE_STREET_ADDRESS:
case HTML_TYPE_ADDRESS_LINE1:
case HTML_TYPE_ADDRESS_LINE2:
case HTML_TYPE_ADDRESS_LINE3:
case HTML_TYPE_ADDRESS_LEVEL1:
case HTML_TYPE_ADDRESS_LEVEL2:
case HTML_TYPE_ADDRESS_LEVEL3:
case HTML_TYPE_COUNTRY_CODE:
case HTML_TYPE_COUNTRY_NAME:
case HTML_TYPE_POSTAL_CODE:
case HTML_TYPE_FULL_ADDRESS:
return field_mode == HTML_MODE_BILLING ? ADDRESS_BILLING : ADDRESS_HOME;
case HTML_TYPE_CREDIT_CARD_NAME_FULL:
case HTML_TYPE_CREDIT_CARD_NAME_FIRST:
case HTML_TYPE_CREDIT_CARD_NAME_LAST:
case HTML_TYPE_CREDIT_CARD_NUMBER:
case HTML_TYPE_CREDIT_CARD_EXP:
case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
case HTML_TYPE_CREDIT_CARD_EXP_MONTH:
case HTML_TYPE_CREDIT_CARD_EXP_YEAR:
case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR:
case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR:
case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE:
case HTML_TYPE_CREDIT_CARD_TYPE:
return CREDIT_CARD;
case HTML_TYPE_TRANSACTION_AMOUNT:
case HTML_TYPE_TRANSACTION_CURRENCY:
return TRANSACTION;
case HTML_TYPE_TEL:
case HTML_TYPE_TEL_COUNTRY_CODE:
case HTML_TYPE_TEL_NATIONAL:
case HTML_TYPE_TEL_AREA_CODE:
case HTML_TYPE_TEL_LOCAL:
case HTML_TYPE_TEL_LOCAL_PREFIX:
case HTML_TYPE_TEL_LOCAL_SUFFIX:
case HTML_TYPE_TEL_EXTENSION:
return field_mode == HTML_MODE_BILLING ? PHONE_BILLING : PHONE_HOME;
case HTML_TYPE_EMAIL:
return EMAIL;
case HTML_TYPE_UPI_VPA:
// TODO(crbug/702223): Add support for UPI-VPA.
return NO_GROUP;
case HTML_TYPE_UNSPECIFIED:
case HTML_TYPE_UNRECOGNIZED:
return NO_GROUP;
default:
return NO_GROUP;
}
}
AutofillType::AutofillType(ServerFieldType field_type)
: html_type_(HTML_TYPE_UNSPECIFIED), html_mode_(HTML_MODE_NONE) {
if ((field_type < NO_SERVER_DATA || field_type >= MAX_VALID_FIELD_TYPE) ||
(field_type >= 15 && field_type <= 19) ||
(field_type >= 25 && field_type <= 29) ||
(field_type >= 44 && field_type <= 50) || field_type == 94) {
server_type_ = UNKNOWN_TYPE;
} else {
server_type_ = field_type;
}
}
AutofillType::AutofillType(HtmlFieldType field_type, HtmlFieldMode mode)
: server_type_(UNKNOWN_TYPE), html_type_(field_type), html_mode_(mode) {}
FieldTypeGroup AutofillType::group() const {
FieldTypeGroup result = NO_GROUP;
if (server_type_ != UNKNOWN_TYPE) {
result = GroupTypeOfServerFieldType(server_type_);
} else {
result = GroupTypeOfHtmlFieldType(html_type_, html_mode_);
}
return result;
}
bool AutofillType::IsUnknown() const {
return server_type_ == UNKNOWN_TYPE && (html_type_ == HTML_TYPE_UNSPECIFIED ||
html_type_ == HTML_TYPE_UNRECOGNIZED);
}
ServerFieldType AutofillType::GetStorableType() const {
// Map billing types to the equivalent non-billing types.
switch (server_type_) {
case ADDRESS_BILLING_LINE1:
return ADDRESS_HOME_LINE1;
case ADDRESS_BILLING_LINE2:
return ADDRESS_HOME_LINE2;
case ADDRESS_BILLING_LINE3:
return ADDRESS_HOME_LINE3;
case ADDRESS_BILLING_APT_NUM:
return ADDRESS_HOME_APT_NUM;
case ADDRESS_BILLING_CITY:
return ADDRESS_HOME_CITY;
case ADDRESS_BILLING_STATE:
return ADDRESS_HOME_STATE;
case ADDRESS_BILLING_ZIP:
return ADDRESS_HOME_ZIP;
case ADDRESS_BILLING_COUNTRY:
return ADDRESS_HOME_COUNTRY;
case PHONE_BILLING_WHOLE_NUMBER:
return PHONE_HOME_WHOLE_NUMBER;
case PHONE_BILLING_NUMBER:
return PHONE_HOME_NUMBER;
case PHONE_BILLING_CITY_CODE:
return PHONE_HOME_CITY_CODE;
case PHONE_BILLING_COUNTRY_CODE:
return PHONE_HOME_COUNTRY_CODE;
case PHONE_BILLING_CITY_AND_NUMBER:
return PHONE_HOME_CITY_AND_NUMBER;
case NAME_BILLING_FIRST:
return NAME_FIRST;
case NAME_BILLING_MIDDLE:
return NAME_MIDDLE;
case NAME_BILLING_LAST:
return NAME_LAST;
case NAME_BILLING_MIDDLE_INITIAL:
return NAME_MIDDLE_INITIAL;
case NAME_BILLING_FULL:
return NAME_FULL;
case NAME_BILLING_SUFFIX:
return NAME_SUFFIX;
case ADDRESS_BILLING_STREET_ADDRESS:
return ADDRESS_HOME_STREET_ADDRESS;
case ADDRESS_BILLING_SORTING_CODE:
return ADDRESS_HOME_SORTING_CODE;
case ADDRESS_BILLING_DEPENDENT_LOCALITY:
return ADDRESS_HOME_DEPENDENT_LOCALITY;
case UNKNOWN_TYPE:
break; // Try to parse HTML types instead.
default:
return server_type_;
}
switch (html_type_) {
case HTML_TYPE_UNSPECIFIED:
return UNKNOWN_TYPE;
case HTML_TYPE_NAME:
return NAME_FULL;
case HTML_TYPE_GIVEN_NAME:
return NAME_FIRST;
case HTML_TYPE_ADDITIONAL_NAME:
return NAME_MIDDLE;
case HTML_TYPE_FAMILY_NAME:
return NAME_LAST;
case HTML_TYPE_ORGANIZATION:
return COMPANY_NAME;
case HTML_TYPE_STREET_ADDRESS:
return ADDRESS_HOME_STREET_ADDRESS;
case HTML_TYPE_ADDRESS_LINE1:
return ADDRESS_HOME_LINE1;
case HTML_TYPE_ADDRESS_LINE2:
return ADDRESS_HOME_LINE2;
case HTML_TYPE_ADDRESS_LINE3:
return ADDRESS_HOME_LINE3;
case HTML_TYPE_ADDRESS_LEVEL1:
return ADDRESS_HOME_STATE;
case HTML_TYPE_ADDRESS_LEVEL2:
return ADDRESS_HOME_CITY;
case HTML_TYPE_ADDRESS_LEVEL3:
return ADDRESS_HOME_DEPENDENT_LOCALITY;
case HTML_TYPE_COUNTRY_CODE:
case HTML_TYPE_COUNTRY_NAME:
return ADDRESS_HOME_COUNTRY;
case HTML_TYPE_POSTAL_CODE:
return ADDRESS_HOME_ZIP;
// Full address is composed of other types; it can't be stored.
case HTML_TYPE_FULL_ADDRESS:
return UNKNOWN_TYPE;
case HTML_TYPE_CREDIT_CARD_NAME_FULL:
return CREDIT_CARD_NAME_FULL;
case HTML_TYPE_CREDIT_CARD_NAME_FIRST:
return CREDIT_CARD_NAME_FIRST;
case HTML_TYPE_CREDIT_CARD_NAME_LAST:
return CREDIT_CARD_NAME_LAST;
case HTML_TYPE_CREDIT_CARD_NUMBER:
return CREDIT_CARD_NUMBER;
case HTML_TYPE_CREDIT_CARD_EXP:
return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR;
case HTML_TYPE_CREDIT_CARD_EXP_MONTH:
return CREDIT_CARD_EXP_MONTH;
case HTML_TYPE_CREDIT_CARD_EXP_YEAR:
return CREDIT_CARD_EXP_4_DIGIT_YEAR;
case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE:
return CREDIT_CARD_VERIFICATION_CODE;
case HTML_TYPE_CREDIT_CARD_TYPE:
return CREDIT_CARD_TYPE;
case HTML_TYPE_TEL:
return PHONE_HOME_WHOLE_NUMBER;
case HTML_TYPE_TEL_COUNTRY_CODE:
return PHONE_HOME_COUNTRY_CODE;
case HTML_TYPE_TEL_NATIONAL:
return PHONE_HOME_CITY_AND_NUMBER;
case HTML_TYPE_TEL_AREA_CODE:
return PHONE_HOME_CITY_CODE;
case HTML_TYPE_TEL_LOCAL:
case HTML_TYPE_TEL_LOCAL_PREFIX:
case HTML_TYPE_TEL_LOCAL_SUFFIX:
return PHONE_HOME_NUMBER;
case HTML_TYPE_TEL_EXTENSION:
return PHONE_HOME_EXTENSION;
case HTML_TYPE_EMAIL:
return EMAIL_ADDRESS;
case HTML_TYPE_ADDITIONAL_NAME_INITIAL:
return NAME_MIDDLE_INITIAL;
case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
return CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR;
case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
return CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR;
case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR:
return CREDIT_CARD_EXP_2_DIGIT_YEAR;
case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR:
return CREDIT_CARD_EXP_4_DIGIT_YEAR;
// These types aren't stored; they're transient.
case HTML_TYPE_TRANSACTION_AMOUNT:
case HTML_TYPE_TRANSACTION_CURRENCY:
return UNKNOWN_TYPE;
// TODO(crbug/702223): Add autofill support for UPI-VPA.
case HTML_TYPE_UPI_VPA:
return UNKNOWN_TYPE;
case HTML_TYPE_UNRECOGNIZED:
return UNKNOWN_TYPE;
}
NOTREACHED();
return UNKNOWN_TYPE;
}
// static
ServerFieldType AutofillType::GetEquivalentBillingFieldType(
ServerFieldType field_type) {
switch (field_type) {
case ADDRESS_HOME_LINE1:
return ADDRESS_BILLING_LINE1;
case ADDRESS_HOME_LINE2:
return ADDRESS_BILLING_LINE2;
case ADDRESS_HOME_APT_NUM:
return ADDRESS_BILLING_APT_NUM;
case ADDRESS_HOME_CITY:
return ADDRESS_BILLING_CITY;
case ADDRESS_HOME_STATE:
return ADDRESS_BILLING_STATE;
case ADDRESS_HOME_ZIP:
return ADDRESS_BILLING_ZIP;
case ADDRESS_HOME_COUNTRY:
return ADDRESS_BILLING_COUNTRY;
case ADDRESS_HOME_STREET_ADDRESS:
return ADDRESS_BILLING_STREET_ADDRESS;
case ADDRESS_HOME_SORTING_CODE:
return ADDRESS_BILLING_SORTING_CODE;
case ADDRESS_HOME_DEPENDENT_LOCALITY:
return ADDRESS_BILLING_DEPENDENT_LOCALITY;
case PHONE_HOME_WHOLE_NUMBER:
return PHONE_BILLING_WHOLE_NUMBER;
case PHONE_HOME_NUMBER:
return PHONE_BILLING_NUMBER;
case PHONE_HOME_CITY_CODE:
return PHONE_BILLING_CITY_CODE;
case PHONE_HOME_COUNTRY_CODE:
return PHONE_BILLING_COUNTRY_CODE;
case PHONE_HOME_CITY_AND_NUMBER:
return PHONE_BILLING_CITY_AND_NUMBER;
case NAME_FIRST:
return NAME_BILLING_FIRST;
case NAME_MIDDLE:
return NAME_BILLING_MIDDLE;
case NAME_LAST:
return NAME_BILLING_LAST;
case NAME_MIDDLE_INITIAL:
return NAME_BILLING_MIDDLE_INITIAL;
case NAME_FULL:
return NAME_BILLING_FULL;
case NAME_SUFFIX:
return NAME_BILLING_SUFFIX;
default:
return field_type;
}
}
std::string AutofillType::ToString() const {
if (IsUnknown())
return "UNKNOWN_TYPE";
if (server_type_ != UNKNOWN_TYPE)
return ServerFieldTypeToString(server_type_);
switch (html_type_) {
case HTML_TYPE_UNSPECIFIED:
NOTREACHED();
break;
case HTML_TYPE_NAME:
return "HTML_TYPE_NAME";
case HTML_TYPE_GIVEN_NAME:
return "HTML_TYPE_GIVEN_NAME";
case HTML_TYPE_ADDITIONAL_NAME:
return "HTML_TYPE_ADDITIONAL_NAME";
case HTML_TYPE_FAMILY_NAME:
return "HTML_TYPE_FAMILY_NAME";
case HTML_TYPE_ORGANIZATION:
return "HTML_TYPE_ORGANIZATION";
case HTML_TYPE_STREET_ADDRESS:
return "HTML_TYPE_STREET_ADDRESS";
case HTML_TYPE_ADDRESS_LINE1:
return "HTML_TYPE_ADDRESS_LINE1";
case HTML_TYPE_ADDRESS_LINE2:
return "HTML_TYPE_ADDRESS_LINE2";
case HTML_TYPE_ADDRESS_LINE3:
return "HTML_TYPE_ADDRESS_LINE3";
case HTML_TYPE_ADDRESS_LEVEL1:
return "HTML_TYPE_ADDRESS_LEVEL1";
case HTML_TYPE_ADDRESS_LEVEL2:
return "HTML_TYPE_ADDRESS_LEVEL2";
case HTML_TYPE_ADDRESS_LEVEL3:
return "HTML_TYPE_ADDRESS_LEVEL3";
case HTML_TYPE_COUNTRY_CODE:
return "HTML_TYPE_COUNTRY_CODE";
case HTML_TYPE_COUNTRY_NAME:
return "HTML_TYPE_COUNTRY_NAME";
case HTML_TYPE_POSTAL_CODE:
return "HTML_TYPE_POSTAL_CODE";
case HTML_TYPE_FULL_ADDRESS:
return "HTML_TYPE_FULL_ADDRESS";
case HTML_TYPE_CREDIT_CARD_NAME_FULL:
return "HTML_TYPE_CREDIT_CARD_NAME_FULL";
case HTML_TYPE_CREDIT_CARD_NAME_FIRST:
return "HTML_TYPE_CREDIT_CARD_NAME_FIRST";
case HTML_TYPE_CREDIT_CARD_NAME_LAST:
return "HTML_TYPE_CREDIT_CARD_NAME_LAST";
case HTML_TYPE_CREDIT_CARD_NUMBER:
return "HTML_TYPE_CREDIT_CARD_NUMBER";
case HTML_TYPE_CREDIT_CARD_EXP:
return "HTML_TYPE_CREDIT_CARD_EXP";
case HTML_TYPE_CREDIT_CARD_EXP_MONTH:
return "HTML_TYPE_CREDIT_CARD_EXP_MONTH";
case HTML_TYPE_CREDIT_CARD_EXP_YEAR:
return "HTML_TYPE_CREDIT_CARD_EXP_YEAR";
case HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE:
return "HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE";
case HTML_TYPE_CREDIT_CARD_TYPE:
return "HTML_TYPE_CREDIT_CARD_TYPE";
case HTML_TYPE_TEL:
return "HTML_TYPE_TEL";
case HTML_TYPE_TEL_COUNTRY_CODE:
return "HTML_TYPE_TEL_COUNTRY_CODE";
case HTML_TYPE_TEL_NATIONAL:
return "HTML_TYPE_TEL_NATIONAL";
case HTML_TYPE_TEL_AREA_CODE:
return "HTML_TYPE_TEL_AREA_CODE";
case HTML_TYPE_TEL_LOCAL:
return "HTML_TYPE_TEL_LOCAL";
case HTML_TYPE_TEL_LOCAL_PREFIX:
return "HTML_TYPE_TEL_LOCAL_PREFIX";
case HTML_TYPE_TEL_LOCAL_SUFFIX:
return "HTML_TYPE_TEL_LOCAL_SUFFIX";
case HTML_TYPE_TEL_EXTENSION:
return "HTML_TYPE_TEL_EXTENSION";
case HTML_TYPE_EMAIL:
return "HTML_TYPE_EMAIL";
case HTML_TYPE_ADDITIONAL_NAME_INITIAL:
return "HTML_TYPE_ADDITIONAL_NAME_INITIAL";
case HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
return "HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR";
case HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
return "HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR";
case HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR:
return "HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR";
case HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR:
return "HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR";
case HTML_TYPE_TRANSACTION_AMOUNT:
return "HTML_TRANSACTION_AMOUNT";
case HTML_TYPE_TRANSACTION_CURRENCY:
return "HTML_TRANSACTION_CURRENCY";
case HTML_TYPE_UPI_VPA:
return "HTML_TYPE_UPI_VPA";
case HTML_TYPE_UNRECOGNIZED:
return "HTML_TYPE_UNRECOGNIZED";
}
NOTREACHED();
return std::string();
}
// static
std::string AutofillType::ServerFieldTypeToString(ServerFieldType type) {
// You are free to add or remove the String representation of ServerFieldType,
// but don't change any existing values, Android WebView presents them to
// Autofill Service as part of APIs.
switch (type) {
case NO_SERVER_DATA:
return "NO_SERVER_DATA";
case UNKNOWN_TYPE:
return "UNKNOWN_TYPE";
case EMPTY_TYPE:
return "EMPTY_TYPE";
case NAME_FIRST:
return "NAME_FIRST";
case NAME_MIDDLE:
return "NAME_MIDDLE";
case NAME_LAST:
return "NAME_LAST";
case NAME_MIDDLE_INITIAL:
return "NAME_MIDDLE_INITIAL";
case NAME_FULL:
return "NAME_FULL";
case NAME_SUFFIX:
return "NAME_SUFFIX";
case NAME_BILLING_FIRST:
return "NAME_BILLING_FIRST";
case NAME_BILLING_MIDDLE:
return "NAME_BILLING_MIDDLE";
case NAME_BILLING_LAST:
return "NAME_BILLING_LAST";
case NAME_BILLING_MIDDLE_INITIAL:
return "NAME_BILLING_MIDDLE_INITIAL";
case NAME_BILLING_FULL:
return "NAME_BILLING_FULL";
case NAME_BILLING_SUFFIX:
return "NAME_BILLING_SUFFIX";
case EMAIL_ADDRESS:
return "EMAIL_ADDRESS";
case PHONE_HOME_NUMBER:
return "PHONE_HOME_NUMBER";
case PHONE_HOME_CITY_CODE:
return "PHONE_HOME_CITY_CODE";
case PHONE_HOME_COUNTRY_CODE:
return "PHONE_HOME_COUNTRY_CODE";
case PHONE_HOME_CITY_AND_NUMBER:
return "PHONE_HOME_CITY_AND_NUMBER";
case PHONE_HOME_WHOLE_NUMBER:
return "PHONE_HOME_WHOLE_NUMBER";
case PHONE_HOME_EXTENSION:
return "PHONE_HOME_EXTENSION";
case PHONE_FAX_NUMBER:
return "PHONE_FAX_NUMBER";
case PHONE_FAX_CITY_CODE:
return "PHONE_FAX_CITY_CODE";
case PHONE_FAX_COUNTRY_CODE:
return "PHONE_FAX_COUNTRY_CODE";
case PHONE_FAX_CITY_AND_NUMBER:
return "PHONE_FAX_CITY_AND_NUMBER";
case PHONE_FAX_WHOLE_NUMBER:
return "PHONE_FAX_WHOLE_NUMBER";
case ADDRESS_HOME_LINE1:
return "ADDRESS_HOME_LINE1";
case ADDRESS_HOME_LINE2:
return "ADDRESS_HOME_LINE2";
case ADDRESS_HOME_LINE3:
return "ADDRESS_HOME_LINE3";
case ADDRESS_HOME_APT_NUM:
return "ADDRESS_HOME_APT_NUM";
case ADDRESS_HOME_CITY:
return "ADDRESS_HOME_CITY";
case ADDRESS_HOME_STATE:
return "ADDRESS_HOME_STATE";
case ADDRESS_HOME_ZIP:
return "ADDRESS_HOME_ZIP";
case ADDRESS_HOME_COUNTRY:
return "ADDRESS_HOME_COUNTRY";
case ADDRESS_BILLING_LINE1:
return "ADDRESS_BILLING_LINE1";
case ADDRESS_BILLING_LINE2:
return "ADDRESS_BILLING_LINE2";
case ADDRESS_BILLING_LINE3:
return "ADDRESS_BILLING_LINE3";
case ADDRESS_BILLING_APT_NUM:
return "ADDRESS_BILLING_APT_NUM";
case ADDRESS_BILLING_CITY:
return "ADDRESS_BILLING_CITY";
case ADDRESS_BILLING_STATE:
return "ADDRESS_BILLING_STATE";
case ADDRESS_BILLING_ZIP:
return "ADDRESS_BILLING_ZIP";
case ADDRESS_BILLING_COUNTRY:
return "ADDRESS_BILLING_COUNTRY";
case CREDIT_CARD_NAME_FULL:
return "CREDIT_CARD_NAME_FULL";
case CREDIT_CARD_NAME_FIRST:
return "CREDIT_CARD_NAME_FIRST";
case CREDIT_CARD_NAME_LAST:
return "CREDIT_CARD_NAME_LAST";
case CREDIT_CARD_NUMBER:
return "CREDIT_CARD_NUMBER";
case CREDIT_CARD_EXP_MONTH:
return "CREDIT_CARD_EXP_MONTH";
case CREDIT_CARD_EXP_2_DIGIT_YEAR:
return "CREDIT_CARD_EXP_2_DIGIT_YEAR";
case CREDIT_CARD_EXP_4_DIGIT_YEAR:
return "CREDIT_CARD_EXP_4_DIGIT_YEAR";
case CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR:
return "CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR";
case CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR:
return "CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR";
case CREDIT_CARD_TYPE:
return "CREDIT_CARD_TYPE";
case CREDIT_CARD_VERIFICATION_CODE:
return "CREDIT_CARD_VERIFICATION_CODE";
case COMPANY_NAME:
return "COMPANY_NAME";
case FIELD_WITH_DEFAULT_VALUE:
return "FIELD_WITH_DEFAULT_VALUE";
case PHONE_BILLING_NUMBER:
return "PHONE_BILLING_NUMBER";
case PHONE_BILLING_CITY_CODE:
return "PHONE_BILLING_CITY_CODE";
case PHONE_BILLING_COUNTRY_CODE:
return "PHONE_BILLING_COUNTRY_CODE";
case PHONE_BILLING_CITY_AND_NUMBER:
return "PHONE_BILLING_CITY_AND_NUMBER";
case PHONE_BILLING_WHOLE_NUMBER:
return "PHONE_BILLING_WHOLE_NUMBER";
case MERCHANT_EMAIL_SIGNUP:
return "MERCHANT_EMAIL_SIGNUP";
case MERCHANT_PROMO_CODE:
return "MERCHANT_PROMO_CODE";
case PASSWORD:
return "PASSWORD";
case ACCOUNT_CREATION_PASSWORD:
return "ACCOUNT_CREATION_PASSWORD";
case ADDRESS_HOME_STREET_ADDRESS:
return "ADDRESS_HOME_STREET_ADDRESS";
case ADDRESS_BILLING_STREET_ADDRESS:
return "ADDRESS_BILLING_STREET_ADDRESS";
case ADDRESS_HOME_SORTING_CODE:
return "ADDRESS_HOME_SORTING_CODE";
case ADDRESS_BILLING_SORTING_CODE:
return "ADDRESS_BILLING_SORTING_CODE";
case ADDRESS_HOME_DEPENDENT_LOCALITY:
return "ADDRESS_HOME_DEPENDENT_LOCALITY";
case ADDRESS_BILLING_DEPENDENT_LOCALITY:
return "ADDRESS_BILLING_DEPENDENT_LOCALITY";
case NOT_ACCOUNT_CREATION_PASSWORD:
return "NOT_ACCOUNT_CREATION_PASSWORD";
case USERNAME:
return "USERNAME";
case USERNAME_AND_EMAIL_ADDRESS:
return "USERNAME_AND_EMAIL_ADDRESS";
case NEW_PASSWORD:
return "NEW_PASSWORD";
case PROBABLY_NEW_PASSWORD:
return "PROBABLY_NEW_PASSWORD";
case NOT_NEW_PASSWORD:
return "NOT_NEW_PASSWORD";
case CONFIRMATION_PASSWORD:
return "CONFIRMATION_PASSWORD";
case SEARCH_TERM:
return "SEARCH_TERM";
case AMBIGUOUS_TYPE:
return "AMBIGUOUS_TYPE";
case MAX_VALID_FIELD_TYPE:
return std::string();
}
NOTREACHED();
return std::string();
}
} // namespace autofill