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 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FIELD_TYPES_H_ 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_FIELD_TYPES_H_ 7 8 #include <map> 9 #include <set> 10 11 #include "base/strings/string16.h" 12 13 namespace autofill { 14 15 // NOTE: This list MUST not be modified except to keep it synchronized with the 16 // Autofill server's version. The server aggregates and stores these types over 17 // several versions, so we must remain fully compatible with the Autofill 18 // server, which is itself backward-compatible. The list must be kept up to 19 // date with the Autofill server list. 20 // 21 // The list of all field types natively understood by the Autofill server. A 22 // subset of these types is used to store Autofill data in the user's profile. 23 enum ServerFieldType { 24 // Server indication that it has no data for the requested field. 25 NO_SERVER_DATA = 0, 26 // Client indication that the text entered did not match anything in the 27 // personal data. 28 UNKNOWN_TYPE = 1, 29 // The "empty" type indicates that the user hasn't entered anything 30 // in this field. 31 EMPTY_TYPE = 2, 32 // Personal Information categorization types. 33 NAME_FIRST = 3, 34 NAME_MIDDLE = 4, 35 NAME_LAST = 5, 36 NAME_MIDDLE_INITIAL = 6, 37 NAME_FULL = 7, 38 NAME_SUFFIX = 8, 39 EMAIL_ADDRESS = 9, 40 PHONE_HOME_NUMBER = 10, 41 PHONE_HOME_CITY_CODE = 11, 42 PHONE_HOME_COUNTRY_CODE = 12, 43 PHONE_HOME_CITY_AND_NUMBER = 13, 44 PHONE_HOME_WHOLE_NUMBER = 14, 45 46 // Work phone numbers (values [15,19]) are deprecated. 47 48 // Fax numbers (values [20,24]) are deprecated in Chrome, but still supported 49 // by the server. 50 PHONE_FAX_NUMBER = 20, 51 PHONE_FAX_CITY_CODE = 21, 52 PHONE_FAX_COUNTRY_CODE = 22, 53 PHONE_FAX_CITY_AND_NUMBER = 23, 54 PHONE_FAX_WHOLE_NUMBER = 24, 55 56 // Cell phone numbers (values [25, 29]) are deprecated. 57 58 ADDRESS_HOME_LINE1 = 30, 59 ADDRESS_HOME_LINE2 = 31, 60 ADDRESS_HOME_APT_NUM = 32, 61 ADDRESS_HOME_CITY = 33, 62 ADDRESS_HOME_STATE = 34, 63 ADDRESS_HOME_ZIP = 35, 64 ADDRESS_HOME_COUNTRY = 36, 65 ADDRESS_BILLING_LINE1 = 37, 66 ADDRESS_BILLING_LINE2 = 38, 67 ADDRESS_BILLING_APT_NUM = 39, 68 ADDRESS_BILLING_CITY = 40, 69 ADDRESS_BILLING_STATE = 41, 70 ADDRESS_BILLING_ZIP = 42, 71 ADDRESS_BILLING_COUNTRY = 43, 72 73 // ADDRESS_SHIPPING values [44,50] are deprecated. 74 75 CREDIT_CARD_NAME = 51, 76 CREDIT_CARD_NUMBER = 52, 77 CREDIT_CARD_EXP_MONTH = 53, 78 CREDIT_CARD_EXP_2_DIGIT_YEAR = 54, 79 CREDIT_CARD_EXP_4_DIGIT_YEAR = 55, 80 CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR = 56, 81 CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR = 57, 82 CREDIT_CARD_TYPE = 58, 83 CREDIT_CARD_VERIFICATION_CODE = 59, 84 85 COMPANY_NAME = 60, 86 87 // Generic type whose default value is known. 88 FIELD_WITH_DEFAULT_VALUE = 61, 89 90 PHONE_BILLING_NUMBER = 62, 91 PHONE_BILLING_CITY_CODE = 63, 92 PHONE_BILLING_COUNTRY_CODE = 64, 93 PHONE_BILLING_CITY_AND_NUMBER = 65, 94 PHONE_BILLING_WHOLE_NUMBER = 66, 95 96 NAME_BILLING_FIRST = 67, 97 NAME_BILLING_MIDDLE = 68, 98 NAME_BILLING_LAST = 69, 99 NAME_BILLING_MIDDLE_INITIAL = 70, 100 NAME_BILLING_FULL = 71, 101 NAME_BILLING_SUFFIX = 72, 102 103 // Field types for options generally found in merchant buyflows. Given that 104 // these are likely to be filled out differently on a case by case basis, 105 // they are here primarily for use by Autocheckout. 106 MERCHANT_EMAIL_SIGNUP = 73, 107 MERCHANT_PROMO_CODE = 74, 108 109 // Field types for the password fields. PASSWORD is the default type for all 110 // password fields. ACCOUNT_CREATION_PASSWORD is the first password field in 111 // an account creation form and will trigger password generation. 112 PASSWORD = 75, 113 ACCOUNT_CREATION_PASSWORD = 76, 114 115 // Includes all of the lines of a street address, including newlines, e.g. 116 // 123 Main Street, 117 // Apt. #42 118 ADDRESS_HOME_STREET_ADDRESS = 77, 119 ADDRESS_BILLING_STREET_ADDRESS = 78, 120 121 // A sorting code is similar to a postal code. However, whereas a postal code 122 // normally refers to a single geographical location, a sorting code often 123 // does not. Instead, a sorting code is assigned to an organization, which 124 // might be geographically distributed. The most prominent example of a 125 // sorting code system is CEDEX in France. 126 ADDRESS_HOME_SORTING_CODE = 79, 127 ADDRESS_BILLING_SORTING_CODE = 80, 128 129 // A dependent locality is a subunit of a locality, where a "locality" is 130 // roughly equivalent to a city. Examples of dependent localities include 131 // inner-city districts and suburbs. 132 ADDRESS_HOME_DEPENDENT_LOCALITY = 81, 133 ADDRESS_BILLING_DEPENDENT_LOCALITY = 82, 134 135 // The third line of the street address. 136 ADDRESS_HOME_LINE3 = 83, 137 ADDRESS_BILLING_LINE3 = 84, 138 139 // No new types can be added without a corresponding change to the Autofill 140 // server. 141 142 MAX_VALID_FIELD_TYPE = 85, 143 }; 144 145 // The list of all HTML autocomplete field type hints supported by Chrome. 146 // See [ http://is.gd/whatwg_autocomplete ] for the full list of specced hints. 147 enum HtmlFieldType { 148 // Default type. 149 HTML_TYPE_UNKNOWN, 150 151 // Name types. 152 HTML_TYPE_NAME, 153 HTML_TYPE_GIVEN_NAME, 154 HTML_TYPE_ADDITIONAL_NAME, 155 HTML_TYPE_FAMILY_NAME, 156 157 // Business types. 158 HTML_TYPE_ORGANIZATION, 159 160 // Address types. 161 HTML_TYPE_STREET_ADDRESS, 162 HTML_TYPE_ADDRESS_LINE1, 163 HTML_TYPE_ADDRESS_LINE2, 164 HTML_TYPE_ADDRESS_LINE3, 165 HTML_TYPE_ADDRESS_LEVEL1, // For U.S. addresses, corresponds to the state. 166 HTML_TYPE_ADDRESS_LEVEL2, // For U.S. addresses, corresponds to the city. 167 HTML_TYPE_ADDRESS_LEVEL3, // An area that is more specific than LEVEL2. 168 HTML_TYPE_COUNTRY_CODE, // The ISO 3166-1-alpha-2 country code. 169 HTML_TYPE_COUNTRY_NAME, // The localized country name. 170 HTML_TYPE_POSTAL_CODE, 171 HTML_TYPE_FULL_ADDRESS, // The complete address, formatted for display. 172 173 // Credit card types. 174 HTML_TYPE_CREDIT_CARD_NAME, 175 HTML_TYPE_CREDIT_CARD_NUMBER, 176 HTML_TYPE_CREDIT_CARD_EXP, 177 HTML_TYPE_CREDIT_CARD_EXP_MONTH, 178 HTML_TYPE_CREDIT_CARD_EXP_YEAR, 179 HTML_TYPE_CREDIT_CARD_VERIFICATION_CODE, 180 HTML_TYPE_CREDIT_CARD_TYPE, 181 182 // Phone number types. 183 HTML_TYPE_TEL, 184 HTML_TYPE_TEL_COUNTRY_CODE, 185 HTML_TYPE_TEL_NATIONAL, 186 HTML_TYPE_TEL_AREA_CODE, 187 HTML_TYPE_TEL_LOCAL, 188 HTML_TYPE_TEL_LOCAL_PREFIX, 189 HTML_TYPE_TEL_LOCAL_SUFFIX, 190 191 // Email. 192 HTML_TYPE_EMAIL, 193 194 // Variants of type hints specified in the HTML specification that are 195 // inferred based on a field's 'maxlength' attribute. 196 // TODO(isherman): Remove these types, in favor of understanding maxlength 197 // when filling fields. See also: AutofillField::phone_part_. 198 HTML_TYPE_ADDITIONAL_NAME_INITIAL, 199 HTML_TYPE_CREDIT_CARD_EXP_DATE_2_DIGIT_YEAR, 200 HTML_TYPE_CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, 201 HTML_TYPE_CREDIT_CARD_EXP_2_DIGIT_YEAR, 202 HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, 203 }; 204 205 // The list of all HTML autocomplete field mode hints supported by Chrome. 206 // See [ http://is.gd/whatwg_autocomplete ] for the full list of specced hints. 207 enum HtmlFieldMode { 208 HTML_MODE_NONE, 209 HTML_MODE_BILLING, 210 HTML_MODE_SHIPPING, 211 }; 212 213 enum FieldTypeGroup { 214 NO_GROUP, 215 NAME, 216 NAME_BILLING, 217 EMAIL, 218 COMPANY, 219 ADDRESS_HOME, 220 ADDRESS_BILLING, 221 PHONE_HOME, 222 PHONE_BILLING, 223 CREDIT_CARD, 224 PASSWORD_FIELD, 225 }; 226 227 typedef std::set<ServerFieldType> ServerFieldTypeSet; 228 typedef std::map<base::string16, ServerFieldType> ServerFieldTypeMap; 229 230 } // namespace autofill 231 232 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FIELD_TYPES_H_ 233