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 |