Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: components/autofill/core/browser/autofill_field_unittest.cc

Issue 1582353006: CountryNames: Separate data creation from usage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@571610_exposeCountryNamesToTesting
Patch Set: Just rebased Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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 "components/autofill/core/browser/autofill_field.h" 5 #include "components/autofill/core/browser/autofill_field.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "components/autofill/core/browser/autofill_type.h" 13 #include "components/autofill/core/browser/autofill_type.h"
14 #include "components/autofill/core/browser/country_names.h"
14 #include "components/autofill/core/browser/field_types.h" 15 #include "components/autofill/core/browser/field_types.h"
15 #include "components/autofill/core/common/autofill_util.h" 16 #include "components/autofill/core/common/autofill_util.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
19 using base::StringToInt; 20 using base::StringToInt;
20 using base::UTF8ToUTF16; 21 using base::UTF8ToUTF16;
21 22
22 namespace autofill { 23 namespace autofill {
23 namespace { 24 namespace {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 }; 132 };
132 133
133 // Returns the offset to be set within the credit card number field. 134 // Returns the offset to be set within the credit card number field.
134 size_t GetNumberOffset(size_t index, const TestCase& test) { 135 size_t GetNumberOffset(size_t index, const TestCase& test) {
135 size_t result = 0; 136 size_t result = 0;
136 for (size_t i = 0; i < index; ++i) 137 for (size_t i = 0; i < index; ++i)
137 result += test.splits_[i]; 138 result += test.splits_[i];
138 return result; 139 return result;
139 } 140 }
140 141
141 TEST(AutofillFieldTest, Type) { 142 class AutofillFieldTest : public testing::Test {
143 public:
144 AutofillFieldTest() { CountryNames::SetLocaleString("en-US"); }
145 };
146
147 TEST_F(AutofillFieldTest, Type) {
142 AutofillField field; 148 AutofillField field;
143 ASSERT_EQ(NO_SERVER_DATA, field.server_type()); 149 ASSERT_EQ(NO_SERVER_DATA, field.server_type());
144 ASSERT_EQ(UNKNOWN_TYPE, field.heuristic_type()); 150 ASSERT_EQ(UNKNOWN_TYPE, field.heuristic_type());
145 151
146 // |server_type_| is NO_SERVER_DATA, so |heuristic_type_| is returned. 152 // |server_type_| is NO_SERVER_DATA, so |heuristic_type_| is returned.
147 EXPECT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); 153 EXPECT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType());
148 154
149 // Set the heuristic type and check it. 155 // Set the heuristic type and check it.
150 field.set_heuristic_type(NAME_FIRST); 156 field.set_heuristic_type(NAME_FIRST);
151 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); 157 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType());
152 EXPECT_EQ(NAME, field.Type().group()); 158 EXPECT_EQ(NAME, field.Type().group());
153 159
154 // Set the server type and check it. 160 // Set the server type and check it.
155 field.set_server_type(ADDRESS_BILLING_LINE1); 161 field.set_server_type(ADDRESS_BILLING_LINE1);
156 EXPECT_EQ(ADDRESS_HOME_LINE1, field.Type().GetStorableType()); 162 EXPECT_EQ(ADDRESS_HOME_LINE1, field.Type().GetStorableType());
157 EXPECT_EQ(ADDRESS_BILLING, field.Type().group()); 163 EXPECT_EQ(ADDRESS_BILLING, field.Type().group());
158 164
159 // Remove the server type to make sure the heuristic type is preserved. 165 // Remove the server type to make sure the heuristic type is preserved.
160 field.set_server_type(NO_SERVER_DATA); 166 field.set_server_type(NO_SERVER_DATA);
161 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); 167 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType());
162 EXPECT_EQ(NAME, field.Type().group()); 168 EXPECT_EQ(NAME, field.Type().group());
163 } 169 }
164 170
165 TEST(AutofillFieldTest, IsEmpty) { 171 TEST_F(AutofillFieldTest, IsEmpty) {
166 AutofillField field; 172 AutofillField field;
167 ASSERT_EQ(base::string16(), field.value); 173 ASSERT_EQ(base::string16(), field.value);
168 174
169 // Field value is empty. 175 // Field value is empty.
170 EXPECT_TRUE(field.IsEmpty()); 176 EXPECT_TRUE(field.IsEmpty());
171 177
172 // Field value is non-empty. 178 // Field value is non-empty.
173 field.value = ASCIIToUTF16("Value"); 179 field.value = ASCIIToUTF16("Value");
174 EXPECT_FALSE(field.IsEmpty()); 180 EXPECT_FALSE(field.IsEmpty());
175 } 181 }
176 182
177 TEST(AutofillFieldTest, FieldSignature) { 183 TEST_F(AutofillFieldTest, FieldSignature) {
178 AutofillField field; 184 AutofillField field;
179 ASSERT_EQ(base::string16(), field.name); 185 ASSERT_EQ(base::string16(), field.name);
180 ASSERT_EQ(std::string(), field.form_control_type); 186 ASSERT_EQ(std::string(), field.form_control_type);
181 187
182 // Signature is empty. 188 // Signature is empty.
183 EXPECT_EQ("2085434232", field.FieldSignature()); 189 EXPECT_EQ("2085434232", field.FieldSignature());
184 190
185 // Field name is set. 191 // Field name is set.
186 field.name = ASCIIToUTF16("Name"); 192 field.name = ASCIIToUTF16("Name");
187 EXPECT_EQ("1606968241", field.FieldSignature()); 193 EXPECT_EQ("1606968241", field.FieldSignature());
188 194
189 // Field form control type is set. 195 // Field form control type is set.
190 field.form_control_type = "text"; 196 field.form_control_type = "text";
191 EXPECT_EQ("502192749", field.FieldSignature()); 197 EXPECT_EQ("502192749", field.FieldSignature());
192 198
193 // Heuristic type does not affect FieldSignature. 199 // Heuristic type does not affect FieldSignature.
194 field.set_heuristic_type(NAME_FIRST); 200 field.set_heuristic_type(NAME_FIRST);
195 EXPECT_EQ("502192749", field.FieldSignature()); 201 EXPECT_EQ("502192749", field.FieldSignature());
196 202
197 // Server type does not affect FieldSignature. 203 // Server type does not affect FieldSignature.
198 field.set_server_type(NAME_LAST); 204 field.set_server_type(NAME_LAST);
199 EXPECT_EQ("502192749", field.FieldSignature()); 205 EXPECT_EQ("502192749", field.FieldSignature());
200 } 206 }
201 207
202 TEST(AutofillFieldTest, IsFieldFillable) { 208 TEST_F(AutofillFieldTest, IsFieldFillable) {
203 AutofillField field; 209 AutofillField field;
204 ASSERT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); 210 ASSERT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType());
205 211
206 // Type is unknown. 212 // Type is unknown.
207 EXPECT_FALSE(field.IsFieldFillable()); 213 EXPECT_FALSE(field.IsFieldFillable());
208 214
209 // Only heuristic type is set. 215 // Only heuristic type is set.
210 field.set_heuristic_type(NAME_FIRST); 216 field.set_heuristic_type(NAME_FIRST);
211 EXPECT_TRUE(field.IsFieldFillable()); 217 EXPECT_TRUE(field.IsFieldFillable());
212 218
213 // Only server type is set. 219 // Only server type is set.
214 field.set_heuristic_type(UNKNOWN_TYPE); 220 field.set_heuristic_type(UNKNOWN_TYPE);
215 field.set_server_type(NAME_LAST); 221 field.set_server_type(NAME_LAST);
216 EXPECT_TRUE(field.IsFieldFillable()); 222 EXPECT_TRUE(field.IsFieldFillable());
217 223
218 // Both types set. 224 // Both types set.
219 field.set_heuristic_type(NAME_FIRST); 225 field.set_heuristic_type(NAME_FIRST);
220 field.set_server_type(NAME_LAST); 226 field.set_server_type(NAME_LAST);
221 EXPECT_TRUE(field.IsFieldFillable()); 227 EXPECT_TRUE(field.IsFieldFillable());
222 228
223 // Field has autocomplete="off" set. Since autofill was able to make a 229 // Field has autocomplete="off" set. Since autofill was able to make a
224 // prediction, it is still considered a fillable field. 230 // prediction, it is still considered a fillable field.
225 field.should_autocomplete = false; 231 field.should_autocomplete = false;
226 EXPECT_TRUE(field.IsFieldFillable()); 232 EXPECT_TRUE(field.IsFieldFillable());
227 } 233 }
228 234
229 // Verify that non credit card related fields with the autocomplete attribute 235 // Verify that non credit card related fields with the autocomplete attribute
230 // set to off don't get filled on desktop. 236 // set to off don't get filled on desktop.
231 TEST(AutofillFieldTest, FillFormField_AutocompleteOff_AddressField) { 237 TEST_F(AutofillFieldTest, FillFormField_AutocompleteOff_AddressField) {
232 AutofillField field; 238 AutofillField field;
233 field.should_autocomplete = false; 239 field.should_autocomplete = false;
234 240
235 // Non credit card related field. 241 // Non credit card related field.
236 AutofillField::FillFormField(field, ASCIIToUTF16("Test"), "en-US", "en-US", 242 AutofillField::FillFormField(field, ASCIIToUTF16("Test"), "en-US", "en-US",
237 &field); 243 &field);
238 244
239 // Verifiy that the field is filled on mobile but not on desktop. 245 // Verifiy that the field is filled on mobile but not on desktop.
240 if (IsDesktopPlatform()) { 246 if (IsDesktopPlatform()) {
241 EXPECT_EQ(base::string16(), field.value); 247 EXPECT_EQ(base::string16(), field.value);
242 } else { 248 } else {
243 EXPECT_EQ(ASCIIToUTF16("Test"), field.value); 249 EXPECT_EQ(ASCIIToUTF16("Test"), field.value);
244 } 250 }
245 } 251 }
246 252
247 // Verify that credit card related fields with the autocomplete attribute 253 // Verify that credit card related fields with the autocomplete attribute
248 // set to off get filled. 254 // set to off get filled.
249 TEST(AutofillFieldTest, FillFormField_AutocompleteOff_CreditCardField) { 255 TEST_F(AutofillFieldTest, FillFormField_AutocompleteOff_CreditCardField) {
250 AutofillField field; 256 AutofillField field;
251 field.should_autocomplete = false; 257 field.should_autocomplete = false;
252 258
253 // Credit card related field. 259 // Credit card related field.
254 field.set_heuristic_type(CREDIT_CARD_NUMBER); 260 field.set_heuristic_type(CREDIT_CARD_NUMBER);
255 AutofillField::FillFormField(field, ASCIIToUTF16("4111111111111111"), "en-US", 261 AutofillField::FillFormField(field, ASCIIToUTF16("4111111111111111"), "en-US",
256 "en-US", &field); 262 "en-US", &field);
257 263
258 // Verify that the field is filled. 264 // Verify that the field is filled.
259 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), field.value); 265 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), field.value);
260 } 266 }
261 267
262 TEST(AutofillFieldTest, FillPhoneNumber) { 268 TEST_F(AutofillFieldTest, FillPhoneNumber) {
263 AutofillField field; 269 AutofillField field;
264 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode()); 270 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode());
265 271
266 // Fill with a non-phone number; should fill normally. 272 // Fill with a non-phone number; should fill normally.
267 AutofillField::FillFormField( 273 AutofillField::FillFormField(
268 field, ASCIIToUTF16("Oh hai"), "en-US", "en-US", &field); 274 field, ASCIIToUTF16("Oh hai"), "en-US", "en-US", &field);
269 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value); 275 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value);
270 276
271 // Fill with a phone number; should fill just the prefix. 277 // Fill with a phone number; should fill just the prefix.
272 AutofillField::FillFormField( 278 AutofillField::FillFormField(
273 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); 279 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field);
274 EXPECT_EQ(ASCIIToUTF16("555"), field.value); 280 EXPECT_EQ(ASCIIToUTF16("555"), field.value);
275 281
276 // Now reset the type, and set a max-length instead. 282 // Now reset the type, and set a max-length instead.
277 field.SetHtmlType(HTML_TYPE_UNSPECIFIED, HtmlFieldMode()); 283 field.SetHtmlType(HTML_TYPE_UNSPECIFIED, HtmlFieldMode());
278 field.set_heuristic_type(PHONE_HOME_NUMBER); 284 field.set_heuristic_type(PHONE_HOME_NUMBER);
279 field.max_length = 4; 285 field.max_length = 4;
280 286
281 // Fill with a phone-number; should fill just the suffix. 287 // Fill with a phone-number; should fill just the suffix.
282 AutofillField::FillFormField( 288 AutofillField::FillFormField(
283 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); 289 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field);
284 EXPECT_EQ(ASCIIToUTF16("1234"), field.value); 290 EXPECT_EQ(ASCIIToUTF16("1234"), field.value);
285 } 291 }
286 292
287 TEST(AutofillFieldTest, FillSelectControlByValue) { 293 TEST_F(AutofillFieldTest, FillSelectControlByValue) {
288 std::vector<const char*> kOptions = { 294 std::vector<const char*> kOptions = {
289 "Eenie", "Meenie", "Miney", "Mo", 295 "Eenie", "Meenie", "Miney", "Mo",
290 }; 296 };
291 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), 297 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()),
292 base::string16()); 298 base::string16());
293 299
294 // Set semantically empty contents for each option, so that only the values 300 // Set semantically empty contents for each option, so that only the values
295 // can be used for matching. 301 // can be used for matching.
296 for (size_t i = 0; i < field.option_contents.size(); ++i) 302 for (size_t i = 0; i < field.option_contents.size(); ++i)
297 field.option_contents[i] = base::SizeTToString16(i); 303 field.option_contents[i] = base::SizeTToString16(i);
298 304
299 AutofillField::FillFormField( 305 AutofillField::FillFormField(
300 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field); 306 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field);
301 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value); 307 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value);
302 } 308 }
303 309
304 TEST(AutofillFieldTest, FillSelectControlByContents) { 310 TEST_F(AutofillFieldTest, FillSelectControlByContents) {
305 std::vector<const char*> kOptions = { 311 std::vector<const char*> kOptions = {
306 "Eenie", "Meenie", "Miney", "Mo", 312 "Eenie", "Meenie", "Miney", "Mo",
307 }; 313 };
308 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), 314 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()),
309 base::string16()); 315 base::string16());
310 316
311 // Set semantically empty values for each option, so that only the contents 317 // Set semantically empty values for each option, so that only the contents
312 // can be used for matching. 318 // can be used for matching.
313 for (size_t i = 0; i < field.option_values.size(); ++i) 319 for (size_t i = 0; i < field.option_values.size(); ++i)
314 field.option_values[i] = base::SizeTToString16(i); 320 field.option_values[i] = base::SizeTToString16(i);
315 321
316 AutofillField::FillFormField( 322 AutofillField::FillFormField(
317 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field); 323 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field);
318 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". 324 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney".
319 } 325 }
320 326
321 TEST(AutofillFieldTest, FillSelectControlWithFullCountryNames) { 327 TEST_F(AutofillFieldTest, FillSelectControlWithFullCountryNames) {
322 std::vector<const char*> kCountries = {"Albania", "Canada"}; 328 std::vector<const char*> kCountries = {"Albania", "Canada"};
323 AutofillField field( 329 AutofillField field(
324 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), 330 GenerateSelectFieldWithOptions(kCountries, kCountries.size()),
325 base::string16()); 331 base::string16());
326 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 332 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
327 333
328 AutofillField::FillFormField( 334 AutofillField::FillFormField(
329 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 335 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
330 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); 336 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value);
331 } 337 }
332 338
333 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { 339 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) {
334 std::vector<const char*> kCountries = {"AL", "CA"}; 340 std::vector<const char*> kCountries = {"AL", "CA"};
335 AutofillField field( 341 AutofillField field(
336 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), 342 GenerateSelectFieldWithOptions(kCountries, kCountries.size()),
337 base::string16()); 343 base::string16());
338 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 344 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
339 345
340 AutofillField::FillFormField( 346 AutofillField::FillFormField(
341 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field); 347 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field);
342 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 348 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
343 } 349 }
344 350
345 TEST(AutofillFieldTest, FillSelectControlWithFullStateNames) { 351 TEST_F(AutofillFieldTest, FillSelectControlWithFullStateNames) {
346 std::vector<const char*> kStates = {"Alabama", "California"}; 352 std::vector<const char*> kStates = {"Alabama", "California"};
347 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 353 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()),
348 base::string16()); 354 base::string16());
349 field.set_heuristic_type(ADDRESS_HOME_STATE); 355 field.set_heuristic_type(ADDRESS_HOME_STATE);
350 356
351 AutofillField::FillFormField( 357 AutofillField::FillFormField(
352 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 358 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
353 EXPECT_EQ(ASCIIToUTF16("California"), field.value); 359 EXPECT_EQ(ASCIIToUTF16("California"), field.value);
354 } 360 }
355 361
356 TEST(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { 362 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) {
357 std::vector<const char*> kStates = {"AL", "CA"}; 363 std::vector<const char*> kStates = {"AL", "CA"};
358 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 364 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()),
359 base::string16()); 365 base::string16());
360 field.set_heuristic_type(ADDRESS_HOME_STATE); 366 field.set_heuristic_type(ADDRESS_HOME_STATE);
361 367
362 AutofillField::FillFormField( 368 AutofillField::FillFormField(
363 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 369 field, ASCIIToUTF16("California"), "en-US", "en-US", &field);
364 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 370 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
365 } 371 }
366 372
367 TEST(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { 373 TEST_F(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) {
368 { 374 {
369 std::vector<const char*> kStates = { 375 std::vector<const char*> kStates = {
370 "SC - South Carolina", "CA - California", "NC - North Carolina", 376 "SC - South Carolina", "CA - California", "NC - North Carolina",
371 }; 377 };
372 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 378 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()),
373 base::string16()); 379 base::string16());
374 field.set_heuristic_type(ADDRESS_HOME_STATE); 380 field.set_heuristic_type(ADDRESS_HOME_STATE);
375 381
376 AutofillField::FillFormField( 382 AutofillField::FillFormField(
377 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 383 field, ASCIIToUTF16("California"), "en-US", "en-US", &field);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 424 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()),
419 base::string16()); 425 base::string16());
420 field.set_heuristic_type(ADDRESS_HOME_STATE); 426 field.set_heuristic_type(ADDRESS_HOME_STATE);
421 427
422 AutofillField::FillFormField( 428 AutofillField::FillFormField(
423 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); 429 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field);
424 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); 430 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value);
425 } 431 }
426 } 432 }
427 433
428 TEST(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { 434 TEST_F(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) {
429 { 435 {
430 std::vector<const char*> kStates = { 436 std::vector<const char*> kStates = {
431 "NC - North Carolina", "CA - California", 437 "NC - North Carolina", "CA - California",
432 }; 438 };
433 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 439 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()),
434 base::string16()); 440 base::string16());
435 field.set_heuristic_type(ADDRESS_HOME_STATE); 441 field.set_heuristic_type(ADDRESS_HOME_STATE);
436 442
437 AutofillField::FillFormField( 443 AutofillField::FillFormField(
438 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 444 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
439 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); 445 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
440 } 446 }
441 447
442 { 448 {
443 std::vector<const char*> kNotStates = { 449 std::vector<const char*> kNotStates = {
444 "NCNCA", "SCNCA", 450 "NCNCA", "SCNCA",
445 }; 451 };
446 AutofillField field( 452 AutofillField field(
447 GenerateSelectFieldWithOptions(kNotStates, kNotStates.size()), 453 GenerateSelectFieldWithOptions(kNotStates, kNotStates.size()),
448 base::string16()); 454 base::string16());
449 field.set_heuristic_type(ADDRESS_HOME_STATE); 455 field.set_heuristic_type(ADDRESS_HOME_STATE);
450 456
451 AutofillField::FillFormField( 457 AutofillField::FillFormField(
452 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); 458 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field);
453 EXPECT_EQ(base::string16(), field.value); 459 EXPECT_EQ(base::string16(), field.value);
454 } 460 }
455 } 461 }
456 462
457 TEST(AutofillFieldTest, FillSelectControlWithExpirationMonth) { 463 TEST_F(AutofillFieldTest, FillSelectControlWithExpirationMonth) {
458 typedef struct { 464 typedef struct {
459 std::vector<const char*> select_values; 465 std::vector<const char*> select_values;
460 std::vector<const char*> select_contents; 466 std::vector<const char*> select_contents;
461 } TestCase; 467 } TestCase;
462 468
463 TestCase test_cases[] = { 469 TestCase test_cases[] = {
464 // Values start at 1. 470 // Values start at 1.
465 {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, 471 {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"},
466 NotNumericMonthsContentsNoPlaceholder()}, 472 NotNumericMonthsContentsNoPlaceholder()},
467 // Values start at 0. 473 // Values start at 0.
(...skipping 15 matching lines...) Expand all
483 489
484 for (TestCase test_case : test_cases) { 490 for (TestCase test_case : test_cases) {
485 ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size()); 491 ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size());
486 492
487 TestFillingExpirationMonth(test_case.select_values, 493 TestFillingExpirationMonth(test_case.select_values,
488 test_case.select_contents, 494 test_case.select_contents,
489 test_case.select_values.size()); 495 test_case.select_values.size());
490 } 496 }
491 } 497 }
492 498
493 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) { 499 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) {
494 std::vector<const char*> kMonthsAbbreviated = { 500 std::vector<const char*> kMonthsAbbreviated = {
495 "Jan", "Feb", "Mar", "Apr", "May", "Jun", 501 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
496 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 502 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
497 }; 503 };
498 AutofillField field(GenerateSelectFieldWithOptions(kMonthsAbbreviated, 504 AutofillField field(GenerateSelectFieldWithOptions(kMonthsAbbreviated,
499 kMonthsAbbreviated.size()), 505 kMonthsAbbreviated.size()),
500 base::string16()); 506 base::string16());
501 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 507 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
502 508
503 AutofillField::FillFormField( 509 AutofillField::FillFormField(
504 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 510 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
505 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value); 511 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value);
506 } 512 }
507 513
508 TEST(AutofillFieldTest, FillSelectControlWithFullMonthName) { 514 TEST_F(AutofillFieldTest, FillSelectControlWithFullMonthName) {
509 std::vector<const char*> kMonthsFull = { 515 std::vector<const char*> kMonthsFull = {
510 "January", "February", "March", "April", "May", "June", 516 "January", "February", "March", "April", "May", "June",
511 "July", "August", "September", "October", "November", "December", 517 "July", "August", "September", "October", "November", "December",
512 }; 518 };
513 AutofillField field( 519 AutofillField field(
514 GenerateSelectFieldWithOptions(kMonthsFull, kMonthsFull.size()), 520 GenerateSelectFieldWithOptions(kMonthsFull, kMonthsFull.size()),
515 base::string16()); 521 base::string16());
516 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 522 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
517 523
518 AutofillField::FillFormField( 524 AutofillField::FillFormField(
519 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 525 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
520 EXPECT_EQ(ASCIIToUTF16("April"), field.value); 526 EXPECT_EQ(ASCIIToUTF16("April"), field.value);
521 } 527 }
522 528
523 TEST(AutofillFieldTest, FillSelectControlWithFrenchMonthName) { 529 TEST_F(AutofillFieldTest, FillSelectControlWithFrenchMonthName) {
524 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS", 530 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS",
525 "décembre"}; 531 "décembre"};
526 AutofillField field( 532 AutofillField field(
527 GenerateSelectFieldWithOptions(kMonthsFrench, kMonthsFrench.size()), 533 GenerateSelectFieldWithOptions(kMonthsFrench, kMonthsFrench.size()),
528 base::string16()); 534 base::string16());
529 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 535 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
530 536
531 AutofillField::FillFormField( 537 AutofillField::FillFormField(
532 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field); 538 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field);
533 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value); 539 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value);
534 540
535 AutofillField::FillFormField( 541 AutofillField::FillFormField(
536 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field); 542 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field);
537 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value); 543 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value);
538 544
539 AutofillField::FillFormField( 545 AutofillField::FillFormField(
540 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field); 546 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field);
541 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value); 547 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value);
542 } 548 }
543 549
544 TEST(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) { 550 TEST_F(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) {
545 std::vector<const char*> kMonthsNumeric = { 551 std::vector<const char*> kMonthsNumeric = {
546 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 552 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
547 }; 553 };
548 AutofillField field( 554 AutofillField field(
549 GenerateSelectFieldWithOptions(kMonthsNumeric, kMonthsNumeric.size()), 555 GenerateSelectFieldWithOptions(kMonthsNumeric, kMonthsNumeric.size()),
550 base::string16()); 556 base::string16());
551 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 557 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
552 558
553 AutofillField::FillFormField( 559 AutofillField::FillFormField(
554 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 560 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
555 EXPECT_EQ(ASCIIToUTF16("4"), field.value); 561 EXPECT_EQ(ASCIIToUTF16("4"), field.value);
556 } 562 }
557 563
558 TEST(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) { 564 TEST_F(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) {
559 std::vector<const char*> kYears = {"12", "13", "14", "15", 565 std::vector<const char*> kYears = {"12", "13", "14", "15",
560 "16", "17", "18", "19"}; 566 "16", "17", "18", "19"};
561 AutofillField field(GenerateSelectFieldWithOptions(kYears, kYears.size()), 567 AutofillField field(GenerateSelectFieldWithOptions(kYears, kYears.size()),
562 base::string16()); 568 base::string16());
563 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR); 569 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR);
564 570
565 AutofillField::FillFormField( 571 AutofillField::FillFormField(
566 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field); 572 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field);
567 EXPECT_EQ(ASCIIToUTF16("17"), field.value); 573 EXPECT_EQ(ASCIIToUTF16("17"), field.value);
568 } 574 }
569 575
570 TEST(AutofillFieldTest, FillSelectControlWithCreditCardType) { 576 TEST_F(AutofillFieldTest, FillSelectControlWithCreditCardType) {
571 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx", 577 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx",
572 "discover"}; 578 "discover"};
573 AutofillField field( 579 AutofillField field(
574 GenerateSelectFieldWithOptions(kCreditCardTypes, kCreditCardTypes.size()), 580 GenerateSelectFieldWithOptions(kCreditCardTypes, kCreditCardTypes.size()),
575 base::string16()); 581 base::string16());
576 field.set_heuristic_type(CREDIT_CARD_TYPE); 582 field.set_heuristic_type(CREDIT_CARD_TYPE);
577 583
578 // Normal case: 584 // Normal case:
579 AutofillField::FillFormField( 585 AutofillField::FillFormField(
580 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field); 586 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field);
581 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value); 587 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value);
582 588
583 // Filling should be able to handle intervening whitespace: 589 // Filling should be able to handle intervening whitespace:
584 AutofillField::FillFormField( 590 AutofillField::FillFormField(
585 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field); 591 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field);
586 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value); 592 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value);
587 593
588 // American Express is sometimes abbreviated as AmEx: 594 // American Express is sometimes abbreviated as AmEx:
589 AutofillField::FillFormField( 595 AutofillField::FillFormField(
590 field, ASCIIToUTF16("American Express"), "en-US", "en-US", &field); 596 field, ASCIIToUTF16("American Express"), "en-US", "en-US", &field);
591 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value); 597 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value);
592 598
593 // Case insensitivity: 599 // Case insensitivity:
594 AutofillField::FillFormField( 600 AutofillField::FillFormField(
595 field, ASCIIToUTF16("Discover"), "en-US", "en-US", &field); 601 field, ASCIIToUTF16("Discover"), "en-US", "en-US", &field);
596 EXPECT_EQ(ASCIIToUTF16("discover"), field.value); 602 EXPECT_EQ(ASCIIToUTF16("discover"), field.value);
597 } 603 }
598 604
599 TEST(AutofillFieldTest, FillMonthControl) { 605 TEST_F(AutofillFieldTest, FillMonthControl) {
600 AutofillField field; 606 AutofillField field;
601 field.form_control_type = "month"; 607 field.form_control_type = "month";
602 608
603 // Try a month with two digits. 609 // Try a month with two digits.
604 AutofillField::FillFormField( 610 AutofillField::FillFormField(
605 field, ASCIIToUTF16("12/2017"), "en-US", "en-US", &field); 611 field, ASCIIToUTF16("12/2017"), "en-US", "en-US", &field);
606 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value); 612 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value);
607 613
608 // Try a month with a leading zero. 614 // Try a month with a leading zero.
609 AutofillField::FillFormField( 615 AutofillField::FillFormField(
610 field, ASCIIToUTF16("03/2019"), "en-US", "en-US", &field); 616 field, ASCIIToUTF16("03/2019"), "en-US", "en-US", &field);
611 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value); 617 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value);
612 618
613 // Try a month without a leading zero. 619 // Try a month without a leading zero.
614 AutofillField::FillFormField( 620 AutofillField::FillFormField(
615 field, ASCIIToUTF16("4/2018"), "en-US", "en-US", &field); 621 field, ASCIIToUTF16("4/2018"), "en-US", "en-US", &field);
616 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value); 622 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value);
617 } 623 }
618 624
619 TEST(AutofillFieldTest, FillStreetAddressTextArea) { 625 TEST_F(AutofillFieldTest, FillStreetAddressTextArea) {
620 AutofillField field; 626 AutofillField field;
621 field.form_control_type = "textarea"; 627 field.form_control_type = "textarea";
622 628
623 base::string16 value = ASCIIToUTF16("123 Fake St.\n" 629 base::string16 value = ASCIIToUTF16("123 Fake St.\n"
624 "Apt. 42"); 630 "Apt. 42");
625 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); 631 AutofillField::FillFormField(field, value, "en-US", "en-US", &field);
626 EXPECT_EQ(value, field.value); 632 EXPECT_EQ(value, field.value);
627 633
628 base::string16 ja_value = UTF8ToUTF16("桜丘町26-1\n" 634 base::string16 ja_value = UTF8ToUTF16("桜丘町26-1\n"
629 "セルリアンタワー6階"); 635 "セルリアンタワー6階");
630 AutofillField::FillFormField(field, ja_value, "ja-JP", "en-US", &field); 636 AutofillField::FillFormField(field, ja_value, "ja-JP", "en-US", &field);
631 EXPECT_EQ(ja_value, field.value); 637 EXPECT_EQ(ja_value, field.value);
632 } 638 }
633 639
634 TEST(AutofillFieldTest, FillStreetAddressTextField) { 640 TEST_F(AutofillFieldTest, FillStreetAddressTextField) {
635 AutofillField field; 641 AutofillField field;
636 field.form_control_type = "text"; 642 field.form_control_type = "text";
637 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); 643 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS);
638 644
639 base::string16 value = ASCIIToUTF16("123 Fake St.\n" 645 base::string16 value = ASCIIToUTF16("123 Fake St.\n"
640 "Apt. 42"); 646 "Apt. 42");
641 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); 647 AutofillField::FillFormField(field, value, "en-US", "en-US", &field);
642 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value); 648 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value);
643 649
644 AutofillField::FillFormField(field, 650 AutofillField::FillFormField(field,
645 UTF8ToUTF16("桜丘町26-1\n" 651 UTF8ToUTF16("桜丘町26-1\n"
646 "セルリアンタワー6階"), 652 "セルリアンタワー6階"),
647 "ja-JP", 653 "ja-JP",
648 "en-US", 654 "en-US",
649 &field); 655 &field);
650 EXPECT_EQ(UTF8ToUTF16("桜丘町26-1セルリアンタワー6階"), field.value); 656 EXPECT_EQ(UTF8ToUTF16("桜丘町26-1セルリアンタワー6階"), field.value);
651 } 657 }
652 658
653 TEST(AutofillFieldTest, FillCreditCardNumberWithoutSplits) { 659 TEST_F(AutofillFieldTest, FillCreditCardNumberWithoutSplits) {
654 // Case 1: card number without any spilt. 660 // Case 1: card number without any spilt.
655 AutofillField cc_number_full; 661 AutofillField cc_number_full;
656 cc_number_full.set_heuristic_type(CREDIT_CARD_NUMBER); 662 cc_number_full.set_heuristic_type(CREDIT_CARD_NUMBER);
657 AutofillField::FillFormField(cc_number_full, 663 AutofillField::FillFormField(cc_number_full,
658 ASCIIToUTF16("4111111111111111"), 664 ASCIIToUTF16("4111111111111111"),
659 "en-US", 665 "en-US",
660 "en-US", 666 "en-US",
661 &cc_number_full); 667 &cc_number_full);
662 668
663 // Verify that full card-number shall get fill properly. 669 // Verify that full card-number shall get fill properly.
664 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), cc_number_full.value); 670 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), cc_number_full.value);
665 EXPECT_EQ(0U, cc_number_full.credit_card_number_offset()); 671 EXPECT_EQ(0U, cc_number_full.credit_card_number_offset());
666 } 672 }
667 673
668 TEST(AutofillFieldTest, FillCreditCardNumberWithEqualSizeSplits) { 674 TEST_F(AutofillFieldTest, FillCreditCardNumberWithEqualSizeSplits) {
669 // Case 2: card number broken up into four equal groups, of length 4. 675 // Case 2: card number broken up into four equal groups, of length 4.
670 TestCase test; 676 TestCase test;
671 test.card_number_ = "5187654321098765"; 677 test.card_number_ = "5187654321098765";
672 test.total_spilts_ = 4; 678 test.total_spilts_ = 4;
673 int splits[] = {4, 4, 4, 4}; 679 int splits[] = {4, 4, 4, 4};
674 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); 680 test.splits_ = std::vector<int>(splits, splits + arraysize(splits));
675 std::string results[] = {"5187", "6543", "2109", "8765"}; 681 std::string results[] = {"5187", "6543", "2109", "8765"};
676 test.expected_results_ = 682 test.expected_results_ =
677 std::vector<std::string>(results, results + arraysize(results)); 683 std::vector<std::string>(results, results + arraysize(results));
678 684
(...skipping 22 matching lines...) Expand all
701 AutofillField::FillFormField(cc_number_full, 707 AutofillField::FillFormField(cc_number_full,
702 ASCIIToUTF16(test.card_number_), 708 ASCIIToUTF16(test.card_number_),
703 "en-US", 709 "en-US",
704 "en-US", 710 "en-US",
705 &cc_number_full); 711 &cc_number_full);
706 712
707 // Verify for expected results. 713 // Verify for expected results.
708 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); 714 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value);
709 } 715 }
710 716
711 TEST(AutofillFieldTest, FillCreditCardNumberWithUnequalSizeSplits) { 717 TEST_F(AutofillFieldTest, FillCreditCardNumberWithUnequalSizeSplits) {
712 // Case 3: card with 15 digits number, broken up into three unequal groups, of 718 // Case 3: card with 15 digits number, broken up into three unequal groups, of
713 // lengths 4, 6, and 5. 719 // lengths 4, 6, and 5.
714 TestCase test; 720 TestCase test;
715 test.card_number_ = "423456789012345"; 721 test.card_number_ = "423456789012345";
716 test.total_spilts_ = 3; 722 test.total_spilts_ = 3;
717 int splits[] = {4, 6, 5}; 723 int splits[] = {4, 6, 5};
718 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); 724 test.splits_ = std::vector<int>(splits, splits + arraysize(splits));
719 std::string results[] = {"4234", "567890", "12345"}; 725 std::string results[] = {"4234", "567890", "12345"};
720 test.expected_results_ = 726 test.expected_results_ =
721 std::vector<std::string>(results, results + arraysize(results)); 727 std::vector<std::string>(results, results + arraysize(results));
(...skipping 25 matching lines...) Expand all
747 AutofillField::FillFormField(cc_number_full, 753 AutofillField::FillFormField(cc_number_full,
748 ASCIIToUTF16(test.card_number_), 754 ASCIIToUTF16(test.card_number_),
749 "en-US", 755 "en-US",
750 "en-US", 756 "en-US",
751 &cc_number_full); 757 &cc_number_full);
752 758
753 // Verify for expected results. 759 // Verify for expected results.
754 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); 760 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value);
755 } 761 }
756 762
757 TEST(AutofillFieldTest, FindValueInSelectControl) { 763 TEST_F(AutofillFieldTest, FindValueInSelectControl) {
758 const size_t kBadIndex = 1000; 764 const size_t kBadIndex = 1000;
759 765
760 { 766 {
761 std::vector<const char*> kCountries = {"Albania", "Canada"}; 767 std::vector<const char*> kCountries = {"Albania", "Canada"};
762 FormFieldData field( 768 FormFieldData field(
763 GenerateSelectFieldWithOptions(kCountries, kCountries.size())); 769 GenerateSelectFieldWithOptions(kCountries, kCountries.size()));
764 size_t index = kBadIndex; 770 size_t index = kBadIndex;
765 bool ret = AutofillField::FindValueInSelectControl( 771 bool ret = AutofillField::FindValueInSelectControl(
766 field, ASCIIToUTF16("Canada"), &index); 772 field, ASCIIToUTF16("Canada"), &index);
767 EXPECT_TRUE(ret); 773 EXPECT_TRUE(ret);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 index = kBadIndex; 807 index = kBadIndex;
802 ret = AutofillField::FindValueInSelectControl( 808 ret = AutofillField::FindValueInSelectControl(
803 field, UTF8ToUTF16("NoVaScOtIa"), &index); 809 field, UTF8ToUTF16("NoVaScOtIa"), &index);
804 EXPECT_TRUE(ret); 810 EXPECT_TRUE(ret);
805 EXPECT_EQ(2U, index); 811 EXPECT_EQ(2U, index);
806 } 812 }
807 } 813 }
808 814
809 } // namespace 815 } // namespace
810 } // namespace autofill 816 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_field.cc ('k') | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698