OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/browser/autofill/autofill_field.h" | 8 #include "chrome/browser/autofill/autofill_field.h" |
9 #include "chrome/browser/autofill/autofill_scanner.h" | 9 #include "chrome/browser/autofill/autofill_scanner.h" |
10 #include "chrome/browser/autofill/phone_field.h" | 10 #include "chrome/browser/autofill/phone_field.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 } | 36 } |
37 | 37 |
38 TEST_F(PhoneFieldTest, NonParse) { | 38 TEST_F(PhoneFieldTest, NonParse) { |
39 list_.push_back(new AutofillField); | 39 list_.push_back(new AutofillField); |
40 AutofillScanner scanner(list_.get()); | 40 AutofillScanner scanner(list_.get()); |
41 field_.reset(Parse(&scanner)); | 41 field_.reset(Parse(&scanner)); |
42 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get()); | 42 ASSERT_EQ(static_cast<PhoneField*>(NULL), field_.get()); |
43 } | 43 } |
44 | 44 |
45 TEST_F(PhoneFieldTest, ParseOneLinePhone) { | 45 TEST_F(PhoneFieldTest, ParseOneLinePhone) { |
46 list_.push_back( | 46 webkit_glue::FormField field; |
47 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), | 47 field.form_control_type = ASCIIToUTF16("text"); |
48 ASCIIToUTF16("phone"), | 48 |
49 string16(), | 49 field.label = ASCIIToUTF16("Phone"); |
50 ASCIIToUTF16("text"), | 50 field.name = ASCIIToUTF16("phone"); |
51 0, | 51 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
52 false), | 52 |
53 ASCIIToUTF16("phone1"))); | |
54 AutofillScanner scanner(list_.get()); | 53 AutofillScanner scanner(list_.get()); |
55 field_.reset(Parse(&scanner)); | 54 field_.reset(Parse(&scanner)); |
56 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 55 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
57 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 56 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
58 ASSERT_TRUE( | 57 ASSERT_TRUE( |
59 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 58 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
60 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 59 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); |
61 } | 60 } |
62 | 61 |
63 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { | 62 TEST_F(PhoneFieldTest, ParseTwoLinePhone) { |
64 list_.push_back( | 63 webkit_glue::FormField field; |
65 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), | 64 field.form_control_type = ASCIIToUTF16("text"); |
66 ASCIIToUTF16("area code"), | 65 |
67 string16(), | 66 field.label = ASCIIToUTF16("Area Code"); |
68 ASCIIToUTF16("text"), | 67 field.name = ASCIIToUTF16("area code"); |
69 0, | 68 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
70 false), | 69 |
71 ASCIIToUTF16("areacode1"))); | 70 field.label = ASCIIToUTF16("Phone"); |
72 list_.push_back( | 71 field.name = ASCIIToUTF16("phone"); |
73 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone"), | 72 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
74 ASCIIToUTF16("phone"), | 73 |
75 string16(), | |
76 ASCIIToUTF16("text"), | |
77 0, | |
78 false), | |
79 ASCIIToUTF16("phone1"))); | |
80 AutofillScanner scanner(list_.get()); | 74 AutofillScanner scanner(list_.get()); |
81 field_.reset(Parse(&scanner)); | 75 field_.reset(Parse(&scanner)); |
82 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 76 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
83 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 77 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
84 ASSERT_TRUE( | 78 ASSERT_TRUE( |
85 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 79 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
86 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 80 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
87 ASSERT_TRUE( | 81 ASSERT_TRUE( |
88 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 82 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
89 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone1")]); | 83 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
90 } | 84 } |
91 | 85 |
92 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { | 86 TEST_F(PhoneFieldTest, ThreePartPhoneNumber) { |
93 // Phone in format <field> - <field> - <field> could be either | 87 // Phone in format <field> - <field> - <field> could be either |
94 // <area code> - <prefix> - <suffix>, or | 88 // <area code> - <prefix> - <suffix>, or |
95 // <country code> - <area code> - <phone>. The only distinguishing feature is | 89 // <country code> - <area code> - <phone>. The only distinguishing feature is |
96 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger | 90 // size: <prefix> is no bigger than 3 characters, and <suffix> is no bigger |
97 // than 4. | 91 // than 4. |
98 list_.push_back( | 92 webkit_glue::FormField field; |
99 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone:"), | 93 field.form_control_type = ASCIIToUTF16("text"); |
100 ASCIIToUTF16("dayphone1"), | 94 |
101 string16(), | 95 field.label = ASCIIToUTF16("Phone:"); |
102 ASCIIToUTF16("text"), | 96 field.name = ASCIIToUTF16("dayphone1"); |
103 0, | 97 field.max_length = 0; |
104 false), | 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
105 ASCIIToUTF16("areacode1"))); | 99 |
106 list_.push_back( | 100 field.label = ASCIIToUTF16("-"); |
107 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("-"), | 101 field.name = ASCIIToUTF16("dayphone2"); |
108 ASCIIToUTF16("dayphone2"), | 102 field.max_length = 3; |
109 string16(), | 103 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
110 ASCIIToUTF16("text"), | 104 |
111 3, | 105 field.label = ASCIIToUTF16("-"); |
112 false), | 106 field.name = ASCIIToUTF16("dayphone3"); |
113 ASCIIToUTF16("prefix1"))); | 107 field.max_length = 4; |
114 list_.push_back( | 108 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
115 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("-"), | 109 |
116 ASCIIToUTF16("dayphone3"), | 110 field.label = ASCIIToUTF16("ext.:"); |
117 string16(), | 111 field.name = ASCIIToUTF16("dayphone4"); |
118 ASCIIToUTF16("text"), | 112 field.max_length = 0; |
119 4, | 113 list_.push_back(new AutofillField(field, ASCIIToUTF16("ext4"))); |
120 false), | 114 |
121 ASCIIToUTF16("suffix1"))); | |
122 list_.push_back( | |
123 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("ext.:"), | |
124 ASCIIToUTF16("dayphone4"), | |
125 string16(), | |
126 ASCIIToUTF16("text"), | |
127 0, | |
128 false), | |
129 ASCIIToUTF16("ext1"))); | |
130 AutofillScanner scanner(list_.get()); | 115 AutofillScanner scanner(list_.get()); |
131 field_.reset(Parse(&scanner)); | 116 field_.reset(Parse(&scanner)); |
132 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 117 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
133 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 118 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
134 ASSERT_TRUE( | 119 ASSERT_TRUE( |
135 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 120 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
136 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 121 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
137 ASSERT_TRUE( | 122 ASSERT_TRUE( |
138 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 123 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
139 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 124 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
140 ASSERT_TRUE( | 125 ASSERT_TRUE( |
141 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 126 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
142 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 127 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
| 128 EXPECT_TRUE( |
| 129 field_type_map_.find(ASCIIToUTF16("ext4")) == field_type_map_.end()); |
143 } | 130 } |
144 | 131 |
145 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers | 132 // This scenario of explicitly labeled "prefix" and "suffix" phone numbers |
146 // encountered in http://crbug.com/40694 with page | 133 // encountered in http://crbug.com/40694 with page |
147 // https://www.wrapables.com/jsp/Signup.jsp. | 134 // https://www.wrapables.com/jsp/Signup.jsp. |
148 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { | 135 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix) { |
149 list_.push_back( | 136 webkit_glue::FormField field; |
150 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone:"), | 137 field.form_control_type = ASCIIToUTF16("text"); |
151 ASCIIToUTF16("area"), | 138 |
152 string16(), | 139 field.label = ASCIIToUTF16("Phone:"); |
153 ASCIIToUTF16("text"), | 140 field.name = ASCIIToUTF16("area"); |
154 0, | 141 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
155 false), | 142 |
156 ASCIIToUTF16("areacode1"))); | 143 field.label = string16(); |
157 list_.push_back( | 144 field.name = ASCIIToUTF16("prefix"); |
158 new AutofillField(webkit_glue::FormField(string16(), | 145 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
159 ASCIIToUTF16("prefix"), | 146 |
160 string16(), | 147 field.label = string16(); |
161 ASCIIToUTF16("text"), | 148 field.name = ASCIIToUTF16("suffix"); |
162 0, | 149 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
163 false), | 150 |
164 ASCIIToUTF16("prefix1"))); | |
165 list_.push_back( | |
166 new AutofillField(webkit_glue::FormField(string16(), | |
167 ASCIIToUTF16("suffix"), | |
168 string16(), | |
169 ASCIIToUTF16("text"), | |
170 0, | |
171 false), | |
172 ASCIIToUTF16("suffix1"))); | |
173 AutofillScanner scanner(list_.get()); | 151 AutofillScanner scanner(list_.get()); |
174 field_.reset(Parse(&scanner)); | 152 field_.reset(Parse(&scanner)); |
175 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 153 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
176 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 154 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
177 ASSERT_TRUE( | 155 ASSERT_TRUE( |
178 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 156 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
179 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 157 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
180 ASSERT_TRUE( | 158 ASSERT_TRUE( |
181 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 159 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
182 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 160 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
183 ASSERT_TRUE( | 161 ASSERT_TRUE( |
184 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 162 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
185 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 163 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
186 } | 164 } |
187 | 165 |
188 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { | 166 TEST_F(PhoneFieldTest, ThreePartPhoneNumberPrefixSuffix2) { |
189 list_.push_back( | 167 webkit_glue::FormField field; |
190 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("("), | 168 field.form_control_type = ASCIIToUTF16("text"); |
191 ASCIIToUTF16("phone1"), | 169 |
192 string16(), | 170 field.label = ASCIIToUTF16("("); |
193 ASCIIToUTF16("text"), | 171 field.name = ASCIIToUTF16("phone1"); |
194 3, | 172 field.max_length = 3; |
195 false), | 173 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone1"))); |
196 ASCIIToUTF16("phone1"))); | 174 |
197 list_.push_back( | 175 field.label = ASCIIToUTF16(")"); |
198 new AutofillField(webkit_glue::FormField(ASCIIToUTF16(")"), | 176 field.name = ASCIIToUTF16("phone2"); |
199 ASCIIToUTF16("phone2"), | 177 field.max_length = 3; |
200 string16(), | 178 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone2"))); |
201 ASCIIToUTF16("text"), | 179 |
202 3, | 180 field.label = string16(); |
203 false), | 181 field.name = ASCIIToUTF16("phone3"); |
204 ASCIIToUTF16("phone2"))); | 182 field.max_length = 4; |
205 list_.push_back( | 183 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone3"))); |
206 new AutofillField(webkit_glue::FormField(string16(), | 184 |
207 ASCIIToUTF16("phone3"), | |
208 string16(), | |
209 ASCIIToUTF16("text"), | |
210 4, | |
211 false), | |
212 ASCIIToUTF16("phone3"))); | |
213 AutofillScanner scanner(list_.get()); | 185 AutofillScanner scanner(list_.get()); |
214 field_.reset(Parse(&scanner)); | 186 field_.reset(Parse(&scanner)); |
215 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 187 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
216 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 188 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
217 ASSERT_TRUE( | 189 ASSERT_TRUE( |
218 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); | 190 field_type_map_.find(ASCIIToUTF16("phone1")) != field_type_map_.end()); |
219 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); | 191 EXPECT_EQ(PHONE_HOME_CITY_CODE, field_type_map_[ASCIIToUTF16("phone1")]); |
220 ASSERT_TRUE( | 192 ASSERT_TRUE( |
221 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); | 193 field_type_map_.find(ASCIIToUTF16("phone2")) != field_type_map_.end()); |
222 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); | 194 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone2")]); |
223 ASSERT_TRUE( | 195 ASSERT_TRUE( |
224 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); | 196 field_type_map_.find(ASCIIToUTF16("phone3")) != field_type_map_.end()); |
225 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); | 197 EXPECT_EQ(PHONE_HOME_NUMBER, field_type_map_[ASCIIToUTF16("phone3")]); |
226 } | 198 } |
227 | 199 |
228 TEST_F(PhoneFieldTest, ParseOneLineFax) { | 200 TEST_F(PhoneFieldTest, ParseOneLineFax) { |
229 list_.push_back( | 201 webkit_glue::FormField field; |
230 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax"), | 202 field.form_control_type = ASCIIToUTF16("text"); |
231 ASCIIToUTF16("fax"), | 203 |
232 string16(), | 204 field.label = ASCIIToUTF16("Fax"); |
233 ASCIIToUTF16("text"), | 205 field.name = ASCIIToUTF16("fax"); |
234 0, | 206 list_.push_back(new AutofillField(field, ASCIIToUTF16("fax1"))); |
235 false), | 207 |
236 ASCIIToUTF16("fax1"))); | |
237 AutofillScanner scanner(list_.get()); | 208 AutofillScanner scanner(list_.get()); |
238 field_.reset(Parse(&scanner)); | 209 field_.reset(Parse(&scanner)); |
239 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 210 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
240 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 211 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
241 ASSERT_TRUE( | 212 ASSERT_TRUE( |
242 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); | 213 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); |
243 EXPECT_EQ(PHONE_FAX_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); | 214 EXPECT_EQ(PHONE_FAX_WHOLE_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); |
244 } | 215 } |
245 | 216 |
246 TEST_F(PhoneFieldTest, ParseTwoLineFax) { | 217 TEST_F(PhoneFieldTest, ParseTwoLineFax) { |
247 list_.push_back( | 218 webkit_glue::FormField field; |
248 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Area Code"), | 219 field.form_control_type = ASCIIToUTF16("text"); |
249 ASCIIToUTF16("area code"), | 220 |
250 string16(), | 221 field.label = ASCIIToUTF16("Area Code"); |
251 ASCIIToUTF16("text"), | 222 field.name = ASCIIToUTF16("area code"); |
252 0, | 223 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
253 false), | 224 |
254 ASCIIToUTF16("areacode1"))); | 225 field.label = ASCIIToUTF16("Fax"); |
255 list_.push_back( | 226 field.name = ASCIIToUTF16("fax"); |
256 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax"), | 227 list_.push_back(new AutofillField(field, ASCIIToUTF16("fax2"))); |
257 ASCIIToUTF16("fax"), | 228 |
258 string16(), | |
259 ASCIIToUTF16("text"), | |
260 0, | |
261 false), | |
262 ASCIIToUTF16("fax1"))); | |
263 AutofillScanner scanner(list_.get()); | 229 AutofillScanner scanner(list_.get()); |
264 field_.reset(Parse(&scanner)); | 230 field_.reset(Parse(&scanner)); |
265 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 231 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
266 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 232 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
267 ASSERT_TRUE( | 233 ASSERT_TRUE( |
268 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 234 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
269 // It should be FAX, based on the other phone in the group. | 235 // It should be FAX, based on the other phone in the group. |
270 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 236 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
271 ASSERT_TRUE( | 237 ASSERT_TRUE( |
272 field_type_map_.find(ASCIIToUTF16("fax1")) != field_type_map_.end()); | 238 field_type_map_.find(ASCIIToUTF16("fax2")) != field_type_map_.end()); |
273 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("fax1")]); | 239 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("fax2")]); |
274 } | 240 } |
275 | 241 |
276 TEST_F(PhoneFieldTest, ThreePartFaxNumberPrefixSuffix) { | 242 TEST_F(PhoneFieldTest, ThreePartFaxNumberPrefixSuffix) { |
277 list_.push_back( | 243 webkit_glue::FormField field; |
278 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Fax:"), | 244 field.form_control_type = ASCIIToUTF16("text"); |
279 ASCIIToUTF16("area"), | 245 |
280 string16(), | 246 field.label = ASCIIToUTF16("Fax:"); |
281 ASCIIToUTF16("text"), | 247 field.name = ASCIIToUTF16("area"); |
282 0, | 248 list_.push_back(new AutofillField(field, ASCIIToUTF16("areacode1"))); |
283 false), | 249 |
284 ASCIIToUTF16("areacode1"))); | 250 field.label = string16(); |
285 list_.push_back( | 251 field.name = ASCIIToUTF16("prefix"); |
286 new AutofillField(webkit_glue::FormField(string16(), | 252 list_.push_back(new AutofillField(field, ASCIIToUTF16("prefix2"))); |
287 ASCIIToUTF16("prefix"), | 253 |
288 string16(), | 254 field.label = string16(); |
289 ASCIIToUTF16("text"), | 255 field.name = ASCIIToUTF16("suffix"); |
290 0, | 256 list_.push_back(new AutofillField(field, ASCIIToUTF16("suffix3"))); |
291 false), | 257 |
292 ASCIIToUTF16("prefix1"))); | |
293 list_.push_back( | |
294 new AutofillField(webkit_glue::FormField(string16(), | |
295 ASCIIToUTF16("suffix"), | |
296 string16(), | |
297 ASCIIToUTF16("text"), | |
298 0, | |
299 false), | |
300 ASCIIToUTF16("suffix1"))); | |
301 AutofillScanner scanner(list_.get()); | 258 AutofillScanner scanner(list_.get()); |
302 field_.reset(Parse(&scanner)); | 259 field_.reset(Parse(&scanner)); |
303 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 260 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
304 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 261 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
305 ASSERT_TRUE( | 262 ASSERT_TRUE( |
306 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); | 263 field_type_map_.find(ASCIIToUTF16("areacode1")) != field_type_map_.end()); |
307 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); | 264 EXPECT_EQ(PHONE_FAX_CITY_CODE, field_type_map_[ASCIIToUTF16("areacode1")]); |
308 ASSERT_TRUE( | 265 ASSERT_TRUE( |
309 field_type_map_.find(ASCIIToUTF16("prefix1")) != field_type_map_.end()); | 266 field_type_map_.find(ASCIIToUTF16("prefix2")) != field_type_map_.end()); |
310 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("prefix1")]); | 267 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("prefix2")]); |
311 ASSERT_TRUE( | 268 ASSERT_TRUE( |
312 field_type_map_.find(ASCIIToUTF16("suffix1")) != field_type_map_.end()); | 269 field_type_map_.find(ASCIIToUTF16("suffix3")) != field_type_map_.end()); |
313 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("suffix1")]); | 270 EXPECT_EQ(PHONE_FAX_NUMBER, field_type_map_[ASCIIToUTF16("suffix3")]); |
314 } | 271 } |
315 | 272 |
316 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { | 273 TEST_F(PhoneFieldTest, CountryAndCityAndPhoneNumber) { |
317 // Phone in format <country code>:3 - <city and number>:10 | 274 // Phone in format <country code>:3 - <city and number>:10 |
318 // The |maxlength| is considered, otherwise it's too broad. | 275 // The |maxlength| is considered, otherwise it's too broad. |
319 list_.push_back( | 276 webkit_glue::FormField field; |
320 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone Number"), | 277 field.form_control_type = ASCIIToUTF16("text"); |
321 ASCIIToUTF16("CountryCode"), | 278 |
322 string16(), | 279 field.label = ASCIIToUTF16("Phone Number"); |
323 ASCIIToUTF16("text"), | 280 field.name = ASCIIToUTF16("CountryCode"); |
324 3, | 281 field.max_length = 3; |
325 false), | 282 list_.push_back(new AutofillField(field, ASCIIToUTF16("country"))); |
326 ASCIIToUTF16("country"))); | 283 |
327 list_.push_back( | 284 field.label = ASCIIToUTF16("Phone Number"); |
328 new AutofillField(webkit_glue::FormField(ASCIIToUTF16("Phone Number"), | 285 field.name = ASCIIToUTF16("PhoneNumber"); |
329 ASCIIToUTF16("PhoneNumber"), | 286 field.max_length = 10; |
330 string16(), | 287 list_.push_back(new AutofillField(field, ASCIIToUTF16("phone"))); |
331 ASCIIToUTF16("text"), | 288 |
332 10, | |
333 false), | |
334 ASCIIToUTF16("phone"))); | |
335 AutofillScanner scanner(list_.get()); | 289 AutofillScanner scanner(list_.get()); |
336 field_.reset(Parse(&scanner)); | 290 field_.reset(Parse(&scanner)); |
337 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); | 291 ASSERT_NE(static_cast<PhoneField*>(NULL), field_.get()); |
338 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); | 292 ASSERT_TRUE(field_->ClassifyField(&field_type_map_)); |
339 ASSERT_TRUE( | 293 ASSERT_TRUE( |
340 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); | 294 field_type_map_.find(ASCIIToUTF16("country")) != field_type_map_.end()); |
341 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); | 295 EXPECT_EQ(PHONE_HOME_COUNTRY_CODE, field_type_map_[ASCIIToUTF16("country")]); |
342 ASSERT_TRUE( | 296 ASSERT_TRUE( |
343 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); | 297 field_type_map_.find(ASCIIToUTF16("phone")) != field_type_map_.end()); |
344 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); | 298 EXPECT_EQ(PHONE_HOME_CITY_AND_NUMBER, field_type_map_[ASCIIToUTF16("phone")]); |
345 } | 299 } |
OLD | NEW |