OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/ref_counted.h" | 7 #include "base/ref_counted.h" |
8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
9 #include "base/scoped_vector.h" | 9 #include "base/scoped_vector.h" |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 } | 83 } |
84 | 84 |
85 void ClearAutoFillProfiles() { | 85 void ClearAutoFillProfiles() { |
86 web_profiles_.reset(); | 86 web_profiles_.reset(); |
87 } | 87 } |
88 | 88 |
89 void ClearCreditCards() { | 89 void ClearCreditCards() { |
90 credit_cards_.reset(); | 90 credit_cards_.reset(); |
91 } | 91 } |
92 | 92 |
| 93 void CreateTestCreditCardsYearAndMonth(const char* year, const char* month) { |
| 94 ClearCreditCards(); |
| 95 CreditCard* credit_card = new CreditCard; |
| 96 autofill_test::SetCreditCardInfo(credit_card, "Miku", "Miku Hatsune", |
| 97 "4234567890654321", // Visa |
| 98 month, year); |
| 99 credit_card->set_guid("00000000-0000-0000-0000-000000000007"); |
| 100 credit_cards_->push_back(credit_card); |
| 101 } |
| 102 |
93 private: | 103 private: |
94 void CreateTestAutoFillProfiles(ScopedVector<AutoFillProfile>* profiles) { | 104 void CreateTestAutoFillProfiles(ScopedVector<AutoFillProfile>* profiles) { |
95 AutoFillProfile* profile = new AutoFillProfile; | 105 AutoFillProfile* profile = new AutoFillProfile; |
96 autofill_test::SetProfileInfo(profile, "Home", "Elvis", "Aaron", | 106 autofill_test::SetProfileInfo(profile, "Home", "Elvis", "Aaron", |
97 "Presley", "theking@gmail.com", "RCA", | 107 "Presley", "theking@gmail.com", "RCA", |
98 "3734 Elvis Presley Blvd.", "Apt. 10", | 108 "3734 Elvis Presley Blvd.", "Apt. 10", |
99 "Memphis", "Tennessee", "38116", "USA", | 109 "Memphis", "Tennessee", "38116", "USA", |
100 "12345678901", ""); | 110 "12345678901", ""); |
101 profile->set_guid("00000000-0000-0000-0000-000000000001"); | 111 profile->set_guid("00000000-0000-0000-0000-000000000001"); |
102 profiles->push_back(profile); | 112 profiles->push_back(profile); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 form->fields.push_back(field); | 187 form->fields.push_back(field); |
178 autofill_test::CreateTestFormField( | 188 autofill_test::CreateTestFormField( |
179 "Phone Number", "phonenumber", "", "text", &field); | 189 "Phone Number", "phonenumber", "", "text", &field); |
180 form->fields.push_back(field); | 190 form->fields.push_back(field); |
181 autofill_test::CreateTestFormField( | 191 autofill_test::CreateTestFormField( |
182 "Fax", "fax", "", "text", &field); | 192 "Fax", "fax", "", "text", &field); |
183 form->fields.push_back(field); | 193 form->fields.push_back(field); |
184 autofill_test::CreateTestFormField( | 194 autofill_test::CreateTestFormField( |
185 "Email", "email", "", "text", &field); | 195 "Email", "email", "", "text", &field); |
186 form->fields.push_back(field); | 196 form->fields.push_back(field); |
| 197 autofill_test::CreateTestFormField( |
| 198 "Email", "email2", "", "email", &field); |
| 199 form->fields.push_back(field); |
| 200 autofill_test::CreateTestFormField( |
| 201 "Phone Number", "phonenumber2", "", "tel", &field); |
| 202 form->fields.push_back(field); |
187 } | 203 } |
188 | 204 |
189 // Populates |form| with data corresponding to a simple credit card form. | 205 // Populates |form| with data corresponding to a simple credit card form. |
190 // Note that this actually appends fields to the form data, which can be useful | 206 // Note that this actually appends fields to the form data, which can be useful |
191 // for building up more complex test forms. | 207 // for building up more complex test forms. |
192 void CreateTestCreditCardFormData(FormData* form, bool is_https) { | 208 void CreateTestCreditCardFormData(FormData* form, |
| 209 bool is_https, |
| 210 bool use_month_type) { |
193 form->name = ASCIIToUTF16("MyForm"); | 211 form->name = ASCIIToUTF16("MyForm"); |
194 form->method = ASCIIToUTF16("POST"); | 212 form->method = ASCIIToUTF16("POST"); |
195 if (is_https) { | 213 if (is_https) { |
196 form->origin = GURL("https://myform.com/form.html"); | 214 form->origin = GURL("https://myform.com/form.html"); |
197 form->action = GURL("https://myform.com/submit.html"); | 215 form->action = GURL("https://myform.com/submit.html"); |
198 } else { | 216 } else { |
199 form->origin = GURL("http://myform.com/form.html"); | 217 form->origin = GURL("http://myform.com/form.html"); |
200 form->action = GURL("http://myform.com/submit.html"); | 218 form->action = GURL("http://myform.com/submit.html"); |
201 } | 219 } |
202 form->user_submitted = true; | 220 form->user_submitted = true; |
203 | 221 |
204 FormField field; | 222 FormField field; |
205 autofill_test::CreateTestFormField( | 223 autofill_test::CreateTestFormField( |
206 "Name on Card", "nameoncard", "", "text", &field); | 224 "Name on Card", "nameoncard", "", "text", &field); |
207 form->fields.push_back(field); | 225 form->fields.push_back(field); |
208 autofill_test::CreateTestFormField( | 226 autofill_test::CreateTestFormField( |
209 "Card Number", "cardnumber", "", "text", &field); | 227 "Card Number", "cardnumber", "", "text", &field); |
210 form->fields.push_back(field); | 228 form->fields.push_back(field); |
211 autofill_test::CreateTestFormField( | 229 if (use_month_type) { |
212 "Expiration Date", "ccmonth", "", "text", &field); | 230 autofill_test::CreateTestFormField( |
213 form->fields.push_back(field); | 231 "Expiration Date", "ccmonth", "", "month", &field); |
214 autofill_test::CreateTestFormField( | 232 form->fields.push_back(field); |
215 "", "ccyear", "", "text", &field); | 233 } else { |
216 form->fields.push_back(field); | 234 autofill_test::CreateTestFormField( |
| 235 "Expiration Date", "ccmonth", "", "text", &field); |
| 236 form->fields.push_back(field); |
| 237 autofill_test::CreateTestFormField( |
| 238 "", "ccyear", "", "text", &field); |
| 239 form->fields.push_back(field); |
| 240 } |
217 } | 241 } |
218 | 242 |
219 void ExpectSuggestions(int page_id, | 243 void ExpectSuggestions(int page_id, |
220 const std::vector<string16>& values, | 244 const std::vector<string16>& values, |
221 const std::vector<string16>& labels, | 245 const std::vector<string16>& labels, |
222 const std::vector<string16>& icons, | 246 const std::vector<string16>& icons, |
223 const std::vector<int>& unique_ids, | 247 const std::vector<int>& unique_ids, |
224 int expected_page_id, | 248 int expected_page_id, |
225 size_t expected_num_suggestions, | 249 size_t expected_num_suggestions, |
226 const string16 expected_values[], | 250 const string16 expected_values[], |
(...skipping 10 matching lines...) Expand all Loading... |
237 EXPECT_EQ(expected_values[i], values[i]); | 261 EXPECT_EQ(expected_values[i], values[i]); |
238 EXPECT_EQ(expected_labels[i], labels[i]); | 262 EXPECT_EQ(expected_labels[i], labels[i]); |
239 EXPECT_EQ(expected_icons[i], icons[i]); | 263 EXPECT_EQ(expected_icons[i], icons[i]); |
240 EXPECT_EQ(expected_unique_ids[i], unique_ids[i]); | 264 EXPECT_EQ(expected_unique_ids[i], unique_ids[i]); |
241 } | 265 } |
242 } | 266 } |
243 | 267 |
244 // Verifies that the |filled_form| has been filled with the given data. | 268 // Verifies that the |filled_form| has been filled with the given data. |
245 // Verifies address fields if |has_address_fields| is true, and verifies | 269 // Verifies address fields if |has_address_fields| is true, and verifies |
246 // credit card fields if |has_credit_card_fields| is true. Verifies both if both | 270 // credit card fields if |has_credit_card_fields| is true. Verifies both if both |
247 // are true. | 271 // are true. |use_month_type| is used for credit card input month type. |
248 void ExpectFilledForm(int page_id, | 272 void ExpectFilledForm(int page_id, |
249 const FormData& filled_form, | 273 const FormData& filled_form, |
250 int expected_page_id, | 274 int expected_page_id, |
251 const char* first, | 275 const char* first, |
252 const char* middle, | 276 const char* middle, |
253 const char* last, | 277 const char* last, |
254 const char* address1, | 278 const char* address1, |
255 const char* address2, | 279 const char* address2, |
256 const char* city, | 280 const char* city, |
257 const char* state, | 281 const char* state, |
258 const char* postal_code, | 282 const char* postal_code, |
259 const char* country, | 283 const char* country, |
260 const char* phone, | 284 const char* phone, |
261 const char* fax, | 285 const char* fax, |
262 const char* email, | 286 const char* email, |
263 const char* name_on_card, | 287 const char* name_on_card, |
264 const char* card_number, | 288 const char* card_number, |
265 const char* expiration_month, | 289 const char* expiration_month, |
266 const char* expiration_year, | 290 const char* expiration_year, |
267 bool has_address_fields, | 291 bool has_address_fields, |
268 bool has_credit_card_fields) { | 292 bool has_credit_card_fields, |
| 293 bool use_month_type) { |
269 // The number of fields in the address and credit card forms created above. | 294 // The number of fields in the address and credit card forms created above. |
270 const size_t kAddressFormSize = 12; | 295 const size_t kAddressFormSize = 14; |
271 const size_t kCreditCardFormSize = 4; | 296 const size_t kCreditCardFormSize = use_month_type ? 3 : 4; |
272 | 297 |
273 EXPECT_EQ(expected_page_id, page_id); | 298 EXPECT_EQ(expected_page_id, page_id); |
274 EXPECT_EQ(ASCIIToUTF16("MyForm"), filled_form.name); | 299 EXPECT_EQ(ASCIIToUTF16("MyForm"), filled_form.name); |
275 EXPECT_EQ(ASCIIToUTF16("POST"), filled_form.method); | 300 EXPECT_EQ(ASCIIToUTF16("POST"), filled_form.method); |
276 if (has_credit_card_fields) { | 301 if (has_credit_card_fields) { |
277 EXPECT_EQ(GURL("https://myform.com/form.html"), filled_form.origin); | 302 EXPECT_EQ(GURL("https://myform.com/form.html"), filled_form.origin); |
278 EXPECT_EQ(GURL("https://myform.com/submit.html"), filled_form.action); | 303 EXPECT_EQ(GURL("https://myform.com/submit.html"), filled_form.action); |
279 } else { | 304 } else { |
280 EXPECT_EQ(GURL("http://myform.com/form.html"), filled_form.origin); | 305 EXPECT_EQ(GURL("http://myform.com/form.html"), filled_form.origin); |
281 EXPECT_EQ(GURL("http://myform.com/submit.html"), filled_form.action); | 306 EXPECT_EQ(GURL("http://myform.com/submit.html"), filled_form.action); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[8])); | 345 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[8])); |
321 autofill_test::CreateTestFormField( | 346 autofill_test::CreateTestFormField( |
322 "Phone Number", "phonenumber", phone, "text", &field); | 347 "Phone Number", "phonenumber", phone, "text", &field); |
323 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[9])); | 348 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[9])); |
324 autofill_test::CreateTestFormField( | 349 autofill_test::CreateTestFormField( |
325 "Fax", "fax", fax, "text", &field); | 350 "Fax", "fax", fax, "text", &field); |
326 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[10])); | 351 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[10])); |
327 autofill_test::CreateTestFormField( | 352 autofill_test::CreateTestFormField( |
328 "Email", "email", email, "text", &field); | 353 "Email", "email", email, "text", &field); |
329 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[11])); | 354 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[11])); |
| 355 autofill_test::CreateTestFormField( |
| 356 "Email", "email2", email, "email", &field); |
| 357 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[12])); |
| 358 autofill_test::CreateTestFormField( |
| 359 "Phone Number", "phonenumber2", phone, "tel", &field); |
| 360 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[13])); |
330 } | 361 } |
331 | 362 |
332 if (has_credit_card_fields) { | 363 if (has_credit_card_fields) { |
333 size_t offset = has_address_fields? kAddressFormSize : 0; | 364 size_t offset = has_address_fields? kAddressFormSize : 0; |
334 autofill_test::CreateTestFormField( | 365 autofill_test::CreateTestFormField( |
335 "Name on Card", "nameoncard", name_on_card, "text", &field); | 366 "Name on Card", "nameoncard", name_on_card, "text", &field); |
336 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 0])); | 367 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 0])); |
337 autofill_test::CreateTestFormField( | 368 autofill_test::CreateTestFormField( |
338 "Card Number", "cardnumber", card_number, "text", &field); | 369 "Card Number", "cardnumber", card_number, "text", &field); |
339 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 1])); | 370 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 1])); |
340 autofill_test::CreateTestFormField( | 371 if (use_month_type) { |
341 "Expiration Date", "ccmonth", expiration_month, "text", &field); | 372 std::string exp_year = expiration_year; |
342 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2])); | 373 std::string exp_month = expiration_month; |
343 autofill_test::CreateTestFormField( | 374 std::string date; |
344 "", "ccyear", expiration_year, "text", &field); | 375 if (!exp_year.empty() && !exp_month.empty()) |
345 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 3])); | 376 date = exp_year + "-" + exp_month; |
| 377 autofill_test::CreateTestFormField( |
| 378 "Expiration Date", "ccmonth", date.c_str(), "month", &field); |
| 379 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2])); |
| 380 } else { |
| 381 autofill_test::CreateTestFormField( |
| 382 "Expiration Date", "ccmonth", expiration_month, "text", &field); |
| 383 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 2])); |
| 384 autofill_test::CreateTestFormField( |
| 385 "", "ccyear", expiration_year, "text", &field); |
| 386 EXPECT_TRUE(field.StrictlyEqualsHack(filled_form.fields[offset + 3])); |
| 387 } |
346 } | 388 } |
347 } | 389 } |
348 | 390 |
349 void ExpectFilledAddressFormElvis(int page_id, | 391 void ExpectFilledAddressFormElvis(int page_id, |
350 const FormData& filled_form, | 392 const FormData& filled_form, |
351 int expected_page_id, | 393 int expected_page_id, |
352 bool has_credit_card_fields) { | 394 bool has_credit_card_fields) { |
353 ExpectFilledForm(page_id, filled_form, expected_page_id, "Elvis", "Aaron", | 395 ExpectFilledForm(page_id, filled_form, expected_page_id, "Elvis", "Aaron", |
354 "Presley", "3734 Elvis Presley Blvd.", "Apt. 10", "Memphis", | 396 "Presley", "3734 Elvis Presley Blvd.", "Apt. 10", "Memphis", |
355 "Tennessee", "38116", "USA", "12345678901", "", | 397 "Tennessee", "38116", "USA", "12345678901", "", |
356 "theking@gmail.com", "", "", "", "", true, | 398 "theking@gmail.com", "", "", "", "", true, |
357 has_credit_card_fields); | 399 has_credit_card_fields, false); |
358 } | 400 } |
359 | 401 |
360 void ExpectFilledCreditCardFormElvis(int page_id, | 402 void ExpectFilledCreditCardFormElvis(int page_id, |
361 const FormData& filled_form, | 403 const FormData& filled_form, |
362 int expected_page_id, | 404 int expected_page_id, |
363 bool has_address_fields) { | 405 bool has_address_fields) { |
364 ExpectFilledForm(page_id, filled_form, expected_page_id, | 406 ExpectFilledForm(page_id, filled_form, expected_page_id, |
365 "", "", "", "", "", "", "", "", "", "", "", "", | 407 "", "", "", "", "", "", "", "", "", "", "", "", |
366 "Elvis Presley", "4234567890123456", "04", "2012", | 408 "Elvis Presley", "4234567890123456", "04", "2012", |
367 has_address_fields, true); | 409 has_address_fields, true, false); |
| 410 } |
| 411 |
| 412 void ExpectFilledCreditCardYearMonthWithYearMonth(int page_id, |
| 413 const FormData& filled_form, |
| 414 int expected_page_id, |
| 415 bool has_address_fields, |
| 416 const char* year, |
| 417 const char* month) { |
| 418 ExpectFilledForm(page_id, filled_form, expected_page_id, |
| 419 "", "", "", "", "", "", "", "", "", "", "", "", |
| 420 "Miku Hatsune", "4234567890654321", month, year, |
| 421 has_address_fields, true, true); |
368 } | 422 } |
369 | 423 |
370 class TestAutoFillManager : public AutoFillManager { | 424 class TestAutoFillManager : public AutoFillManager { |
371 public: | 425 public: |
372 TestAutoFillManager(TabContents* tab_contents, | 426 TestAutoFillManager(TabContents* tab_contents, |
373 TestPersonalDataManager* personal_manager) | 427 TestPersonalDataManager* personal_manager) |
374 : AutoFillManager(tab_contents, personal_manager), | 428 : AutoFillManager(tab_contents, personal_manager), |
375 autofill_enabled_(true) { | 429 autofill_enabled_(true) { |
376 test_personal_data_ = personal_manager; | 430 test_personal_data_ = personal_manager; |
377 } | 431 } |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 test_personal_data_->ClearAutoFillProfiles(); | 815 test_personal_data_->ClearAutoFillProfiles(); |
762 GetAutoFillSuggestions(form, field); | 816 GetAutoFillSuggestions(form, field); |
763 EXPECT_FALSE(GetAutoFillSuggestionsMessage(NULL, NULL, NULL, NULL, NULL)); | 817 EXPECT_FALSE(GetAutoFillSuggestionsMessage(NULL, NULL, NULL, NULL, NULL)); |
764 } | 818 } |
765 | 819 |
766 // Test that we return all credit card profile suggestions when all form fields | 820 // Test that we return all credit card profile suggestions when all form fields |
767 // are empty. | 821 // are empty. |
768 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) { | 822 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsEmptyValue) { |
769 // Set up our form data. | 823 // Set up our form data. |
770 FormData form; | 824 FormData form; |
771 CreateTestCreditCardFormData(&form, true); | 825 CreateTestCreditCardFormData(&form, true, false); |
772 std::vector<FormData> forms(1, form); | 826 std::vector<FormData> forms(1, form); |
773 FormsSeen(forms); | 827 FormsSeen(forms); |
774 | 828 |
775 FormField field = form.fields[1]; | 829 FormField field = form.fields[1]; |
776 GetAutoFillSuggestions(form, field); | 830 GetAutoFillSuggestions(form, field); |
777 | 831 |
778 // No suggestions provided, so send an empty vector as the results. | 832 // No suggestions provided, so send an empty vector as the results. |
779 // This triggers the combined message send. | 833 // This triggers the combined message send. |
780 AutocompleteSuggestionsReturned(std::vector<string16>()); | 834 AutocompleteSuggestionsReturned(std::vector<string16>()); |
781 | 835 |
(...skipping 22 matching lines...) Expand all Loading... |
804 ExpectSuggestions(page_id, values, labels, icons, unique_ids, | 858 ExpectSuggestions(page_id, values, labels, icons, unique_ids, |
805 kDefaultPageID, arraysize(expected_values), expected_values, | 859 kDefaultPageID, arraysize(expected_values), expected_values, |
806 expected_labels, expected_icons, expected_unique_ids); | 860 expected_labels, expected_icons, expected_unique_ids); |
807 } | 861 } |
808 | 862 |
809 // Test that we return only matching credit card profile suggestions when the | 863 // Test that we return only matching credit card profile suggestions when the |
810 // selected form field has been partially filled out. | 864 // selected form field has been partially filled out. |
811 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) { | 865 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsMatchCharacter) { |
812 // Set up our form data. | 866 // Set up our form data. |
813 FormData form; | 867 FormData form; |
814 CreateTestCreditCardFormData(&form, true); | 868 CreateTestCreditCardFormData(&form, true, false); |
815 std::vector<FormData> forms(1, form); | 869 std::vector<FormData> forms(1, form); |
816 FormsSeen(forms); | 870 FormsSeen(forms); |
817 | 871 |
818 FormField field; | 872 FormField field; |
819 autofill_test::CreateTestFormField( | 873 autofill_test::CreateTestFormField( |
820 "Card Number", "cardnumber", "4", "text", &field); | 874 "Card Number", "cardnumber", "4", "text", &field); |
821 GetAutoFillSuggestions(form, field); | 875 GetAutoFillSuggestions(form, field); |
822 | 876 |
823 // No suggestions provided, so send an empty vector as the results. | 877 // No suggestions provided, so send an empty vector as the results. |
824 // This triggers the combined message send. | 878 // This triggers the combined message send. |
(...skipping 15 matching lines...) Expand all Loading... |
840 ExpectSuggestions(page_id, values, labels, icons, unique_ids, | 894 ExpectSuggestions(page_id, values, labels, icons, unique_ids, |
841 kDefaultPageID, arraysize(expected_values), expected_values, | 895 kDefaultPageID, arraysize(expected_values), expected_values, |
842 expected_labels, expected_icons, expected_unique_ids); | 896 expected_labels, expected_icons, expected_unique_ids); |
843 } | 897 } |
844 | 898 |
845 // Test that we return credit card profile suggestions when the selected form | 899 // Test that we return credit card profile suggestions when the selected form |
846 // field is not the credit card number field. | 900 // field is not the credit card number field. |
847 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) { | 901 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonCCNumber) { |
848 // Set up our form data. | 902 // Set up our form data. |
849 FormData form; | 903 FormData form; |
850 CreateTestCreditCardFormData(&form, true); | 904 CreateTestCreditCardFormData(&form, true, false); |
851 std::vector<FormData> forms(1, form); | 905 std::vector<FormData> forms(1, form); |
852 FormsSeen(forms); | 906 FormsSeen(forms); |
853 | 907 |
854 const FormField& field = form.fields[0]; | 908 const FormField& field = form.fields[0]; |
855 GetAutoFillSuggestions(form, field); | 909 GetAutoFillSuggestions(form, field); |
856 | 910 |
857 // No suggestions provided, so send an empty vector as the results. | 911 // No suggestions provided, so send an empty vector as the results. |
858 // This triggers the combined message send. | 912 // This triggers the combined message send. |
859 AutocompleteSuggestionsReturned(std::vector<string16>()); | 913 AutocompleteSuggestionsReturned(std::vector<string16>()); |
860 | 914 |
(...skipping 22 matching lines...) Expand all Loading... |
883 ExpectSuggestions(page_id, values, labels, icons, unique_ids, | 937 ExpectSuggestions(page_id, values, labels, icons, unique_ids, |
884 kDefaultPageID, arraysize(expected_values), expected_values, | 938 kDefaultPageID, arraysize(expected_values), expected_values, |
885 expected_labels, expected_icons, expected_unique_ids); | 939 expected_labels, expected_icons, expected_unique_ids); |
886 } | 940 } |
887 | 941 |
888 // Test that we return a warning explaining that credit card profile suggestions | 942 // Test that we return a warning explaining that credit card profile suggestions |
889 // are unavailable when the form is not https. | 943 // are unavailable when the form is not https. |
890 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { | 944 TEST_F(AutoFillManagerTest, GetCreditCardSuggestionsNonHTTPS) { |
891 // Set up our form data. | 945 // Set up our form data. |
892 FormData form; | 946 FormData form; |
893 CreateTestCreditCardFormData(&form, false); | 947 CreateTestCreditCardFormData(&form, false, false); |
894 std::vector<FormData> forms(1, form); | 948 std::vector<FormData> forms(1, form); |
895 FormsSeen(forms); | 949 FormsSeen(forms); |
896 | 950 |
897 const FormField& field = form.fields[0]; | 951 const FormField& field = form.fields[0]; |
898 GetAutoFillSuggestions(form, field); | 952 GetAutoFillSuggestions(form, field); |
899 | 953 |
900 // No suggestions provided, so send an empty vector as the results. | 954 // No suggestions provided, so send an empty vector as the results. |
901 // This triggers the combined message send. | 955 // This triggers the combined message send. |
902 AutocompleteSuggestionsReturned(std::vector<string16>()); | 956 AutocompleteSuggestionsReturned(std::vector<string16>()); |
903 | 957 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 test_personal_data_->ClearCreditCards(); | 1002 test_personal_data_->ClearCreditCards(); |
949 GetAutoFillSuggestions(form, field); | 1003 GetAutoFillSuggestions(form, field); |
950 EXPECT_FALSE(GetAutoFillSuggestionsMessage(NULL, NULL, NULL, NULL, NULL)); | 1004 EXPECT_FALSE(GetAutoFillSuggestionsMessage(NULL, NULL, NULL, NULL, NULL)); |
951 } | 1005 } |
952 | 1006 |
953 // Test that we return profile and credit card suggestions for combined forms. | 1007 // Test that we return profile and credit card suggestions for combined forms. |
954 TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { | 1008 TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestions) { |
955 // Set up our form data. | 1009 // Set up our form data. |
956 FormData form; | 1010 FormData form; |
957 CreateTestAddressFormData(&form); | 1011 CreateTestAddressFormData(&form); |
958 CreateTestCreditCardFormData(&form, true); | 1012 CreateTestCreditCardFormData(&form, true, false); |
959 std::vector<FormData> forms(1, form); | 1013 std::vector<FormData> forms(1, form); |
960 FormsSeen(forms); | 1014 FormsSeen(forms); |
961 | 1015 |
962 FormField field = form.fields[0]; | 1016 FormField field = form.fields[0]; |
963 GetAutoFillSuggestions(form, field); | 1017 GetAutoFillSuggestions(form, field); |
964 | 1018 |
965 // No suggestions provided, so send an empty vector as the results. | 1019 // No suggestions provided, so send an empty vector as the results. |
966 // This triggers the combined message send. | 1020 // This triggers the combined message send. |
967 AutocompleteSuggestionsReturned(std::vector<string16>()); | 1021 AutocompleteSuggestionsReturned(std::vector<string16>()); |
968 | 1022 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1022 } | 1076 } |
1023 | 1077 |
1024 // Test that for non-https forms with both address and credit card fields, we | 1078 // Test that for non-https forms with both address and credit card fields, we |
1025 // only return address suggestions. Instead of credit card suggestions, we | 1079 // only return address suggestions. Instead of credit card suggestions, we |
1026 // should return a warning explaining that credit card profile suggestions are | 1080 // should return a warning explaining that credit card profile suggestions are |
1027 // unavailable when the form is not https. | 1081 // unavailable when the form is not https. |
1028 TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { | 1082 TEST_F(AutoFillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { |
1029 // Set up our form data. | 1083 // Set up our form data. |
1030 FormData form; | 1084 FormData form; |
1031 CreateTestAddressFormData(&form); | 1085 CreateTestAddressFormData(&form); |
1032 CreateTestCreditCardFormData(&form, false); | 1086 CreateTestCreditCardFormData(&form, false, false); |
1033 std::vector<FormData> forms(1, form); | 1087 std::vector<FormData> forms(1, form); |
1034 FormsSeen(forms); | 1088 FormsSeen(forms); |
1035 | 1089 |
1036 FormField field = form.fields[0]; | 1090 FormField field = form.fields[0]; |
1037 GetAutoFillSuggestions(form, field); | 1091 GetAutoFillSuggestions(form, field); |
1038 | 1092 |
1039 // No suggestions provided, so send an empty vector as the results. | 1093 // No suggestions provided, so send an empty vector as the results. |
1040 // This triggers the combined message send. | 1094 // This triggers the combined message send. |
1041 AutocompleteSuggestionsReturned(std::vector<string16>()); | 1095 AutocompleteSuggestionsReturned(std::vector<string16>()); |
1042 | 1096 |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1282 int page_id = 0; | 1336 int page_id = 0; |
1283 FormData results; | 1337 FormData results; |
1284 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); | 1338 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
1285 ExpectFilledAddressFormElvis(page_id, results, kDefaultPageID, false); | 1339 ExpectFilledAddressFormElvis(page_id, results, kDefaultPageID, false); |
1286 } | 1340 } |
1287 | 1341 |
1288 // Test that we correctly fill a credit card form. | 1342 // Test that we correctly fill a credit card form. |
1289 TEST_F(AutoFillManagerTest, FillCreditCardForm) { | 1343 TEST_F(AutoFillManagerTest, FillCreditCardForm) { |
1290 // Set up our form data. | 1344 // Set up our form data. |
1291 FormData form; | 1345 FormData form; |
1292 CreateTestCreditCardFormData(&form, true); | 1346 CreateTestCreditCardFormData(&form, true, false); |
1293 std::vector<FormData> forms(1, form); | 1347 std::vector<FormData> forms(1, form); |
1294 FormsSeen(forms); | 1348 FormsSeen(forms); |
1295 | 1349 |
1296 std::string guid = autofill_manager_->GetLabeledCreditCard("First")->guid(); | 1350 std::string guid = autofill_manager_->GetLabeledCreditCard("First")->guid(); |
1297 FillAutoFillFormData( | 1351 FillAutoFillFormData( |
1298 kDefaultPageID, form, *form.fields.begin(), | 1352 kDefaultPageID, form, *form.fields.begin(), |
1299 autofill_manager_->PackGUIDs(guid, std::string())); | 1353 autofill_manager_->PackGUIDs(guid, std::string())); |
1300 | 1354 |
1301 int page_id = 0; | 1355 int page_id = 0; |
1302 FormData results; | 1356 FormData results; |
1303 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); | 1357 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
1304 ExpectFilledCreditCardFormElvis(page_id, results, kDefaultPageID, false); | 1358 ExpectFilledCreditCardFormElvis(page_id, results, kDefaultPageID, false); |
1305 } | 1359 } |
1306 | 1360 |
| 1361 // Test that we correctly fill a credit card form with month input type. |
| 1362 // 1. year empty, month empty |
| 1363 TEST_F(AutoFillManagerTest, FillCreditCardFormNoYearNoMonth) { |
| 1364 // Same as the SetUp(), but generate 4 credit cards with year month |
| 1365 // combination. |
| 1366 test_personal_data_->CreateTestCreditCardsYearAndMonth("", ""); |
| 1367 // Set up our form data. |
| 1368 FormData form; |
| 1369 CreateTestCreditCardFormData(&form, true, true); |
| 1370 std::vector<FormData> forms(1, form); |
| 1371 FormsSeen(forms); |
| 1372 |
| 1373 std::string guid = autofill_manager_->GetLabeledCreditCard("Miku")->guid(); |
| 1374 FillAutoFillFormData( |
| 1375 kDefaultPageID, form, *form.fields.begin(), |
| 1376 autofill_manager_->PackGUIDs(guid, std::string())); |
| 1377 |
| 1378 int page_id = 0; |
| 1379 FormData results; |
| 1380 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
| 1381 ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results, |
| 1382 kDefaultPageID, false, "", ""); |
| 1383 } |
| 1384 |
| 1385 |
| 1386 // Test that we correctly fill a credit card form with month input type. |
| 1387 // 2. year empty, month non-empty |
| 1388 TEST_F(AutoFillManagerTest, FillCreditCardFormNoYearMonth) { |
| 1389 // Same as the SetUp(), but generate 4 credit cards with year month |
| 1390 // combination. |
| 1391 test_personal_data_->CreateTestCreditCardsYearAndMonth("", "04"); |
| 1392 // Set up our form data. |
| 1393 FormData form; |
| 1394 CreateTestCreditCardFormData(&form, true, true); |
| 1395 std::vector<FormData> forms(1, form); |
| 1396 FormsSeen(forms); |
| 1397 |
| 1398 std::string guid = autofill_manager_->GetLabeledCreditCard("Miku")->guid(); |
| 1399 FillAutoFillFormData( |
| 1400 kDefaultPageID, form, *form.fields.begin(), |
| 1401 autofill_manager_->PackGUIDs(guid, std::string())); |
| 1402 |
| 1403 int page_id = 0; |
| 1404 FormData results; |
| 1405 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
| 1406 ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results, |
| 1407 kDefaultPageID, false, "", "04"); |
| 1408 } |
| 1409 |
| 1410 // Test that we correctly fill a credit card form with month input type. |
| 1411 // 3. year non-empty, month empty |
| 1412 TEST_F(AutoFillManagerTest, FillCreditCardFormYearNoMonth) { |
| 1413 // Same as the SetUp(), but generate 4 credit cards with year month |
| 1414 // combination. |
| 1415 test_personal_data_->CreateTestCreditCardsYearAndMonth("2012", ""); |
| 1416 // Set up our form data. |
| 1417 FormData form; |
| 1418 CreateTestCreditCardFormData(&form, true, true); |
| 1419 std::vector<FormData> forms(1, form); |
| 1420 FormsSeen(forms); |
| 1421 |
| 1422 std::string guid = autofill_manager_->GetLabeledCreditCard("Miku")->guid(); |
| 1423 FillAutoFillFormData( |
| 1424 kDefaultPageID, form, *form.fields.begin(), |
| 1425 autofill_manager_->PackGUIDs(guid, std::string())); |
| 1426 |
| 1427 int page_id = 0; |
| 1428 FormData results; |
| 1429 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
| 1430 ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results, |
| 1431 kDefaultPageID, false, "2012", ""); |
| 1432 } |
| 1433 |
| 1434 // Test that we correctly fill a credit card form with month input type. |
| 1435 // 4. year non-empty, month empty |
| 1436 TEST_F(AutoFillManagerTest, FillCreditCardFormYearMonth) { |
| 1437 // Same as the SetUp(), but generate 4 credit cards with year month |
| 1438 // combination. |
| 1439 test_personal_data_->ClearCreditCards(); |
| 1440 test_personal_data_->CreateTestCreditCardsYearAndMonth("2012", "04"); |
| 1441 // Set up our form data. |
| 1442 FormData form; |
| 1443 CreateTestCreditCardFormData(&form, true, true); |
| 1444 std::vector<FormData> forms(1, form); |
| 1445 FormsSeen(forms); |
| 1446 |
| 1447 std::string guid = autofill_manager_->GetLabeledCreditCard("Miku")->guid(); |
| 1448 FillAutoFillFormData( |
| 1449 kDefaultPageID, form, *form.fields.begin(), |
| 1450 autofill_manager_->PackGUIDs(guid, std::string())); |
| 1451 |
| 1452 int page_id = 0; |
| 1453 FormData results; |
| 1454 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
| 1455 ExpectFilledCreditCardYearMonthWithYearMonth(page_id, results, |
| 1456 kDefaultPageID, false, "2012", "04"); |
| 1457 } |
| 1458 |
1307 // Test that we correctly fill a combined address and credit card form. | 1459 // Test that we correctly fill a combined address and credit card form. |
1308 TEST_F(AutoFillManagerTest, FillAddressAndCreditCardForm) { | 1460 TEST_F(AutoFillManagerTest, FillAddressAndCreditCardForm) { |
1309 // Set up our form data. | 1461 // Set up our form data. |
1310 FormData form; | 1462 FormData form; |
1311 CreateTestAddressFormData(&form); | 1463 CreateTestAddressFormData(&form); |
1312 CreateTestCreditCardFormData(&form, true); | 1464 CreateTestCreditCardFormData(&form, true, false); |
1313 std::vector<FormData> forms(1, form); | 1465 std::vector<FormData> forms(1, form); |
1314 FormsSeen(forms); | 1466 FormsSeen(forms); |
1315 | 1467 |
1316 // First fill the address data. | 1468 // First fill the address data. |
1317 std::string guid = autofill_manager_->GetLabeledProfile("Home")->guid(); | 1469 std::string guid = autofill_manager_->GetLabeledProfile("Home")->guid(); |
1318 FillAutoFillFormData( | 1470 FillAutoFillFormData( |
1319 kDefaultPageID, form, form.fields[0], | 1471 kDefaultPageID, form, form.fields[0], |
1320 autofill_manager_->PackGUIDs(std::string(), guid)); | 1472 autofill_manager_->PackGUIDs(std::string(), guid)); |
1321 | 1473 |
1322 int page_id = 0; | 1474 int page_id = 0; |
(...skipping 19 matching lines...) Expand all Loading... |
1342 } | 1494 } |
1343 } | 1495 } |
1344 | 1496 |
1345 // Test that we correctly fill a previously auto-filled form. | 1497 // Test that we correctly fill a previously auto-filled form. |
1346 TEST_F(AutoFillManagerTest, FillAutoFilledForm) { | 1498 TEST_F(AutoFillManagerTest, FillAutoFilledForm) { |
1347 // Set up our form data. | 1499 // Set up our form data. |
1348 FormData form; | 1500 FormData form; |
1349 CreateTestAddressFormData(&form); | 1501 CreateTestAddressFormData(&form); |
1350 // Mark one of the address fields as autofilled. | 1502 // Mark one of the address fields as autofilled. |
1351 form.fields[4].set_autofilled(true); | 1503 form.fields[4].set_autofilled(true); |
1352 CreateTestCreditCardFormData(&form, true); | 1504 CreateTestCreditCardFormData(&form, true, false); |
1353 std::vector<FormData> forms(1, form); | 1505 std::vector<FormData> forms(1, form); |
1354 FormsSeen(forms); | 1506 FormsSeen(forms); |
1355 | 1507 |
1356 // First fill the address data. | 1508 // First fill the address data. |
1357 std::string guid = autofill_manager_->GetLabeledProfile("Home")->guid(); | 1509 std::string guid = autofill_manager_->GetLabeledProfile("Home")->guid(); |
1358 FillAutoFillFormData( | 1510 FillAutoFillFormData( |
1359 kDefaultPageID, form, *form.fields.begin(), | 1511 kDefaultPageID, form, *form.fields.begin(), |
1360 autofill_manager_->PackGUIDs(std::string(), guid)); | 1512 autofill_manager_->PackGUIDs(std::string(), guid)); |
1361 | 1513 |
1362 int page_id = 0; | 1514 int page_id = 0; |
1363 FormData results; | 1515 FormData results; |
1364 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); | 1516 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
1365 { | 1517 { |
1366 SCOPED_TRACE("Address"); | 1518 SCOPED_TRACE("Address"); |
1367 ExpectFilledForm(page_id, results, kDefaultPageID, | 1519 ExpectFilledForm(page_id, results, kDefaultPageID, |
1368 "Elvis", "", "", "", "", "", "", "", "", "", "", "", | 1520 "Elvis", "", "", "", "", "", "", "", "", "", "", "", |
1369 "", "", "", "", true, true); | 1521 "", "", "", "", true, true, false); |
1370 } | 1522 } |
1371 | 1523 |
1372 // Now fill the credit card data. | 1524 // Now fill the credit card data. |
1373 const int kPageID2 = 2; | 1525 const int kPageID2 = 2; |
1374 guid = autofill_manager_->GetLabeledCreditCard("First")->guid(); | 1526 guid = autofill_manager_->GetLabeledCreditCard("First")->guid(); |
1375 FillAutoFillFormData( | 1527 FillAutoFillFormData( |
1376 kPageID2, form, form.fields.back(), | 1528 kPageID2, form, form.fields.back(), |
1377 autofill_manager_->PackGUIDs(guid, std::string())); | 1529 autofill_manager_->PackGUIDs(guid, std::string())); |
1378 | 1530 |
1379 page_id = 0; | 1531 page_id = 0; |
(...skipping 15 matching lines...) Expand all Loading... |
1395 FillAutoFillFormData( | 1547 FillAutoFillFormData( |
1396 kPageID3, form, *form.fields.rbegin(), | 1548 kPageID3, form, *form.fields.rbegin(), |
1397 autofill_manager_->PackGUIDs(guid, std::string())); | 1549 autofill_manager_->PackGUIDs(guid, std::string())); |
1398 | 1550 |
1399 page_id = 0; | 1551 page_id = 0; |
1400 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); | 1552 EXPECT_TRUE(GetAutoFillFormDataFilledMessage(&page_id, &results)); |
1401 { | 1553 { |
1402 SCOPED_TRACE("Credit card 2"); | 1554 SCOPED_TRACE("Credit card 2"); |
1403 ExpectFilledForm(page_id, results, kPageID3, | 1555 ExpectFilledForm(page_id, results, kPageID3, |
1404 "", "", "", "", "", "", "", "", "", "", "", "", | 1556 "", "", "", "", "", "", "", "", "", "", "", "", |
1405 "", "", "", "2012", true, true); | 1557 "", "", "", "2012", true, true, false); |
1406 } | 1558 } |
1407 } | 1559 } |
1408 | 1560 |
1409 // Test that we correctly fill a phone number split across multiple fields. | 1561 // Test that we correctly fill a phone number split across multiple fields. |
1410 TEST_F(AutoFillManagerTest, FillPhoneNumber) { | 1562 TEST_F(AutoFillManagerTest, FillPhoneNumber) { |
1411 // Set up our form data. | 1563 // Set up our form data. |
1412 FormData form; | 1564 FormData form; |
1413 form.name = ASCIIToUTF16("MyPhoneForm"); | 1565 form.name = ASCIIToUTF16("MyPhoneForm"); |
1414 form.method = ASCIIToUTF16("POST"); | 1566 form.method = ASCIIToUTF16("POST"); |
1415 form.origin = GURL("http://myform.com/phone_form.html"); | 1567 form.origin = GURL("http://myform.com/phone_form.html"); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1579 #else | 1731 #else |
1580 ASSERT_FALSE(profile()->GetPrefs()->GetBoolean( | 1732 ASSERT_FALSE(profile()->GetPrefs()->GetBoolean( |
1581 prefs::kAutoFillAuxiliaryProfilesEnabled)); | 1733 prefs::kAutoFillAuxiliaryProfilesEnabled)); |
1582 profile()->GetPrefs()->SetBoolean( | 1734 profile()->GetPrefs()->SetBoolean( |
1583 prefs::kAutoFillAuxiliaryProfilesEnabled, true); | 1735 prefs::kAutoFillAuxiliaryProfilesEnabled, true); |
1584 profile()->GetPrefs()->ClearPref(prefs::kAutoFillAuxiliaryProfilesEnabled); | 1736 profile()->GetPrefs()->ClearPref(prefs::kAutoFillAuxiliaryProfilesEnabled); |
1585 ASSERT_FALSE(profile()->GetPrefs()->GetBoolean( | 1737 ASSERT_FALSE(profile()->GetPrefs()->GetBoolean( |
1586 prefs::kAutoFillAuxiliaryProfilesEnabled)); | 1738 prefs::kAutoFillAuxiliaryProfilesEnabled)); |
1587 #endif | 1739 #endif |
1588 } | 1740 } |
OLD | NEW |