| OLD | NEW |
| (Empty) |
| 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/browser/state_names.h" | |
| 6 | |
| 7 #include "base/basictypes.h" | |
| 8 #include "base/strings/string_util.h" | |
| 9 #include "base/strings/utf_string_conversions.h" | |
| 10 | |
| 11 namespace autofill { | |
| 12 namespace state_names { | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 // TODO(jhawkins): Add more states/provinces. See http://crbug.com/45039. | |
| 17 | |
| 18 struct StateData { | |
| 19 const char* const name; | |
| 20 const char abbreviation[3]; | |
| 21 }; | |
| 22 | |
| 23 StateData kStateData[] = { | |
| 24 { "alabama", "al" }, | |
| 25 { "alaska", "ak" }, | |
| 26 { "arizona", "az" }, | |
| 27 { "arkansas", "ar" }, | |
| 28 { "california", "ca" }, | |
| 29 { "colorado", "co" }, | |
| 30 { "connecticut", "ct" }, | |
| 31 { "delaware", "de" }, | |
| 32 { "district of columbia", "dc" }, | |
| 33 { "florida", "fl" }, | |
| 34 { "georgia", "ga" }, | |
| 35 { "hawaii", "hi" }, | |
| 36 { "idaho", "id" }, | |
| 37 { "illinois", "il" }, | |
| 38 { "indiana", "in" }, | |
| 39 { "iowa", "ia" }, | |
| 40 { "kansas", "ks" }, | |
| 41 { "kentucky", "ky" }, | |
| 42 { "louisiana", "la" }, | |
| 43 { "maine", "me" }, | |
| 44 { "maryland", "md" }, | |
| 45 { "massachusetts", "ma" }, | |
| 46 { "michigan", "mi" }, | |
| 47 { "minnesota", "mv" }, | |
| 48 { "mississippi", "ms" }, | |
| 49 { "missouri", "mo" }, | |
| 50 { "montana", "mt" }, | |
| 51 { "nebraska", "ne" }, | |
| 52 { "nevada", "nv" }, | |
| 53 { "new hampshire", "nh" }, | |
| 54 { "new jersey", "nj" }, | |
| 55 { "new mexico", "nm" }, | |
| 56 { "new york", "ny" }, | |
| 57 { "north carolina", "nc" }, | |
| 58 { "north dakota", "nd" }, | |
| 59 { "ohio", "oh" }, | |
| 60 { "oklahoma", "ok" }, | |
| 61 { "oregon", "or" }, | |
| 62 { "pennsylvania", "pa" }, | |
| 63 { "puerto rico", "pr" }, | |
| 64 { "rhode island", "ri" }, | |
| 65 { "south carolina", "sc" }, | |
| 66 { "south dakota", "sd" }, | |
| 67 { "tennessee", "tn" }, | |
| 68 { "texas", "tx" }, | |
| 69 { "utah", "ut" }, | |
| 70 { "vermont", "vt" }, | |
| 71 { "virginia", "va" }, | |
| 72 { "washington", "wa" }, | |
| 73 { "west virginia", "wv" }, | |
| 74 { "wisconsin", "wi" }, | |
| 75 { "wyoming", "wy" }, | |
| 76 }; | |
| 77 | |
| 78 } // namespace | |
| 79 | |
| 80 base::string16 GetAbbreviationForName(const base::string16& name) { | |
| 81 for (size_t i = 0; i < arraysize(kStateData); ++i) { | |
| 82 const StateData& state = kStateData[i]; | |
| 83 if (LowerCaseEqualsASCII(name, state.name)) | |
| 84 return ASCIIToUTF16(state.abbreviation); | |
| 85 } | |
| 86 return base::string16(); | |
| 87 } | |
| 88 | |
| 89 base::string16 GetNameForAbbreviation(const base::string16& abbreviation) { | |
| 90 for (size_t i = 0; i < arraysize(kStateData); ++i) { | |
| 91 const StateData& state = kStateData[i]; | |
| 92 if (LowerCaseEqualsASCII(abbreviation, state.abbreviation)) | |
| 93 return ASCIIToUTF16(state.name); | |
| 94 } | |
| 95 return base::string16(); | |
| 96 } | |
| 97 | |
| 98 void GetNameAndAbbreviation(const base::string16& value, | |
| 99 base::string16* name, | |
| 100 base::string16* abbreviation) { | |
| 101 base::string16 full = GetNameForAbbreviation(value); | |
| 102 base::string16 abbr = value; | |
| 103 if (full.empty()) { | |
| 104 abbr = GetAbbreviationForName(value); | |
| 105 full = value; | |
| 106 } | |
| 107 | |
| 108 if (name) | |
| 109 name->swap(full); | |
| 110 if (abbreviation) | |
| 111 abbreviation->swap(abbr); | |
| 112 } | |
| 113 | |
| 114 } // namespace state_names | |
| 115 } // namespace autofill | |
| OLD | NEW |