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

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

Issue 2844463004: Rename card 'type' into 'issuer network.' (Closed)
Patch Set: read -> use Created 3 years, 7 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_manager.h" 5 #include "components/autofill/core/browser/autofill_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 using testing::AtLeast; 74 using testing::AtLeast;
75 using testing::Return; 75 using testing::Return;
76 using testing::SaveArg; 76 using testing::SaveArg;
77 77
78 namespace autofill { 78 namespace autofill {
79 79
80 namespace { 80 namespace {
81 81
82 const int kDefaultPageID = 137; 82 const int kDefaultPageID = 137;
83 83
84 const std::string kUTF8MidlineEllipsis = 84 const char kUTF8MidlineEllipsis[] =
85 " " 85 " "
86 "\xE2\x80\xA2\xE2\x80\x86" 86 "\xE2\x80\xA2\xE2\x80\x86"
87 "\xE2\x80\xA2\xE2\x80\x86" 87 "\xE2\x80\xA2\xE2\x80\x86"
88 "\xE2\x80\xA2\xE2\x80\x86" 88 "\xE2\x80\xA2\xE2\x80\x86"
89 "\xE2\x80\xA2\xE2\x80\x86"; 89 "\xE2\x80\xA2\xE2\x80\x86";
90 90
91 class MockAutofillClient : public TestAutofillClient { 91 class MockAutofillClient : public TestAutofillClient {
92 public: 92 public:
93 MockAutofillClient() {} 93 MockAutofillClient() {}
94 94
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 AutofillProfile* profile = GetProfileWithGUID(guid.c_str()); 213 AutofillProfile* profile = GetProfileWithGUID(guid.c_str());
214 if (profile) { 214 if (profile) {
215 web_profiles_.erase( 215 web_profiles_.erase(
216 std::find_if(web_profiles_.begin(), web_profiles_.end(), 216 std::find_if(web_profiles_.begin(), web_profiles_.end(),
217 [profile](const std::unique_ptr<AutofillProfile>& ptr) { 217 [profile](const std::unique_ptr<AutofillProfile>& ptr) {
218 return ptr.get() == profile; 218 return ptr.get() == profile;
219 })); 219 }));
220 } 220 }
221 } 221 }
222 222
223 void ClearAutofillProfiles() { 223 void ClearAutofillProfiles() { web_profiles_.clear(); }
224 web_profiles_.clear();
225 }
226 224
227 void ClearCreditCards() { 225 void ClearCreditCards() {
228 local_credit_cards_.clear(); 226 local_credit_cards_.clear();
229 server_credit_cards_.clear(); 227 server_credit_cards_.clear();
230 } 228 }
231 229
232 // Create Elvis card with whitespace in the credit card number. 230 // Create Elvis card with whitespace in the credit card number.
233 void CreateTestCreditCardWithWhitespace() { 231 void CreateTestCreditCardWithWhitespace() {
234 ClearCreditCards(); 232 ClearCreditCards();
235 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>(); 233 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>();
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 ExpectFilledField("First Name", "firstname", first, "text", 418 ExpectFilledField("First Name", "firstname", first, "text",
421 filled_form.fields[0]); 419 filled_form.fields[0]);
422 ExpectFilledField("Middle Name", "middlename", middle, "text", 420 ExpectFilledField("Middle Name", "middlename", middle, "text",
423 filled_form.fields[1]); 421 filled_form.fields[1]);
424 ExpectFilledField("Last Name", "lastname", last, "text", 422 ExpectFilledField("Last Name", "lastname", last, "text",
425 filled_form.fields[2]); 423 filled_form.fields[2]);
426 ExpectFilledField("Address Line 1", "addr1", address1, "text", 424 ExpectFilledField("Address Line 1", "addr1", address1, "text",
427 filled_form.fields[3]); 425 filled_form.fields[3]);
428 ExpectFilledField("Address Line 2", "addr2", address2, "text", 426 ExpectFilledField("Address Line 2", "addr2", address2, "text",
429 filled_form.fields[4]); 427 filled_form.fields[4]);
430 ExpectFilledField("City", "city", city, "text", 428 ExpectFilledField("City", "city", city, "text", filled_form.fields[5]);
431 filled_form.fields[5]); 429 ExpectFilledField("State", "state", state, "text", filled_form.fields[6]);
432 ExpectFilledField("State", "state", state, "text",
433 filled_form.fields[6]);
434 ExpectFilledField("Postal Code", "zipcode", postal_code, "text", 430 ExpectFilledField("Postal Code", "zipcode", postal_code, "text",
435 filled_form.fields[7]); 431 filled_form.fields[7]);
436 ExpectFilledField("Country", "country", country, "text", 432 ExpectFilledField("Country", "country", country, "text",
437 filled_form.fields[8]); 433 filled_form.fields[8]);
438 ExpectFilledField("Phone Number", "phonenumber", phone, "tel", 434 ExpectFilledField("Phone Number", "phonenumber", phone, "tel",
439 filled_form.fields[9]); 435 filled_form.fields[9]);
440 ExpectFilledField("Email", "email", email, "email", 436 ExpectFilledField("Email", "email", email, "email", filled_form.fields[10]);
441 filled_form.fields[10]);
442 } 437 }
443 438
444 if (has_credit_card_fields) { 439 if (has_credit_card_fields) {
445 size_t offset = has_address_fields? kAddressFormSize : 0; 440 size_t offset = has_address_fields ? kAddressFormSize : 0;
446 ExpectFilledField("Name on Card", "nameoncard", name_on_card, "text", 441 ExpectFilledField("Name on Card", "nameoncard", name_on_card, "text",
447 filled_form.fields[offset + 0]); 442 filled_form.fields[offset + 0]);
448 ExpectFilledField("Card Number", "cardnumber", card_number, "text", 443 ExpectFilledField("Card Number", "cardnumber", card_number, "text",
449 filled_form.fields[offset + 1]); 444 filled_form.fields[offset + 1]);
450 if (use_month_type) { 445 if (use_month_type) {
451 std::string exp_year = expiration_year; 446 std::string exp_year = expiration_year;
452 std::string exp_month = expiration_month; 447 std::string exp_month = expiration_month;
453 std::string date; 448 std::string date;
454 if (!exp_year.empty() && !exp_month.empty()) 449 if (!exp_year.empty() && !exp_month.empty())
455 date = exp_year + "-" + exp_month; 450 date = exp_year + "-" + exp_month;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 ExpectFilledForm(page_id, filled_form, expected_page_id, "", "", "", "", "", 489 ExpectFilledForm(page_id, filled_form, expected_page_id, "", "", "", "", "",
495 "", "", "", "", "", "", "Miku Hatsune", "4234567890654321", 490 "", "", "", "", "", "", "Miku Hatsune", "4234567890654321",
496 month, year, has_address_fields, true, true); 491 month, year, has_address_fields, true, true);
497 } 492 }
498 493
499 class MockAutocompleteHistoryManager : public AutocompleteHistoryManager { 494 class MockAutocompleteHistoryManager : public AutocompleteHistoryManager {
500 public: 495 public:
501 MockAutocompleteHistoryManager(AutofillDriver* driver, AutofillClient* client) 496 MockAutocompleteHistoryManager(AutofillDriver* driver, AutofillClient* client)
502 : AutocompleteHistoryManager(driver, client) {} 497 : AutocompleteHistoryManager(driver, client) {}
503 498
504 MOCK_METHOD4(OnGetAutocompleteSuggestions, void( 499 MOCK_METHOD4(OnGetAutocompleteSuggestions,
505 int query_id, 500 void(int query_id,
506 const base::string16& name, 501 const base::string16& name,
507 const base::string16& prefix, 502 const base::string16& prefix,
508 const std::string& form_control_type)); 503 const std::string& form_control_type));
509 MOCK_METHOD1(OnWillSubmitForm, void(const FormData& form)); 504 MOCK_METHOD1(OnWillSubmitForm, void(const FormData& form));
510 505
511 private: 506 private:
512 DISALLOW_COPY_AND_ASSIGN(MockAutocompleteHistoryManager); 507 DISALLOW_COPY_AND_ASSIGN(MockAutocompleteHistoryManager);
513 }; 508 };
514 509
515 class MockAutofillDriver : public TestAutofillDriver { 510 class MockAutofillDriver : public TestAutofillDriver {
516 public: 511 public:
517 MockAutofillDriver() 512 MockAutofillDriver()
518 : is_incognito_(false), did_interact_with_credit_card_form_(false) {} 513 : is_incognito_(false), did_interact_with_credit_card_form_(false) {}
519 514
520 // Mock methods to enable testability. 515 // Mock methods to enable testability.
521 MOCK_METHOD3(SendFormDataToRenderer, void(int query_id, 516 MOCK_METHOD3(SendFormDataToRenderer,
522 RendererFormDataAction action, 517 void(int query_id,
523 const FormData& data)); 518 RendererFormDataAction action,
519 const FormData& data));
524 520
525 void SetIsIncognito(bool is_incognito) { 521 void SetIsIncognito(bool is_incognito) { is_incognito_ = is_incognito; }
526 is_incognito_ = is_incognito;
527 }
528 522
529 bool IsIncognito() const override { return is_incognito_; } 523 bool IsIncognito() const override { return is_incognito_; }
530 524
531 void DidInteractWithCreditCardForm() override { 525 void DidInteractWithCreditCardForm() override {
532 did_interact_with_credit_card_form_ = true; 526 did_interact_with_credit_card_form_ = true;
533 }; 527 }
534 528
535 void ClearDidInteractWithCreditCardForm() { 529 void ClearDidInteractWithCreditCardForm() {
536 did_interact_with_credit_card_form_ = false; 530 did_interact_with_credit_card_form_ = false;
537 }; 531 }
538 532
539 bool did_interact_with_credit_card_form() const { 533 bool did_interact_with_credit_card_form() const {
540 return did_interact_with_credit_card_form_; 534 return did_interact_with_credit_card_form_;
541 } 535 }
542 536
543 private: 537 private:
544 bool is_incognito_; 538 bool is_incognito_;
545 bool did_interact_with_credit_card_form_; 539 bool did_interact_with_credit_card_form_;
546 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver); 540 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver);
547 }; 541 };
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 bool observed_submission) override { 593 bool observed_submission) override {
600 run_loop_->Quit(); 594 run_loop_->Quit();
601 595
602 EXPECT_EQ(expected_observed_submission_, observed_submission); 596 EXPECT_EQ(expected_observed_submission_, observed_submission);
603 597
604 // If we have expected field types set, make sure they match. 598 // If we have expected field types set, make sure they match.
605 if (!expected_submitted_field_types_.empty()) { 599 if (!expected_submitted_field_types_.empty()) {
606 ASSERT_EQ(expected_submitted_field_types_.size(), 600 ASSERT_EQ(expected_submitted_field_types_.size(),
607 submitted_form->field_count()); 601 submitted_form->field_count());
608 for (size_t i = 0; i < expected_submitted_field_types_.size(); ++i) { 602 for (size_t i = 0; i < expected_submitted_field_types_.size(); ++i) {
609 SCOPED_TRACE( 603 SCOPED_TRACE(base::StringPrintf(
610 base::StringPrintf( 604 "Field %d with value %s", static_cast<int>(i),
611 "Field %d with value %s", static_cast<int>(i), 605 base::UTF16ToUTF8(submitted_form->field(i)->value).c_str()));
612 base::UTF16ToUTF8(submitted_form->field(i)->value).c_str()));
613 const ServerFieldTypeSet& possible_types = 606 const ServerFieldTypeSet& possible_types =
614 submitted_form->field(i)->possible_types(); 607 submitted_form->field(i)->possible_types();
615 EXPECT_EQ(expected_submitted_field_types_[i].size(), 608 EXPECT_EQ(expected_submitted_field_types_[i].size(),
616 possible_types.size()); 609 possible_types.size());
617 for (ServerFieldTypeSet::const_iterator it = 610 for (ServerFieldTypeSet::const_iterator it =
618 expected_submitted_field_types_[i].begin(); 611 expected_submitted_field_types_[i].begin();
619 it != expected_submitted_field_types_[i].end(); ++it) { 612 it != expected_submitted_field_types_[i].end(); ++it) {
620 EXPECT_TRUE(possible_types.count(*it)) 613 EXPECT_TRUE(possible_types.count(*it))
621 << "Expected type: " << AutofillType(*it).ToString(); 614 << "Expected type: " << AutofillType(*it).ToString();
622 } 615 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 std::string credit_card_guid = 668 std::string credit_card_guid =
676 base::StringPrintf("00000000-0000-0000-0000-%012d", credit_card_id); 669 base::StringPrintf("00000000-0000-0000-0000-%012d", credit_card_id);
677 670
678 return MakeFrontendID(credit_card_guid, std::string()); 671 return MakeFrontendID(credit_card_guid, std::string());
679 } 672 }
680 673
681 void AddSeenForm(std::unique_ptr<FormStructure> form) { 674 void AddSeenForm(std::unique_ptr<FormStructure> form) {
682 form_structures()->push_back(std::move(form)); 675 form_structures()->push_back(std::move(form));
683 } 676 }
684 677
685 void ClearFormStructures() { 678 void ClearFormStructures() { form_structures()->clear(); }
686 form_structures()->clear();
687 }
688 679
689 void ResetPaymentsClientForCardUpload(const char* server_id) { 680 void ResetPaymentsClientForCardUpload(const char* server_id) {
690 TestPaymentsClient* payments_client = 681 TestPaymentsClient* payments_client =
691 new TestPaymentsClient(context_getter_, this); 682 new TestPaymentsClient(context_getter_, this);
692 payments_client->server_id_ = server_id; 683 payments_client->server_id_ = server_id;
693 set_payments_client(payments_client); 684 set_payments_client(payments_client);
694 } 685 }
695 686
696 private: 687 private:
697 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result, 688 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result,
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 request_context_ = new net::TestURLRequestContextGetter( 849 request_context_ = new net::TestURLRequestContextGetter(
859 base::ThreadTaskRunnerHandle::Get()); 850 base::ThreadTaskRunnerHandle::Get());
860 autofill_driver_->SetURLRequestContext(request_context_.get()); 851 autofill_driver_->SetURLRequestContext(request_context_.get());
861 autofill_manager_.reset(new TestAutofillManager( 852 autofill_manager_.reset(new TestAutofillManager(
862 autofill_driver_.get(), &autofill_client_, &personal_data_)); 853 autofill_driver_.get(), &autofill_client_, &personal_data_));
863 download_manager_ = new TestAutofillDownloadManager( 854 download_manager_ = new TestAutofillDownloadManager(
864 autofill_driver_.get(), autofill_manager_.get()); 855 autofill_driver_.get(), autofill_manager_.get());
865 // AutofillManager takes ownership of |download_manager_|. 856 // AutofillManager takes ownership of |download_manager_|.
866 autofill_manager_->set_download_manager(download_manager_); 857 autofill_manager_->set_download_manager(download_manager_);
867 external_delegate_.reset(new TestAutofillExternalDelegate( 858 external_delegate_.reset(new TestAutofillExternalDelegate(
868 autofill_manager_.get(), 859 autofill_manager_.get(), autofill_driver_.get()));
869 autofill_driver_.get()));
870 autofill_manager_->SetExternalDelegate(external_delegate_.get()); 860 autofill_manager_->SetExternalDelegate(external_delegate_.get());
871 861
872 // Clear all the things. 862 // Clear all the things.
873 variations::testing::ClearAllVariationParams(); 863 variations::testing::ClearAllVariationParams();
874 } 864 }
875 865
876 void TearDown() override { 866 void TearDown() override {
877 // Order of destruction is important as AutofillManager relies on 867 // Order of destruction is important as AutofillManager relies on
878 // PersonalDataManager to be around when it gets destroyed. 868 // PersonalDataManager to be around when it gets destroyed.
879 autofill_manager_.reset(); 869 autofill_manager_.reset();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 (!personal_data_.GetProfiles().empty() || 905 (!personal_data_.GetProfiles().empty() ||
916 !personal_data_.GetCreditCards().empty())) 906 !personal_data_.GetCreditCards().empty()))
917 autofill_manager_->WaitForAsyncUploadProcess(); 907 autofill_manager_->WaitForAsyncUploadProcess();
918 autofill_manager_->OnFormSubmitted(form); 908 autofill_manager_->OnFormSubmitted(form);
919 } 909 }
920 910
921 void FillAutofillFormData(int query_id, 911 void FillAutofillFormData(int query_id,
922 const FormData& form, 912 const FormData& form,
923 const FormFieldData& field, 913 const FormFieldData& field,
924 int unique_id) { 914 int unique_id) {
925 autofill_manager_->FillOrPreviewForm( 915 autofill_manager_->FillOrPreviewForm(AutofillDriver::FORM_DATA_ACTION_FILL,
926 AutofillDriver::FORM_DATA_ACTION_FILL, query_id, form, field, 916 query_id, form, field, unique_id);
927 unique_id);
928 } 917 }
929 918
930 // Calls |autofill_manager_->OnFillAutofillFormData()| with the specified 919 // Calls |autofill_manager_->OnFillAutofillFormData()| with the specified
931 // input parameters after setting up the expectation that the mock driver's 920 // input parameters after setting up the expectation that the mock driver's
932 // |SendFormDataToRenderer()| method will be called and saving the parameters 921 // |SendFormDataToRenderer()| method will be called and saving the parameters
933 // of that call into the |response_query_id| and |response_data| output 922 // of that call into the |response_query_id| and |response_data| output
934 // parameters. 923 // parameters.
935 void FillAutofillFormDataAndSaveResults(int input_query_id, 924 void FillAutofillFormDataAndSaveResults(int input_query_id,
936 const FormData& input_form, 925 const FormData& input_form,
937 const FormFieldData& input_field, 926 const FormFieldData& input_field,
938 int unique_id, 927 int unique_id,
939 int* response_query_id, 928 int* response_query_id,
940 FormData* response_data) { 929 FormData* response_data) {
941 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _)). 930 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _))
942 WillOnce((DoAll(testing::SaveArg<0>(response_query_id), 931 .WillOnce((DoAll(testing::SaveArg<0>(response_query_id),
943 testing::SaveArg<2>(response_data)))); 932 testing::SaveArg<2>(response_data))));
944 FillAutofillFormData(input_query_id, input_form, input_field, unique_id); 933 FillAutofillFormData(input_query_id, input_form, input_field, unique_id);
945 } 934 }
946 935
947 int MakeFrontendID(const std::string& cc_sid, 936 int MakeFrontendID(const std::string& cc_sid,
948 const std::string& profile_sid) const { 937 const std::string& profile_sid) const {
949 return autofill_manager_->MakeFrontendID(cc_sid, profile_sid); 938 return autofill_manager_->MakeFrontendID(cc_sid, profile_sid);
950 } 939 }
951 940
952 bool WillFillCreditCardNumber(const FormData& form, 941 bool WillFillCreditCardNumber(const FormData& form,
953 const FormFieldData& field) { 942 const FormFieldData& field) {
(...skipping 14 matching lines...) Expand all
968 form->origin = GURL("http://myform.com/form.html"); 957 form->origin = GURL("http://myform.com/form.html");
969 form->action = GURL("http://myform.com/submit.html"); 958 form->action = GURL("http://myform.com/submit.html");
970 } 959 }
971 960
972 FormFieldData field; 961 FormFieldData field;
973 test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field); 962 test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field);
974 form->fields.push_back(field); 963 form->fields.push_back(field);
975 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); 964 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field);
976 form->fields.push_back(field); 965 form->fields.push_back(field);
977 if (use_month_type) { 966 if (use_month_type) {
978 test::CreateTestFormField( 967 test::CreateTestFormField("Expiration Date", "ccmonth", "", "month",
979 "Expiration Date", "ccmonth", "", "month", &field); 968 &field);
980 form->fields.push_back(field); 969 form->fields.push_back(field);
981 } else { 970 } else {
982 test::CreateTestFormField("Expiration Date", "ccmonth", "", "text", 971 test::CreateTestFormField("Expiration Date", "ccmonth", "", "text",
983 &field); 972 &field);
984 form->fields.push_back(field); 973 form->fields.push_back(field);
985 test::CreateTestFormField("", "ccyear", "", "text", &field); 974 test::CreateTestFormField("", "ccyear", "", "text", &field);
986 form->fields.push_back(field); 975 form->fields.push_back(field);
987 } 976 }
988 test::CreateTestFormField("CVC", "cvc", "", "text", &field); 977 test::CreateTestFormField("CVC", "cvc", "", "text", &field);
989 form->fields.push_back(field); 978 form->fields.push_back(field);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 // This line silences the warning from PaymentsClient about matching sync 1022 // This line silences the warning from PaymentsClient about matching sync
1034 // and Payments server types. 1023 // and Payments server types.
1035 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 1024 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1036 "sync-url", "https://google.com"); 1025 "sync-url", "https://google.com");
1037 1026
1038 CreateTestCreditCardFormData(form, true, false); 1027 CreateTestCreditCardFormData(form, true, false);
1039 FormsSeen(std::vector<FormData>(1, *form)); 1028 FormsSeen(std::vector<FormData>(1, *form));
1040 *card = CreditCard(CreditCard::MASKED_SERVER_CARD, "a123"); 1029 *card = CreditCard(CreditCard::MASKED_SERVER_CARD, "a123");
1041 test::SetCreditCardInfo(card, "John Dillinger", "1881" /* Visa */, "01", 1030 test::SetCreditCardInfo(card, "John Dillinger", "1881" /* Visa */, "01",
1042 "2017"); 1031 "2017");
1043 card->SetTypeForMaskedCard(kVisaCard); 1032 card->SetNetworkForMaskedCard(kVisaCard);
1044 1033
1045 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _)) 1034 EXPECT_CALL(*autofill_driver_, SendFormDataToRenderer(_, _, _))
1046 .Times(AtLeast(1)); 1035 .Times(AtLeast(1));
1047 autofill_manager_->FillOrPreviewCreditCardForm( 1036 autofill_manager_->FillOrPreviewCreditCardForm(
1048 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, *form, 1037 AutofillDriver::FORM_DATA_ACTION_FILL, kDefaultPageID, *form,
1049 form->fields[0], *card); 1038 form->fields[0], *card);
1050 } 1039 }
1051 1040
1052 // Convenience method for using and retrieving a mock autocomplete history 1041 // Convenience method for using and retrieving a mock autocomplete history
1053 // manager. 1042 // manager.
1054 MockAutocompleteHistoryManager* RecreateMockAutocompleteHistoryManager() { 1043 MockAutocompleteHistoryManager* RecreateMockAutocompleteHistoryManager() {
1055 MockAutocompleteHistoryManager* manager = new 1044 MockAutocompleteHistoryManager* manager =
1056 MockAutocompleteHistoryManager(autofill_driver_.get(), 1045 new MockAutocompleteHistoryManager(autofill_driver_.get(),
1057 autofill_manager_->client()); 1046 autofill_manager_->client());
1058 autofill_manager_->autocomplete_history_manager_.reset(manager); 1047 autofill_manager_->autocomplete_history_manager_.reset(manager);
1059 return manager; 1048 return manager;
1060 } 1049 }
1061 1050
1062 // Convenience method to cast the FullCardRequest into a CardUnmaskDelegate. 1051 // Convenience method to cast the FullCardRequest into a CardUnmaskDelegate.
1063 CardUnmaskDelegate* full_card_unmask_delegate() { 1052 CardUnmaskDelegate* full_card_unmask_delegate() {
1064 DCHECK(autofill_manager_->full_card_request_); 1053 DCHECK(autofill_manager_->full_card_request_);
1065 return static_cast<CardUnmaskDelegate*>( 1054 return static_cast<CardUnmaskDelegate*>(
1066 autofill_manager_->full_card_request_.get()); 1055 autofill_manager_->full_card_request_.get());
1067 } 1056 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1163 std::unique_ptr<TestAutofillExternalDelegate> external_delegate_; 1152 std::unique_ptr<TestAutofillExternalDelegate> external_delegate_;
1164 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 1153 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
1165 TestAutofillDownloadManager* download_manager_; 1154 TestAutofillDownloadManager* download_manager_;
1166 TestPersonalDataManager personal_data_; 1155 TestPersonalDataManager personal_data_;
1167 base::FieldTrialList field_trial_list_; 1156 base::FieldTrialList field_trial_list_;
1168 base::test::ScopedFeatureList scoped_feature_list_; 1157 base::test::ScopedFeatureList scoped_feature_list_;
1169 }; 1158 };
1170 1159
1171 class TestFormStructure : public FormStructure { 1160 class TestFormStructure : public FormStructure {
1172 public: 1161 public:
1173 explicit TestFormStructure(const FormData& form) 1162 explicit TestFormStructure(const FormData& form) : FormStructure(form) {}
1174 : FormStructure(form) {}
1175 ~TestFormStructure() override {} 1163 ~TestFormStructure() override {}
1176 1164
1177 void SetFieldTypes(const std::vector<ServerFieldType>& heuristic_types, 1165 void SetFieldTypes(const std::vector<ServerFieldType>& heuristic_types,
1178 const std::vector<ServerFieldType>& server_types) { 1166 const std::vector<ServerFieldType>& server_types) {
1179 ASSERT_EQ(field_count(), heuristic_types.size()); 1167 ASSERT_EQ(field_count(), heuristic_types.size());
1180 ASSERT_EQ(field_count(), server_types.size()); 1168 ASSERT_EQ(field_count(), server_types.size());
1181 1169
1182 for (size_t i = 0; i < field_count(); ++i) { 1170 for (size_t i = 0; i < field_count(); ++i) {
1183 AutofillField* form_field = field(i); 1171 AutofillField* form_field = field(i);
1184 ASSERT_TRUE(form_field); 1172 ASSERT_TRUE(form_field);
(...skipping 12 matching lines...) Expand all
1197 // reloading a page or when the renderer processes a set of forms but detects 1185 // reloading a page or when the renderer processes a set of forms but detects
1198 // no changes) does not load the forms again. 1186 // no changes) does not load the forms again.
1199 TEST_F(AutofillManagerTest, OnFormsSeen_Empty) { 1187 TEST_F(AutofillManagerTest, OnFormsSeen_Empty) {
1200 // Set up our form data. 1188 // Set up our form data.
1201 FormData form; 1189 FormData form;
1202 test::CreateTestAddressFormData(&form); 1190 test::CreateTestAddressFormData(&form);
1203 std::vector<FormData> forms(1, form); 1191 std::vector<FormData> forms(1, form);
1204 1192
1205 base::HistogramTester histogram_tester; 1193 base::HistogramTester histogram_tester;
1206 FormsSeen(forms); 1194 FormsSeen(forms);
1207 histogram_tester.ExpectUniqueSample( 1195 histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
1208 "Autofill.UserHappiness", 0 /* FORMS_LOADED */, 1); 1196 0 /* FORMS_LOADED */, 1);
1209 1197
1210 // No more forms, metric is not logged. 1198 // No more forms, metric is not logged.
1211 forms.clear(); 1199 forms.clear();
1212 FormsSeen(forms); 1200 FormsSeen(forms);
1213 histogram_tester.ExpectUniqueSample( 1201 histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
1214 "Autofill.UserHappiness", 0 /* FORMS_LOADED */, 1); 1202 0 /* FORMS_LOADED */, 1);
1215 } 1203 }
1216 1204
1217 // Test that calling OnFormsSeen consecutively with a different set of forms 1205 // Test that calling OnFormsSeen consecutively with a different set of forms
1218 // will query for each separately. 1206 // will query for each separately.
1219 TEST_F(AutofillManagerTest, OnFormsSeen_DifferentFormStructures) { 1207 TEST_F(AutofillManagerTest, OnFormsSeen_DifferentFormStructures) {
1220 // Set up our form data. 1208 // Set up our form data.
1221 FormData form; 1209 FormData form;
1222 test::CreateTestAddressFormData(&form); 1210 test::CreateTestAddressFormData(&form);
1223 std::vector<FormData> forms(1, form); 1211 std::vector<FormData> forms(1, form);
1224 1212
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1427 test::CreateTestAddressFormData(&form); 1415 test::CreateTestAddressFormData(&form);
1428 std::vector<FormData> forms(1, form); 1416 std::vector<FormData> forms(1, form);
1429 FormsSeen(forms); 1417 FormsSeen(forms);
1430 1418
1431 FormFieldData field; 1419 FormFieldData field;
1432 test::CreateTestFormField("First Name", "firstname", "E", "text", &field); 1420 test::CreateTestFormField("First Name", "firstname", "E", "text", &field);
1433 GetAutofillSuggestions(form, field); 1421 GetAutofillSuggestions(form, field);
1434 1422
1435 // Test that we sent the right values to the external delegate. 1423 // Test that we sent the right values to the external delegate.
1436 external_delegate_->CheckSuggestions( 1424 external_delegate_->CheckSuggestions(
1437 kDefaultPageID, 1425 kDefaultPageID, Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 1));
1438 Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 1));
1439 } 1426 }
1440 1427
1441 // Tests that we return address profile suggestions values when the section 1428 // Tests that we return address profile suggestions values when the section
1442 // is already autofilled, and that we merge identical values. 1429 // is already autofilled, and that we merge identical values.
1443 TEST_F(AutofillManagerTest, 1430 TEST_F(AutofillManagerTest,
1444 GetProfileSuggestions_AlreadyAutofilledMergeValues) { 1431 GetProfileSuggestions_AlreadyAutofilledMergeValues) {
1445 // Set up our form data. 1432 // Set up our form data.
1446 FormData form; 1433 FormData form;
1447 test::CreateTestAddressFormData(&form); 1434 test::CreateTestAddressFormData(&form);
1448 std::vector<FormData> forms(1, form); 1435 std::vector<FormData> forms(1, form);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 // First name is already autofilled which will make the section appear as 1491 // First name is already autofilled which will make the section appear as
1505 // "already autofilled". 1492 // "already autofilled".
1506 form.fields[0].is_autofilled = true; 1493 form.fields[0].is_autofilled = true;
1507 1494
1508 FormFieldData field; 1495 FormFieldData field;
1509 test::CreateTestFormField("First Name", "firstname", "E", "text", &field); 1496 test::CreateTestFormField("First Name", "firstname", "E", "text", &field);
1510 GetAutofillSuggestions(form, field); 1497 GetAutofillSuggestions(form, field);
1511 1498
1512 // Test that we sent the right values to the external delegate. No labels. 1499 // Test that we sent the right values to the external delegate. No labels.
1513 external_delegate_->CheckSuggestions( 1500 external_delegate_->CheckSuggestions(
1514 kDefaultPageID, 1501 kDefaultPageID, Suggestion("Elvis", "" /* no label */, "", 1));
1515 Suggestion("Elvis", "" /* no label */, "", 1));
1516 } 1502 }
1517 1503
1518 // Test that we return no suggestions when the form has no relevant fields. 1504 // Test that we return no suggestions when the form has no relevant fields.
1519 TEST_F(AutofillManagerTest, GetProfileSuggestions_UnknownFields) { 1505 TEST_F(AutofillManagerTest, GetProfileSuggestions_UnknownFields) {
1520 // Set up our form data. 1506 // Set up our form data.
1521 FormData form; 1507 FormData form;
1522 form.name = ASCIIToUTF16("MyForm"); 1508 form.name = ASCIIToUTF16("MyForm");
1523 form.origin = GURL("http://myform.com/form.html"); 1509 form.origin = GURL("http://myform.com/form.html");
1524 form.action = GURL("http://myform.com/submit.html"); 1510 form.action = GURL("http://myform.com/submit.html");
1525 1511
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 FormData form; 1572 FormData form;
1587 CreateTestCreditCardFormData(&form, true, false); 1573 CreateTestCreditCardFormData(&form, true, false);
1588 std::vector<FormData> forms(1, form); 1574 std::vector<FormData> forms(1, form);
1589 FormsSeen(forms); 1575 FormsSeen(forms);
1590 1576
1591 FormFieldData field = form.fields[1]; 1577 FormFieldData field = form.fields[1];
1592 GetAutofillSuggestions(form, field); 1578 GetAutofillSuggestions(form, field);
1593 1579
1594 // Test that we sent the right values to the external delegate. 1580 // Test that we sent the right values to the external delegate.
1595 external_delegate_->CheckSuggestions( 1581 external_delegate_->CheckSuggestions(
1596 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1582 kDefaultPageID,
1597 "04/99", kVisaCard, 1583 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1598 autofill_manager_->GetPackedCreditCardID(4)), 1584 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1599 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1585 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1600 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1586 "10/98", kMasterCard,
1587 autofill_manager_->GetPackedCreditCardID(5)));
1601 } 1588 }
1602 1589
1603 // Test that we return all credit card profile suggestions when the triggering 1590 // Test that we return all credit card profile suggestions when the triggering
1604 // field has whitespace in it. 1591 // field has whitespace in it.
1605 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_Whitespace) { 1592 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_Whitespace) {
1606 // Set up our form data. 1593 // Set up our form data.
1607 FormData form; 1594 FormData form;
1608 CreateTestCreditCardFormData(&form, true, false); 1595 CreateTestCreditCardFormData(&form, true, false);
1609 std::vector<FormData> forms(1, form); 1596 std::vector<FormData> forms(1, form);
1610 FormsSeen(forms); 1597 FormsSeen(forms);
1611 1598
1612 FormFieldData field = form.fields[1]; 1599 FormFieldData field = form.fields[1];
1613 field.value = ASCIIToUTF16(" "); 1600 field.value = ASCIIToUTF16(" ");
1614 GetAutofillSuggestions(form, field); 1601 GetAutofillSuggestions(form, field);
1615 1602
1616 // Test that we sent the right values to the external delegate. 1603 // Test that we sent the right values to the external delegate.
1617 external_delegate_->CheckSuggestions( 1604 external_delegate_->CheckSuggestions(
1618 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1605 kDefaultPageID,
1619 "04/99", kVisaCard, 1606 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1620 autofill_manager_->GetPackedCreditCardID(4)), 1607 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1621 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1608 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1622 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1609 "10/98", kMasterCard,
1610 autofill_manager_->GetPackedCreditCardID(5)));
1623 } 1611 }
1624 1612
1625 // Test that we return all credit card profile suggestions when the triggering 1613 // Test that we return all credit card profile suggestions when the triggering
1626 // field has stop characters in it, which should be removed. 1614 // field has stop characters in it, which should be removed.
1627 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsOnly) { 1615 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsOnly) {
1628 // Set up our form data. 1616 // Set up our form data.
1629 FormData form; 1617 FormData form;
1630 CreateTestCreditCardFormData(&form, true, false); 1618 CreateTestCreditCardFormData(&form, true, false);
1631 std::vector<FormData> forms(1, form); 1619 std::vector<FormData> forms(1, form);
1632 FormsSeen(forms); 1620 FormsSeen(forms);
1633 1621
1634 FormFieldData field = form.fields[1]; 1622 FormFieldData field = form.fields[1];
1635 field.value = ASCIIToUTF16("____-____-____-____"); 1623 field.value = ASCIIToUTF16("____-____-____-____");
1636 GetAutofillSuggestions(form, field); 1624 GetAutofillSuggestions(form, field);
1637 1625
1638 // Test that we sent the right values to the external delegate. 1626 // Test that we sent the right values to the external delegate.
1639 external_delegate_->CheckSuggestions( 1627 external_delegate_->CheckSuggestions(
1640 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1628 kDefaultPageID,
1641 "04/99", kVisaCard, 1629 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1642 autofill_manager_->GetPackedCreditCardID(4)), 1630 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1643 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1631 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1644 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1632 "10/98", kMasterCard,
1633 autofill_manager_->GetPackedCreditCardID(5)));
1645 } 1634 }
1646 1635
1647 // Test that we return all credit card profile suggestions when the triggering 1636 // Test that we return all credit card profile suggestions when the triggering
1648 // field has stop characters in it and some input. 1637 // field has stop characters in it and some input.
1649 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsWithInput) { 1638 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_StopCharsWithInput) {
1650 // Add a credit card with particular numbers that we will attempt to recall. 1639 // Add a credit card with particular numbers that we will attempt to recall.
1651 CreditCard credit_card; 1640 CreditCard credit_card;
1652 test::SetCreditCardInfo(&credit_card, "John Smith", 1641 test::SetCreditCardInfo(&credit_card, "John Smith",
1653 "5255667890123123", // Mastercard 1642 "5255667890123123", // Mastercard
1654 "08", "2017"); 1643 "08", "2017");
1655 credit_card.set_guid("00000000-0000-0000-0000-000000000007"); 1644 credit_card.set_guid("00000000-0000-0000-0000-000000000007");
1656 autofill_manager_->AddCreditCard(credit_card); 1645 autofill_manager_->AddCreditCard(credit_card);
1657 1646
1658 // Set up our form data. 1647 // Set up our form data.
1659 FormData form; 1648 FormData form;
1660 CreateTestCreditCardFormData(&form, true, false); 1649 CreateTestCreditCardFormData(&form, true, false);
1661 std::vector<FormData> forms(1, form); 1650 std::vector<FormData> forms(1, form);
1662 FormsSeen(forms); 1651 FormsSeen(forms);
1663 1652
1664 FormFieldData field = form.fields[1]; 1653 FormFieldData field = form.fields[1];
1665 1654
1666 field.value = ASCIIToUTF16("5255-66__-____-____"); 1655 field.value = ASCIIToUTF16("5255-66__-____-____");
1667 GetAutofillSuggestions(form, field); 1656 GetAutofillSuggestions(form, field);
1668 1657
1669 // Test that we sent the right value to the external delegate. 1658 // Test that we sent the right value to the external delegate.
1670 external_delegate_->CheckSuggestions( 1659 external_delegate_->CheckSuggestions(
1671 kDefaultPageID, Suggestion("MasterCard" + kUTF8MidlineEllipsis + "3123", 1660 kDefaultPageID,
1672 "08/17", kMasterCard, 1661 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "3123",
1673 autofill_manager_->GetPackedCreditCardID(7))); 1662 "08/17", kMasterCard,
1663 autofill_manager_->GetPackedCreditCardID(7)));
1674 } 1664 }
1675 1665
1676 // Test that we return only matching credit card profile suggestions when the 1666 // Test that we return only matching credit card profile suggestions when the
1677 // selected form field has been partially filled out. 1667 // selected form field has been partially filled out.
1678 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_MatchCharacter) { 1668 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_MatchCharacter) {
1679 // Set up our form data. 1669 // Set up our form data.
1680 FormData form; 1670 FormData form;
1681 CreateTestCreditCardFormData(&form, true, false); 1671 CreateTestCreditCardFormData(&form, true, false);
1682 std::vector<FormData> forms(1, form); 1672 std::vector<FormData> forms(1, form);
1683 FormsSeen(forms); 1673 FormsSeen(forms);
1684 1674
1685 FormFieldData field; 1675 FormFieldData field;
1686 test::CreateTestFormField("Card Number", "cardnumber", "78", "text", &field); 1676 test::CreateTestFormField("Card Number", "cardnumber", "78", "text", &field);
1687 GetAutofillSuggestions(form, field); 1677 GetAutofillSuggestions(form, field);
1688 1678
1689 // Test that we sent the right values to the external delegate. 1679 // Test that we sent the right values to the external delegate.
1690 external_delegate_->CheckSuggestions( 1680 external_delegate_->CheckSuggestions(
1691 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1681 kDefaultPageID,
1692 "04/99", kVisaCard, 1682 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1693 autofill_manager_->GetPackedCreditCardID(4))); 1683 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)));
1694 } 1684 }
1695 1685
1696 // Test that we return credit card profile suggestions when the selected form 1686 // Test that we return credit card profile suggestions when the selected form
1697 // field is not the credit card number field. 1687 // field is not the credit card number field.
1698 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_NonCCNumber) { 1688 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_NonCCNumber) {
1699 // Set up our form data. 1689 // Set up our form data.
1700 FormData form; 1690 FormData form;
1701 CreateTestCreditCardFormData(&form, true, false); 1691 CreateTestCreditCardFormData(&form, true, false);
1702 std::vector<FormData> forms(1, form); 1692 std::vector<FormData> forms(1, form);
1703 FormsSeen(forms); 1693 FormsSeen(forms);
1704 1694
1705 const FormFieldData& field = form.fields[0]; 1695 const FormFieldData& field = form.fields[0];
1706 GetAutofillSuggestions(form, field); 1696 GetAutofillSuggestions(form, field);
1707 1697
1708 #if defined(OS_ANDROID) 1698 #if defined(OS_ANDROID)
1709 static const std::string kVisaSuggestion = 1699 static const std::string kVisaSuggestion =
1710 "Visa" + kUTF8MidlineEllipsis + "3456"; 1700 std::string("Visa") + kUTF8MidlineEllipsis + "3456";
1711 static const std::string kMcSuggestion = 1701 static const std::string kMcSuggestion =
1712 "MasterCard" + kUTF8MidlineEllipsis + "8765"; 1702 std::string("MasterCard") + kUTF8MidlineEllipsis + "8765";
1713 #else 1703 #else
1714 static const std::string kVisaSuggestion = "*3456"; 1704 static const std::string kVisaSuggestion = "*3456";
1715 static const std::string kMcSuggestion = "*8765"; 1705 static const std::string kMcSuggestion = "*8765";
1716 #endif 1706 #endif
1717 1707
1718 // Test that we sent the right values to the external delegate. 1708 // Test that we sent the right values to the external delegate.
1719 external_delegate_->CheckSuggestions( 1709 external_delegate_->CheckSuggestions(
1720 kDefaultPageID, 1710 kDefaultPageID,
1721 Suggestion("Elvis Presley", kVisaSuggestion, kVisaCard, 1711 Suggestion("Elvis Presley", kVisaSuggestion, kVisaCard,
1722 autofill_manager_->GetPackedCreditCardID(4)), 1712 autofill_manager_->GetPackedCreditCardID(4)),
1723 Suggestion("Buddy Holly", kMcSuggestion, kMasterCard, 1713 Suggestion("Buddy Holly", kMcSuggestion, kMasterCard,
1724 autofill_manager_->GetPackedCreditCardID(5))); 1714 autofill_manager_->GetPackedCreditCardID(5)));
1725 } 1715 }
1726 1716
1727 // Test that we return a warning explaining that credit card profile suggestions 1717 // Test that we return a warning explaining that credit card profile suggestions
1728 // are unavailable when the page and the form target URL are not secure. 1718 // are unavailable when the page and the form target URL are not secure.
1729 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_NonSecureContext) { 1719 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_NonSecureContext) {
1730 // Set up our form data. 1720 // Set up our form data.
1731 FormData form; 1721 FormData form;
1732 CreateTestCreditCardFormData(&form, /* is_https */ false, false); 1722 CreateTestCreditCardFormData(&form, /* is_https */ false, false);
1733 std::vector<FormData> forms(1, form); 1723 std::vector<FormData> forms(1, form);
1734 FormsSeen(forms); 1724 FormsSeen(forms);
1735 1725
1736 const FormFieldData& field = form.fields[0]; 1726 const FormFieldData& field = form.fields[0];
1737 GetAutofillSuggestions(form, field); 1727 GetAutofillSuggestions(form, field);
1738 1728
1739 // Test that we sent the right values to the external delegate. 1729 // Test that we sent the right values to the external delegate.
1740 external_delegate_->CheckSuggestions( 1730 external_delegate_->CheckSuggestions(
1741 kDefaultPageID, 1731 kDefaultPageID, Suggestion(l10n_util::GetStringUTF8(
1742 Suggestion( 1732 IDS_AUTOFILL_WARNING_INSECURE_CONNECTION),
1743 l10n_util::GetStringUTF8(IDS_AUTOFILL_WARNING_INSECURE_CONNECTION), 1733 "", "", -1));
1744 "", "", -1));
1745 1734
1746 // Clear the test credit cards and try again -- we shouldn't return a warning. 1735 // Clear the test credit cards and try again -- we shouldn't return a warning.
1747 personal_data_.ClearCreditCards(); 1736 personal_data_.ClearCreditCards();
1748 GetAutofillSuggestions(form, field); 1737 GetAutofillSuggestions(form, field);
1749 // Autocomplete suggestions are queried, but not Autofill. 1738 // Autocomplete suggestions are queried, but not Autofill.
1750 EXPECT_FALSE(external_delegate_->on_suggestions_returned_seen()); 1739 EXPECT_FALSE(external_delegate_->on_suggestions_returned_seen());
1751 } 1740 }
1752 1741
1753 // Test that we return an extra "Payment not secure" warning when the page and 1742 // Test that we return an extra "Payment not secure" warning when the page and
1754 // the form target URL are not secure. 1743 // the form target URL are not secure.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 FormData form; 1791 FormData form;
1803 CreateTestCreditCardFormData(&form, /* is_https */ true, false); 1792 CreateTestCreditCardFormData(&form, /* is_https */ true, false);
1804 std::vector<FormData> forms(1, form); 1793 std::vector<FormData> forms(1, form);
1805 FormsSeen(forms); 1794 FormsSeen(forms);
1806 1795
1807 FormFieldData field = form.fields[1]; 1796 FormFieldData field = form.fields[1];
1808 GetAutofillSuggestions(form, field); 1797 GetAutofillSuggestions(form, field);
1809 1798
1810 // Test that we sent the right values to the external delegate. 1799 // Test that we sent the right values to the external delegate.
1811 external_delegate_->CheckSuggestions( 1800 external_delegate_->CheckSuggestions(
1812 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1801 kDefaultPageID,
1813 "04/99", kVisaCard, 1802 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1814 autofill_manager_->GetPackedCreditCardID(4)), 1803 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1815 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1804 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1816 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1805 "10/98", kMasterCard,
1806 autofill_manager_->GetPackedCreditCardID(5)));
1817 } 1807 }
1818 1808
1819 // Test that we will eventually return the credit card signin promo when there 1809 // Test that we will eventually return the credit card signin promo when there
1820 // are no credit card suggestions and the promo is active. See the tests in 1810 // are no credit card suggestions and the promo is active. See the tests in
1821 // AutofillExternalDelegateTest that test whether the promo is added. 1811 // AutofillExternalDelegateTest that test whether the promo is added.
1822 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_OnlySigninPromo) { 1812 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_OnlySigninPromo) {
1823 personal_data_.ClearCreditCards(); 1813 personal_data_.ClearCreditCards();
1824 1814
1825 // Set up our form data. 1815 // Set up our form data.
1826 FormData form; 1816 FormData form;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 // Clear the form action. 1876 // Clear the form action.
1887 form.action = GURL(); 1877 form.action = GURL();
1888 std::vector<FormData> forms(1, form); 1878 std::vector<FormData> forms(1, form);
1889 FormsSeen(forms); 1879 FormsSeen(forms);
1890 1880
1891 FormFieldData field = form.fields[1]; 1881 FormFieldData field = form.fields[1];
1892 GetAutofillSuggestions(form, field); 1882 GetAutofillSuggestions(form, field);
1893 1883
1894 // Test that we sent the right values to the external delegate. 1884 // Test that we sent the right values to the external delegate.
1895 external_delegate_->CheckSuggestions( 1885 external_delegate_->CheckSuggestions(
1896 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1886 kDefaultPageID,
1897 "04/99", kVisaCard, 1887 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1898 autofill_manager_->GetPackedCreditCardID(4)), 1888 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1899 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1889 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1900 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1890 "10/98", kMasterCard,
1891 autofill_manager_->GetPackedCreditCardID(5)));
1901 } 1892 }
1902 1893
1903 // Test that we return credit card suggestions for secure pages that have a 1894 // Test that we return credit card suggestions for secure pages that have a
1904 // form action set to "javascript:something". 1895 // form action set to "javascript:something".
1905 TEST_F(AutofillManagerTest, 1896 TEST_F(AutofillManagerTest,
1906 GetCreditCardSuggestions_SecureContext_JavascriptFormAction) { 1897 GetCreditCardSuggestions_SecureContext_JavascriptFormAction) {
1907 // Set up our form data. 1898 // Set up our form data.
1908 FormData form; 1899 FormData form;
1909 CreateTestCreditCardFormData(&form, true, false); 1900 CreateTestCreditCardFormData(&form, true, false);
1910 // Have the form action be a javascript function (which is a valid URL). 1901 // Have the form action be a javascript function (which is a valid URL).
1911 form.action = GURL("javascript:alert('Hello');"); 1902 form.action = GURL("javascript:alert('Hello');");
1912 std::vector<FormData> forms(1, form); 1903 std::vector<FormData> forms(1, form);
1913 FormsSeen(forms); 1904 FormsSeen(forms);
1914 1905
1915 FormFieldData field = form.fields[1]; 1906 FormFieldData field = form.fields[1];
1916 GetAutofillSuggestions(form, field); 1907 GetAutofillSuggestions(form, field);
1917 1908
1918 // Test that we sent the right values to the external delegate. 1909 // Test that we sent the right values to the external delegate.
1919 external_delegate_->CheckSuggestions( 1910 external_delegate_->CheckSuggestions(
1920 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1911 kDefaultPageID,
1921 "04/99", kVisaCard, 1912 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1922 autofill_manager_->GetPackedCreditCardID(4)), 1913 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1923 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1914 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1924 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1915 "10/98", kMasterCard,
1916 autofill_manager_->GetPackedCreditCardID(5)));
1925 } 1917 }
1926 1918
1927 // Test that we return all credit card suggestions in the case that two cards 1919 // Test that we return all credit card suggestions in the case that two cards
1928 // have the same obfuscated number. 1920 // have the same obfuscated number.
1929 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_RepeatedObfuscatedNumber) { 1921 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_RepeatedObfuscatedNumber) {
1930 // Add a credit card with the same obfuscated number as Elvis's. 1922 // Add a credit card with the same obfuscated number as Elvis's.
1931 // |credit_card| will be owned by the mock PersonalDataManager. 1923 // |credit_card| will be owned by the mock PersonalDataManager.
1932 CreditCard credit_card; 1924 CreditCard credit_card;
1933 test::SetCreditCardInfo(&credit_card, "Elvis Presley", 1925 test::SetCreditCardInfo(&credit_card, "Elvis Presley",
1934 "5231567890123456", // Mastercard 1926 "5231567890123456", // Mastercard
1935 "05", "2999"); 1927 "05", "2999");
1936 credit_card.set_guid("00000000-0000-0000-0000-000000000007"); 1928 credit_card.set_guid("00000000-0000-0000-0000-000000000007");
1937 credit_card.set_use_date(base::Time::Now() - base::TimeDelta::FromDays(15)); 1929 credit_card.set_use_date(base::Time::Now() - base::TimeDelta::FromDays(15));
1938 autofill_manager_->AddCreditCard(credit_card); 1930 autofill_manager_->AddCreditCard(credit_card);
1939 1931
1940 // Set up our form data. 1932 // Set up our form data.
1941 FormData form; 1933 FormData form;
1942 CreateTestCreditCardFormData(&form, true, false); 1934 CreateTestCreditCardFormData(&form, true, false);
1943 std::vector<FormData> forms(1, form); 1935 std::vector<FormData> forms(1, form);
1944 FormsSeen(forms); 1936 FormsSeen(forms);
1945 1937
1946 FormFieldData field = form.fields[1]; 1938 FormFieldData field = form.fields[1];
1947 GetAutofillSuggestions(form, field); 1939 GetAutofillSuggestions(form, field);
1948 1940
1949 // Test that we sent the right values to the external delegate. 1941 // Test that we sent the right values to the external delegate.
1950 external_delegate_->CheckSuggestions( 1942 external_delegate_->CheckSuggestions(
1951 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1943 kDefaultPageID,
1952 "04/99", kVisaCard, 1944 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1953 autofill_manager_->GetPackedCreditCardID(4)), 1945 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1954 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1946 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1955 kMasterCard, autofill_manager_->GetPackedCreditCardID(5)), 1947 "10/98", kMasterCard,
1956 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "3456", "05/99", 1948 autofill_manager_->GetPackedCreditCardID(5)),
1957 kMasterCard, autofill_manager_->GetPackedCreditCardID(7))); 1949 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "3456",
1950 "05/99", kMasterCard,
1951 autofill_manager_->GetPackedCreditCardID(7)));
1958 } 1952 }
1959 1953
1960 // Test that we return profile and credit card suggestions for combined forms. 1954 // Test that we return profile and credit card suggestions for combined forms.
1961 TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestions) { 1955 TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestions) {
1962 // Set up our form data. 1956 // Set up our form data.
1963 FormData form; 1957 FormData form;
1964 test::CreateTestAddressFormData(&form); 1958 test::CreateTestAddressFormData(&form);
1965 CreateTestCreditCardFormData(&form, true, false); 1959 CreateTestCreditCardFormData(&form, true, false);
1966 std::vector<FormData> forms(1, form); 1960 std::vector<FormData> forms(1, form);
1967 FormsSeen(forms); 1961 FormsSeen(forms);
1968 1962
1969 FormFieldData field = form.fields[0]; 1963 FormFieldData field = form.fields[0];
1970 GetAutofillSuggestions(form, field); 1964 GetAutofillSuggestions(form, field);
1971 1965
1972 // Test that we sent the right address suggestions to the external delegate. 1966 // Test that we sent the right address suggestions to the external delegate.
1973 external_delegate_->CheckSuggestions( 1967 external_delegate_->CheckSuggestions(
1974 kDefaultPageID, Suggestion("Charles", "123 Apple St.", "", 1), 1968 kDefaultPageID, Suggestion("Charles", "123 Apple St.", "", 1),
1975 Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2)); 1969 Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2));
1976 1970
1977 const int kPageID2 = 2; 1971 const int kPageID2 = 2;
1978 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); 1972 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field);
1979 GetAutofillSuggestions(kPageID2, form, field); 1973 GetAutofillSuggestions(kPageID2, form, field);
1980 1974
1981 // Test that we sent the credit card suggestions to the external delegate. 1975 // Test that we sent the credit card suggestions to the external delegate.
1982 external_delegate_->CheckSuggestions( 1976 external_delegate_->CheckSuggestions(
1983 kPageID2, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 1977 kPageID2,
1984 "04/99", kVisaCard, 1978 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
1985 autofill_manager_->GetPackedCreditCardID(4)), 1979 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)),
1986 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1980 Suggestion(std::string("MasterCard") + kUTF8MidlineEllipsis + "8765",
1987 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1981 "10/98", kMasterCard,
1982 autofill_manager_->GetPackedCreditCardID(5)));
1988 } 1983 }
1989 1984
1990 // Test that for non-https forms with both address and credit card fields, we 1985 // Test that for non-https forms with both address and credit card fields, we
1991 // only return address suggestions. Instead of credit card suggestions, we 1986 // only return address suggestions. Instead of credit card suggestions, we
1992 // should return a warning explaining that credit card profile suggestions are 1987 // should return a warning explaining that credit card profile suggestions are
1993 // unavailable when the form is not https. 1988 // unavailable when the form is not https.
1994 TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) { 1989 TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) {
1995 // Set up our form data. 1990 // Set up our form data.
1996 FormData form; 1991 FormData form;
1997 test::CreateTestAddressFormData(&form); 1992 test::CreateTestAddressFormData(&form);
1998 CreateTestCreditCardFormData(&form, false, false); 1993 CreateTestCreditCardFormData(&form, false, false);
1999 std::vector<FormData> forms(1, form); 1994 std::vector<FormData> forms(1, form);
2000 FormsSeen(forms); 1995 FormsSeen(forms);
2001 1996
2002 FormFieldData field = form.fields[0]; 1997 FormFieldData field = form.fields[0];
2003 GetAutofillSuggestions(form, field); 1998 GetAutofillSuggestions(form, field);
2004 1999
2005 // Test that we sent the right suggestions to the external delegate. 2000 // Test that we sent the right suggestions to the external delegate.
2006 external_delegate_->CheckSuggestions( 2001 external_delegate_->CheckSuggestions(
2007 kDefaultPageID, Suggestion("Charles", "123 Apple St.", "", 1), 2002 kDefaultPageID, Suggestion("Charles", "123 Apple St.", "", 1),
2008 Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2)); 2003 Suggestion("Elvis", "3734 Elvis Presley Blvd.", "", 2));
2009 2004
2010 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); 2005 test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field);
2011 const int kPageID2 = 2; 2006 const int kPageID2 = 2;
2012 GetAutofillSuggestions(kPageID2, form, field); 2007 GetAutofillSuggestions(kPageID2, form, field);
2013 2008
2014 // Test that we sent the right values to the external delegate. 2009 // Test that we sent the right values to the external delegate.
2015 external_delegate_->CheckSuggestions( 2010 external_delegate_->CheckSuggestions(
2016 kPageID2, 2011 kPageID2, Suggestion(l10n_util::GetStringUTF8(
2017 Suggestion( 2012 IDS_AUTOFILL_WARNING_INSECURE_CONNECTION),
2018 l10n_util::GetStringUTF8(IDS_AUTOFILL_WARNING_INSECURE_CONNECTION), 2013 "", "", -1));
2019 "", "", -1));
2020 2014
2021 // Clear the test credit cards and try again -- we shouldn't return a warning. 2015 // Clear the test credit cards and try again -- we shouldn't return a warning.
2022 personal_data_.ClearCreditCards(); 2016 personal_data_.ClearCreditCards();
2023 GetAutofillSuggestions(form, field); 2017 GetAutofillSuggestions(form, field);
2024 external_delegate_->CheckNoSuggestions(kDefaultPageID); 2018 external_delegate_->CheckNoSuggestions(kDefaultPageID);
2025 } 2019 }
2026 2020
2027 // Test that we return autocomplete-like suggestions when trying to autofill 2021 // Test that we return autocomplete-like suggestions when trying to autofill
2028 // already filled forms. 2022 // already filled forms.
2029 TEST_F(AutofillManagerTest, GetFieldSuggestionsWhenFormIsAutofilled) { 2023 TEST_F(AutofillManagerTest, GetFieldSuggestionsWhenFormIsAutofilled) {
(...skipping 29 matching lines...) Expand all
2059 GetAutofillSuggestions(form, field); 2053 GetAutofillSuggestions(form, field);
2060 2054
2061 // Add some Autocomplete suggestions. 2055 // Add some Autocomplete suggestions.
2062 // This triggers the combined message send. 2056 // This triggers the combined message send.
2063 std::vector<base::string16> suggestions; 2057 std::vector<base::string16> suggestions;
2064 suggestions.push_back(ASCIIToUTF16("one")); 2058 suggestions.push_back(ASCIIToUTF16("one"));
2065 suggestions.push_back(ASCIIToUTF16("two")); 2059 suggestions.push_back(ASCIIToUTF16("two"));
2066 AutocompleteSuggestionsReturned(suggestions); 2060 AutocompleteSuggestionsReturned(suggestions);
2067 2061
2068 // Test that we sent the right values to the external delegate. 2062 // Test that we sent the right values to the external delegate.
2069 external_delegate_->CheckSuggestions( 2063 external_delegate_->CheckSuggestions(kDefaultPageID,
2070 kDefaultPageID, 2064 Suggestion("one", "", "", 0),
2071 Suggestion("one", "", "", 0), 2065 Suggestion("two", "", "", 0));
2072 Suggestion("two", "", "", 0));
2073 } 2066 }
2074 2067
2075 // Test that we do not return duplicate values drawn from multiple profiles when 2068 // Test that we do not return duplicate values drawn from multiple profiles when
2076 // filling an already filled field. 2069 // filling an already filled field.
2077 TEST_F(AutofillManagerTest, GetFieldSuggestionsWithDuplicateValues) { 2070 TEST_F(AutofillManagerTest, GetFieldSuggestionsWithDuplicateValues) {
2078 // Set up our form data. 2071 // Set up our form data.
2079 FormData form; 2072 FormData form;
2080 test::CreateTestAddressFormData(&form); 2073 test::CreateTestAddressFormData(&form);
2081 std::vector<FormData> forms(1, form); 2074 std::vector<FormData> forms(1, form);
2082 FormsSeen(forms); 2075 FormsSeen(forms);
2083 2076
2084 // |profile| will be owned by the mock PersonalDataManager. 2077 // |profile| will be owned by the mock PersonalDataManager.
2085 std::unique_ptr<AutofillProfile> profile = 2078 std::unique_ptr<AutofillProfile> profile =
2086 base::MakeUnique<AutofillProfile>(); 2079 base::MakeUnique<AutofillProfile>();
2087 test::SetProfileInfo(profile.get(), "Elvis", "", "", "", "", "", "", "", "", 2080 test::SetProfileInfo(profile.get(), "Elvis", "", "", "", "", "", "", "", "",
2088 "", "", ""); 2081 "", "", "");
2089 profile->set_guid("00000000-0000-0000-0000-000000000101"); 2082 profile->set_guid("00000000-0000-0000-0000-000000000101");
2090 autofill_manager_->AddProfile(std::move(profile)); 2083 autofill_manager_->AddProfile(std::move(profile));
2091 2084
2092 FormFieldData& field = form.fields[0]; 2085 FormFieldData& field = form.fields[0];
2093 field.is_autofilled = true; 2086 field.is_autofilled = true;
2094 field.value = ASCIIToUTF16("Elvis"); 2087 field.value = ASCIIToUTF16("Elvis");
2095 GetAutofillSuggestions(form, field); 2088 GetAutofillSuggestions(form, field);
2096 2089
2097 // Test that we sent the right values to the external delegate. 2090 // Test that we sent the right values to the external delegate.
2098 external_delegate_->CheckSuggestions( 2091 external_delegate_->CheckSuggestions(kDefaultPageID,
2099 kDefaultPageID, 2092 Suggestion("Elvis", "", "", 1));
2100 Suggestion("Elvis", "", "", 1));
2101 } 2093 }
2102 2094
2103 TEST_F(AutofillManagerTest, GetProfileSuggestions_FancyPhone) { 2095 TEST_F(AutofillManagerTest, GetProfileSuggestions_FancyPhone) {
2104 // Set up our form data. 2096 // Set up our form data.
2105 FormData form; 2097 FormData form;
2106 test::CreateTestAddressFormData(&form); 2098 test::CreateTestAddressFormData(&form);
2107 std::vector<FormData> forms(1, form); 2099 std::vector<FormData> forms(1, form);
2108 FormsSeen(forms); 2100 FormsSeen(forms);
2109 2101
2110 std::unique_ptr<AutofillProfile> profile = 2102 std::unique_ptr<AutofillProfile> profile =
2111 base::MakeUnique<AutofillProfile>(); 2103 base::MakeUnique<AutofillProfile>();
2112 profile->set_guid("00000000-0000-0000-0000-000000000103"); 2104 profile->set_guid("00000000-0000-0000-0000-000000000103");
2113 profile->SetInfo(AutofillType(NAME_FULL), ASCIIToUTF16("Natty Bumppo"), 2105 profile->SetInfo(AutofillType(NAME_FULL), ASCIIToUTF16("Natty Bumppo"),
2114 "en-US"); 2106 "en-US");
2115 profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, 2107 profile->SetRawInfo(PHONE_HOME_WHOLE_NUMBER, ASCIIToUTF16("1800PRAIRIE"));
2116 ASCIIToUTF16("1800PRAIRIE"));
2117 autofill_manager_->AddProfile(std::move(profile)); 2108 autofill_manager_->AddProfile(std::move(profile));
2118 2109
2119 const FormFieldData& field = form.fields[9]; 2110 const FormFieldData& field = form.fields[9];
2120 GetAutofillSuggestions(form, field); 2111 GetAutofillSuggestions(form, field);
2121 2112
2122 // Test that we sent the right values to the external delegate. Inferred 2113 // Test that we sent the right values to the external delegate. Inferred
2123 // labels include the most private field of those that would be filled. 2114 // labels include the most private field of those that would be filled.
2124 external_delegate_->CheckSuggestions( 2115 external_delegate_->CheckSuggestions(
2125 kDefaultPageID, 2116 kDefaultPageID,
2126 Suggestion("18007724743", "Natty Bumppo", "", 1), // 1800PRAIRIE 2117 Suggestion("18007724743", "Natty Bumppo", "", 1), // 1800PRAIRIE
(...skipping 14 matching lines...) Expand all
2141 size_t max_length; 2132 size_t max_length;
2142 const char* const autocomplete_attribute; 2133 const char* const autocomplete_attribute;
2143 } test_fields[] = {{"country code", "country_code", 1, "tel-country-code"}, 2134 } test_fields[] = {{"country code", "country_code", 1, "tel-country-code"},
2144 {"area code", "area_code", 3, "tel-area-code"}, 2135 {"area code", "area_code", 3, "tel-area-code"},
2145 {"phone", "phone_prefix", 3, "tel-local-prefix"}, 2136 {"phone", "phone_prefix", 3, "tel-local-prefix"},
2146 {"-", "phone_suffix", 4, "tel-local-suffix"}, 2137 {"-", "phone_suffix", 4, "tel-local-suffix"},
2147 {"Phone Extension", "ext", 5, "tel-extension"}}; 2138 {"Phone Extension", "ext", 5, "tel-extension"}};
2148 2139
2149 FormFieldData field; 2140 FormFieldData field;
2150 for (const auto& test_field : test_fields) { 2141 for (const auto& test_field : test_fields) {
2151 test::CreateTestFormField( 2142 test::CreateTestFormField(test_field.label, test_field.name, "", "text",
2152 test_field.label, test_field.name, "", "text", &field); 2143 &field);
2153 field.max_length = test_field.max_length; 2144 field.max_length = test_field.max_length;
2154 field.autocomplete_attribute = std::string(); 2145 field.autocomplete_attribute = std::string();
2155 form.fields.push_back(field); 2146 form.fields.push_back(field);
2156 } 2147 }
2157 2148
2158 std::vector<FormData> forms(1, form); 2149 std::vector<FormData> forms(1, form);
2159 FormsSeen(forms); 2150 FormsSeen(forms);
2160 2151
2161 std::unique_ptr<AutofillProfile> profile = 2152 std::unique_ptr<AutofillProfile> profile =
2162 base::MakeUnique<AutofillProfile>(); 2153 base::MakeUnique<AutofillProfile>();
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
2251 CreateTestCreditCardFormData(&form, true, false); 2242 CreateTestCreditCardFormData(&form, true, false);
2252 std::vector<FormData> forms(1, form); 2243 std::vector<FormData> forms(1, form);
2253 FormsSeen(forms); 2244 FormsSeen(forms);
2254 2245
2255 const char guid[] = "00000000-0000-0000-0000-000000000004"; 2246 const char guid[] = "00000000-0000-0000-0000-000000000004";
2256 int response_page_id = 0; 2247 int response_page_id = 0;
2257 FormData response_data; 2248 FormData response_data;
2258 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(), 2249 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(),
2259 MakeFrontendID(guid, std::string()), 2250 MakeFrontendID(guid, std::string()),
2260 &response_page_id, &response_data); 2251 &response_page_id, &response_data);
2261 ExpectFilledCreditCardFormElvis( 2252 ExpectFilledCreditCardFormElvis(response_page_id, response_data,
2262 response_page_id, response_data, kDefaultPageID, false); 2253 kDefaultPageID, false);
2263 } 2254 }
2264 2255
2265 // Test that whitespace is stripped from the credit card number. 2256 // Test that whitespace is stripped from the credit card number.
2266 TEST_F(AutofillManagerTest, FillCreditCardForm_StripCardNumberWhitespace) { 2257 TEST_F(AutofillManagerTest, FillCreditCardForm_StripCardNumberWhitespace) {
2267 // Same as the SetUp(), but generate Elvis card with whitespace in credit 2258 // Same as the SetUp(), but generate Elvis card with whitespace in credit
2268 // card number. 2259 // card number.
2269 personal_data_.CreateTestCreditCardWithWhitespace(); 2260 personal_data_.CreateTestCreditCardWithWhitespace();
2270 // Set up our form data. 2261 // Set up our form data.
2271 FormData form; 2262 FormData form;
2272 CreateTestCreditCardFormData(&form, true, false); 2263 CreateTestCreditCardFormData(&form, true, false);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2316 std::vector<FormData> forms(1, form); 2307 std::vector<FormData> forms(1, form);
2317 FormsSeen(forms); 2308 FormsSeen(forms);
2318 2309
2319 const char guid[] = "00000000-0000-0000-0000-000000000007"; 2310 const char guid[] = "00000000-0000-0000-0000-000000000007";
2320 int response_page_id = 0; 2311 int response_page_id = 0;
2321 FormData response_data; 2312 FormData response_data;
2322 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(), 2313 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(),
2323 MakeFrontendID(guid, std::string()), 2314 MakeFrontendID(guid, std::string()),
2324 &response_page_id, &response_data); 2315 &response_page_id, &response_data);
2325 ExpectFilledCreditCardYearMonthWithYearMonth(response_page_id, response_data, 2316 ExpectFilledCreditCardYearMonthWithYearMonth(response_page_id, response_data,
2326 kDefaultPageID, false, "", ""); 2317 kDefaultPageID, false, "", "");
2327 } 2318 }
2328 2319
2329
2330 // Test that we correctly fill a credit card form with month input type. 2320 // Test that we correctly fill a credit card form with month input type.
2331 // 2. year empty, month non-empty 2321 // 2. year empty, month non-empty
2332 TEST_F(AutofillManagerTest, FillCreditCardForm_NoYearMonth) { 2322 TEST_F(AutofillManagerTest, FillCreditCardForm_NoYearMonth) {
2333 // Same as the SetUp(), but generate 4 credit cards with year month 2323 // Same as the SetUp(), but generate 4 credit cards with year month
2334 // combination. 2324 // combination.
2335 personal_data_.CreateTestCreditCardsYearAndMonth("", "04"); 2325 personal_data_.CreateTestCreditCardsYearAndMonth("", "04");
2336 // Set up our form data. 2326 // Set up our form data.
2337 FormData form; 2327 FormData form;
2338 CreateTestCreditCardFormData(&form, true, true); 2328 CreateTestCreditCardFormData(&form, true, true);
2339 std::vector<FormData> forms(1, form); 2329 std::vector<FormData> forms(1, form);
2340 FormsSeen(forms); 2330 FormsSeen(forms);
2341 2331
2342 const char guid[] = "00000000-0000-0000-0000-000000000007"; 2332 const char guid[] = "00000000-0000-0000-0000-000000000007";
2343 int response_page_id = 0; 2333 int response_page_id = 0;
2344 FormData response_data; 2334 FormData response_data;
2345 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(), 2335 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(),
2346 MakeFrontendID(guid, std::string()), 2336 MakeFrontendID(guid, std::string()),
2347 &response_page_id, &response_data); 2337 &response_page_id, &response_data);
2348 ExpectFilledCreditCardYearMonthWithYearMonth(response_page_id, response_data, 2338 ExpectFilledCreditCardYearMonthWithYearMonth(response_page_id, response_data,
2349 kDefaultPageID, false, "", "04"); 2339 kDefaultPageID, false, "", "04");
2350 } 2340 }
2351 2341
2352 // Test that we correctly fill a credit card form with month input type. 2342 // Test that we correctly fill a credit card form with month input type.
2353 // 3. year non-empty, month empty 2343 // 3. year non-empty, month empty
2354 TEST_F(AutofillManagerTest, FillCreditCardForm_YearNoMonth) { 2344 TEST_F(AutofillManagerTest, FillCreditCardForm_YearNoMonth) {
2355 // Same as the SetUp(), but generate 4 credit cards with year month 2345 // Same as the SetUp(), but generate 4 credit cards with year month
2356 // combination. 2346 // combination.
2357 personal_data_.CreateTestCreditCardsYearAndMonth("2999", ""); 2347 personal_data_.CreateTestCreditCardsYearAndMonth("2999", "");
2358 // Set up our form data. 2348 // Set up our form data.
2359 FormData form; 2349 FormData form;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2453 2443
2454 // Now fill the credit card data. 2444 // Now fill the credit card data.
2455 const int kPageID2 = 2; 2445 const int kPageID2 = 2;
2456 const char guid2[] = "00000000-0000-0000-0000-000000000004"; 2446 const char guid2[] = "00000000-0000-0000-0000-000000000004";
2457 response_page_id = 0; 2447 response_page_id = 0;
2458 { 2448 {
2459 FillAutofillFormDataAndSaveResults(kPageID2, form, form.fields.back(), 2449 FillAutofillFormDataAndSaveResults(kPageID2, form, form.fields.back(),
2460 MakeFrontendID(guid2, std::string()), 2450 MakeFrontendID(guid2, std::string()),
2461 &response_page_id, &response_data); 2451 &response_page_id, &response_data);
2462 SCOPED_TRACE("Credit card"); 2452 SCOPED_TRACE("Credit card");
2463 ExpectFilledCreditCardFormElvis( 2453 ExpectFilledCreditCardFormElvis(response_page_id, response_data, kPageID2,
2464 response_page_id, response_data, kPageID2, true); 2454 true);
2465 } 2455 }
2466 } 2456 }
2467 2457
2468 // Test that a field with an unrecognized autocomplete attribute is not filled. 2458 // Test that a field with an unrecognized autocomplete attribute is not filled.
2469 TEST_F(AutofillManagerTest, FillAddressForm_UnrecognizedAttribute) { 2459 TEST_F(AutofillManagerTest, FillAddressForm_UnrecognizedAttribute) {
2470 FormData address_form; 2460 FormData address_form;
2471 address_form.name = ASCIIToUTF16("MyForm"); 2461 address_form.name = ASCIIToUTF16("MyForm");
2472 address_form.origin = GURL("https://myform.com/form.html"); 2462 address_form.origin = GURL("https://myform.com/form.html");
2473 address_form.action = GURL("https://myform.com/submit.html"); 2463 address_form.action = GURL("https://myform.com/submit.html");
2474 FormFieldData field; 2464 FormFieldData field;
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
2767 FormData response_data; 2757 FormData response_data;
2768 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0], 2758 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0],
2769 MakeFrontendID(std::string(), guid), 2759 MakeFrontendID(std::string(), guid),
2770 &response_page_id, &response_data); 2760 &response_page_id, &response_data);
2771 2761
2772 // The whole form should be filled as all the fields belong to the same 2762 // The whole form should be filled as all the fields belong to the same
2773 // logical section. 2763 // logical section.
2774 ASSERT_EQ(6U, response_data.fields.size()); 2764 ASSERT_EQ(6U, response_data.fields.size());
2775 ExpectFilledField("First Name", "firstname", "Elvis", "text", 2765 ExpectFilledField("First Name", "firstname", "Elvis", "text",
2776 response_data.fields[0]); 2766 response_data.fields[0]);
2777 ExpectFilledField("", "lastname", "Presley", "text", 2767 ExpectFilledField("", "lastname", "Presley", "text", response_data.fields[1]);
2778 response_data.fields[1]);
2779 ExpectFilledField("", "email", "theking@gmail.com", "text", 2768 ExpectFilledField("", "email", "theking@gmail.com", "text",
2780 response_data.fields[2]); 2769 response_data.fields[2]);
2781 ExpectFilledField("Phone Number", "phonenumber", "12345678901", "tel", 2770 ExpectFilledField("Phone Number", "phonenumber", "12345678901", "tel",
2782 response_data.fields[3]); 2771 response_data.fields[3]);
2783 ExpectFilledField("", "email_", "theking@gmail.com", "text", 2772 ExpectFilledField("", "email_", "theking@gmail.com", "text",
2784 response_data.fields[4]); 2773 response_data.fields[4]);
2785 ExpectFilledField("Country", "country", "United States", "text", 2774 ExpectFilledField("Country", "country", "United States", "text",
2786 response_data.fields[5]); 2775 response_data.fields[5]);
2787 } 2776 }
2788 2777
(...skipping 15 matching lines...) Expand all
2804 // Fill the first section. 2793 // Fill the first section.
2805 const char guid[] = "00000000-0000-0000-0000-000000000001"; 2794 const char guid[] = "00000000-0000-0000-0000-000000000001";
2806 int response_page_id = 0; 2795 int response_page_id = 0;
2807 FormData response_data; 2796 FormData response_data;
2808 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0], 2797 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0],
2809 MakeFrontendID(std::string(), guid), 2798 MakeFrontendID(std::string(), guid),
2810 &response_page_id, &response_data); 2799 &response_page_id, &response_data);
2811 { 2800 {
2812 SCOPED_TRACE("Address 1"); 2801 SCOPED_TRACE("Address 1");
2813 // The second address section should be empty. 2802 // The second address section should be empty.
2814 ASSERT_EQ(response_data.fields.size(), 2*kAddressFormSize); 2803 ASSERT_EQ(response_data.fields.size(), 2 * kAddressFormSize);
2815 for (size_t i = kAddressFormSize; i < form.fields.size(); ++i) { 2804 for (size_t i = kAddressFormSize; i < form.fields.size(); ++i) {
2816 EXPECT_EQ(base::string16(), response_data.fields[i].value); 2805 EXPECT_EQ(base::string16(), response_data.fields[i].value);
2817 } 2806 }
2818 2807
2819 // The first address section should be filled with Elvis's data. 2808 // The first address section should be filled with Elvis's data.
2820 response_data.fields.resize(kAddressFormSize); 2809 response_data.fields.resize(kAddressFormSize);
2821 ExpectFilledAddressFormElvis(response_page_id, response_data, 2810 ExpectFilledAddressFormElvis(response_page_id, response_data,
2822 kDefaultPageID, false); 2811 kDefaultPageID, false);
2823 } 2812 }
2824 2813
2825 // Fill the second section, with the initiating field somewhere in the middle 2814 // Fill the second section, with the initiating field somewhere in the middle
2826 // of the section. 2815 // of the section.
2827 const int kPageID2 = 2; 2816 const int kPageID2 = 2;
2828 const char guid2[] = "00000000-0000-0000-0000-000000000001"; 2817 const char guid2[] = "00000000-0000-0000-0000-000000000001";
2829 ASSERT_LT(9U, kAddressFormSize); 2818 ASSERT_LT(9U, kAddressFormSize);
2830 response_page_id = 0; 2819 response_page_id = 0;
2831 FillAutofillFormDataAndSaveResults( 2820 FillAutofillFormDataAndSaveResults(
2832 kPageID2, form, form.fields[kAddressFormSize + 9], 2821 kPageID2, form, form.fields[kAddressFormSize + 9],
2833 MakeFrontendID(std::string(), guid2), &response_page_id, &response_data); 2822 MakeFrontendID(std::string(), guid2), &response_page_id, &response_data);
2834 { 2823 {
2835 SCOPED_TRACE("Address 2"); 2824 SCOPED_TRACE("Address 2");
2836 ASSERT_EQ(response_data.fields.size(), form.fields.size()); 2825 ASSERT_EQ(response_data.fields.size(), form.fields.size());
2837 2826
2838 // The first address section should be empty. 2827 // The first address section should be empty.
2839 ASSERT_EQ(response_data.fields.size(), 2*kAddressFormSize); 2828 ASSERT_EQ(response_data.fields.size(), 2 * kAddressFormSize);
2840 for (size_t i = 0; i < kAddressFormSize; ++i) { 2829 for (size_t i = 0; i < kAddressFormSize; ++i) {
2841 EXPECT_EQ(base::string16(), response_data.fields[i].value); 2830 EXPECT_EQ(base::string16(), response_data.fields[i].value);
2842 } 2831 }
2843 2832
2844 // The second address section should be filled with Elvis's data. 2833 // The second address section should be filled with Elvis's data.
2845 FormData secondSection = response_data; 2834 FormData secondSection = response_data;
2846 secondSection.fields.erase(secondSection.fields.begin(), 2835 secondSection.fields.erase(secondSection.fields.begin(),
2847 secondSection.fields.begin() + kAddressFormSize); 2836 secondSection.fields.begin() + kAddressFormSize);
2848 for (size_t i = 0; i < kAddressFormSize; ++i) { 2837 for (size_t i = 0; i < kAddressFormSize; ++i) {
2849 // Restore the expected field names. 2838 // Restore the expected field names.
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 MakeFrontendID(std::string(), guid2), 2943 MakeFrontendID(std::string(), guid2),
2955 &response_page_id, &response_data); 2944 &response_page_id, &response_data);
2956 { 2945 {
2957 SCOPED_TRACE("Billing address"); 2946 SCOPED_TRACE("Billing address");
2958 EXPECT_EQ(kPageID2, response_page_id); 2947 EXPECT_EQ(kPageID2, response_page_id);
2959 EXPECT_EQ(ASCIIToUTF16("MyForm"), response_data.name); 2948 EXPECT_EQ(ASCIIToUTF16("MyForm"), response_data.name);
2960 EXPECT_EQ(GURL("https://myform.com/form.html"), response_data.origin); 2949 EXPECT_EQ(GURL("https://myform.com/form.html"), response_data.origin);
2961 EXPECT_EQ(GURL("https://myform.com/submit.html"), response_data.action); 2950 EXPECT_EQ(GURL("https://myform.com/submit.html"), response_data.action);
2962 ASSERT_EQ(11U, response_data.fields.size()); 2951 ASSERT_EQ(11U, response_data.fields.size());
2963 2952
2964 ExpectFilledField("", "country", "US", "text", 2953 ExpectFilledField("", "country", "US", "text", response_data.fields[0]);
2965 response_data.fields[0]);
2966 ExpectFilledField("", "firstname", "", "text", response_data.fields[1]); 2954 ExpectFilledField("", "firstname", "", "text", response_data.fields[1]);
2967 ExpectFilledField("", "lastname", "", "text", response_data.fields[2]); 2955 ExpectFilledField("", "lastname", "", "text", response_data.fields[2]);
2968 ExpectFilledField("", "address", "3734 Elvis Presley Blvd.", "text", 2956 ExpectFilledField("", "address", "3734 Elvis Presley Blvd.", "text",
2969 response_data.fields[3]); 2957 response_data.fields[3]);
2970 ExpectFilledField("", "city", "Memphis", "text", response_data.fields[4]); 2958 ExpectFilledField("", "city", "Memphis", "text", response_data.fields[4]);
2971 ExpectFilledField("", "state", "Tennessee", "text", 2959 ExpectFilledField("", "state", "Tennessee", "text",
2972 response_data.fields[5]); 2960 response_data.fields[5]);
2973 ExpectFilledField("", "zip", "38116", "text", response_data.fields[6]); 2961 ExpectFilledField("", "zip", "38116", "text", response_data.fields[6]);
2974 ExpectFilledField("", "ccname", "", "text", response_data.fields[7]); 2962 ExpectFilledField("", "ccname", "", "text", response_data.fields[7]);
2975 ExpectFilledField("", "ccnumber", "", "text", response_data.fields[8]); 2963 ExpectFilledField("", "ccnumber", "", "text", response_data.fields[8]);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3066 3054
3067 // Now fill the credit card data. 3055 // Now fill the credit card data.
3068 const int kPageID2 = 2; 3056 const int kPageID2 = 2;
3069 const char guid2[] = "00000000-0000-0000-0000-000000000004"; 3057 const char guid2[] = "00000000-0000-0000-0000-000000000004";
3070 response_page_id = 0; 3058 response_page_id = 0;
3071 FillAutofillFormDataAndSaveResults(kPageID2, form, form.fields.back(), 3059 FillAutofillFormDataAndSaveResults(kPageID2, form, form.fields.back(),
3072 MakeFrontendID(guid2, std::string()), 3060 MakeFrontendID(guid2, std::string()),
3073 &response_page_id, &response_data); 3061 &response_page_id, &response_data);
3074 { 3062 {
3075 SCOPED_TRACE("Credit card 1"); 3063 SCOPED_TRACE("Credit card 1");
3076 ExpectFilledCreditCardFormElvis( 3064 ExpectFilledCreditCardFormElvis(response_page_id, response_data, kPageID2,
3077 response_page_id, response_data, kPageID2, true); 3065 true);
3078 } 3066 }
3079 3067
3080 // Now set the credit card fields to also be auto-filled, and try again to 3068 // Now set the credit card fields to also be auto-filled, and try again to
3081 // fill the credit card data 3069 // fill the credit card data
3082 for (std::vector<FormFieldData>::iterator iter = form.fields.begin(); 3070 for (std::vector<FormFieldData>::iterator iter = form.fields.begin();
3083 iter != form.fields.end(); 3071 iter != form.fields.end(); ++iter) {
3084 ++iter) {
3085 iter->is_autofilled = true; 3072 iter->is_autofilled = true;
3086 } 3073 }
3087 3074
3088 const int kPageID3 = 3; 3075 const int kPageID3 = 3;
3089 response_page_id = 0; 3076 response_page_id = 0;
3090 FillAutofillFormDataAndSaveResults( 3077 FillAutofillFormDataAndSaveResults(
3091 kPageID3, form, form.fields[form.fields.size() - 2], 3078 kPageID3, form, form.fields[form.fields.size() - 2],
3092 MakeFrontendID(guid2, std::string()), &response_page_id, &response_data); 3079 MakeFrontendID(guid2, std::string()), &response_page_id, &response_data);
3093 { 3080 {
3094 SCOPED_TRACE("Credit card 2"); 3081 SCOPED_TRACE("Credit card 2");
(...skipping 14 matching lines...) Expand all
3109 form_with_us_number_max_length.action = 3096 form_with_us_number_max_length.action =
3110 GURL("http://myform.com/phone_submit.html"); 3097 GURL("http://myform.com/phone_submit.html");
3111 FormData form_with_autocompletetype = form_with_us_number_max_length; 3098 FormData form_with_autocompletetype = form_with_us_number_max_length;
3112 form_with_autocompletetype.name = ASCIIToUTF16("MyAutocompletetypePhoneForm"); 3099 form_with_autocompletetype.name = ASCIIToUTF16("MyAutocompletetypePhoneForm");
3113 3100
3114 struct { 3101 struct {
3115 const char* label; 3102 const char* label;
3116 const char* name; 3103 const char* name;
3117 size_t max_length; 3104 size_t max_length;
3118 const char* autocomplete_attribute; 3105 const char* autocomplete_attribute;
3119 } test_fields[] = { 3106 } test_fields[] = {{"country code", "country_code", 1, "tel-country-code"},
3120 { "country code", "country_code", 1, "tel-country-code" }, 3107 {"area code", "area_code", 3, "tel-area-code"},
3121 { "area code", "area_code", 3, "tel-area-code" }, 3108 {"phone", "phone_prefix", 3, "tel-local-prefix"},
3122 { "phone", "phone_prefix", 3, "tel-local-prefix" }, 3109 {"-", "phone_suffix", 4, "tel-local-suffix"},
3123 { "-", "phone_suffix", 4, "tel-local-suffix" }, 3110 {"Phone Extension", "ext", 3, "tel-extension"}};
3124 { "Phone Extension", "ext", 3, "tel-extension" }
3125 };
3126 3111
3127 FormFieldData field; 3112 FormFieldData field;
3128 const size_t default_max_length = field.max_length; 3113 const size_t default_max_length = field.max_length;
3129 for (const auto& test_field : test_fields) { 3114 for (const auto& test_field : test_fields) {
3130 test::CreateTestFormField( 3115 test::CreateTestFormField(test_field.label, test_field.name, "", "text",
3131 test_field.label, test_field.name, "", "text", &field); 3116 &field);
3132 field.max_length = test_field.max_length; 3117 field.max_length = test_field.max_length;
3133 field.autocomplete_attribute = std::string(); 3118 field.autocomplete_attribute = std::string();
3134 form_with_us_number_max_length.fields.push_back(field); 3119 form_with_us_number_max_length.fields.push_back(field);
3135 3120
3136 field.max_length = default_max_length; 3121 field.max_length = default_max_length;
3137 field.autocomplete_attribute = test_field.autocomplete_attribute; 3122 field.autocomplete_attribute = test_field.autocomplete_attribute;
3138 form_with_autocompletetype.fields.push_back(field); 3123 form_with_autocompletetype.fields.push_back(field);
3139 } 3124 }
3140 3125
3141 std::vector<FormData> forms; 3126 std::vector<FormData> forms;
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
3592 signatures.push_back(form_structure->FormSignatureAsStr()); 3577 signatures.push_back(form_structure->FormSignatureAsStr());
3593 signatures.push_back(form_structure2->FormSignatureAsStr()); 3578 signatures.push_back(form_structure2->FormSignatureAsStr());
3594 3579
3595 base::HistogramTester histogram_tester; 3580 base::HistogramTester histogram_tester;
3596 autofill_manager_->OnLoadedServerPredictions(response_string, signatures); 3581 autofill_manager_->OnLoadedServerPredictions(response_string, signatures);
3597 // Verify that FormStructure::ParseQueryResponse was called (here and below). 3582 // Verify that FormStructure::ParseQueryResponse was called (here and below).
3598 histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse", 3583 histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse",
3599 AutofillMetrics::QUERY_RESPONSE_RECEIVED, 3584 AutofillMetrics::QUERY_RESPONSE_RECEIVED,
3600 1); 3585 1);
3601 histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse", 3586 histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse",
3602 AutofillMetrics::QUERY_RESPONSE_PARSED, 3587 AutofillMetrics::QUERY_RESPONSE_PARSED, 1);
3603 1);
3604 // We expect the server type to have been applied to the first field of the 3588 // We expect the server type to have been applied to the first field of the
3605 // first form. 3589 // first form.
3606 EXPECT_EQ(NAME_FIRST, form_structure->field(0)->Type().GetStorableType()); 3590 EXPECT_EQ(NAME_FIRST, form_structure->field(0)->Type().GetStorableType());
3607 3591
3608 // We expect the server types to have been applied to the second form. 3592 // We expect the server types to have been applied to the second form.
3609 EXPECT_EQ(NAME_LAST, form_structure2->field(0)->Type().GetStorableType()); 3593 EXPECT_EQ(NAME_LAST, form_structure2->field(0)->Type().GetStorableType());
3610 EXPECT_EQ(NAME_MIDDLE, form_structure2->field(1)->Type().GetStorableType()); 3594 EXPECT_EQ(NAME_MIDDLE, form_structure2->field(1)->Type().GetStorableType());
3611 EXPECT_EQ(ADDRESS_HOME_ZIP, 3595 EXPECT_EQ(ADDRESS_HOME_ZIP,
3612 form_structure2->field(2)->Type().GetStorableType()); 3596 form_structure2->field(2)->Type().GetStorableType());
3613 } 3597 }
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
3922 {"(234)567-8901", PHONE_HOME_CITY_AND_NUMBER}, 3906 {"(234)567-8901", PHONE_HOME_CITY_AND_NUMBER},
3923 {"2345678901", PHONE_HOME_CITY_AND_NUMBER}, 3907 {"2345678901", PHONE_HOME_CITY_AND_NUMBER},
3924 {"1", PHONE_HOME_COUNTRY_CODE}, 3908 {"1", PHONE_HOME_COUNTRY_CODE},
3925 {"234", PHONE_HOME_CITY_CODE}, 3909 {"234", PHONE_HOME_CITY_CODE},
3926 {"5678901", PHONE_HOME_NUMBER}, 3910 {"5678901", PHONE_HOME_NUMBER},
3927 {"567", PHONE_HOME_NUMBER}, 3911 {"567", PHONE_HOME_NUMBER},
3928 {"8901", PHONE_HOME_NUMBER}, 3912 {"8901", PHONE_HOME_NUMBER},
3929 3913
3930 // Test a European profile. 3914 // Test a European profile.
3931 {"Paris", ADDRESS_HOME_CITY}, 3915 {"Paris", ADDRESS_HOME_CITY},
3932 {"ÃŽle de France", ADDRESS_HOME_STATE}, // Exact match 3916 {"ÃŽle de France", ADDRESS_HOME_STATE}, // Exact match
3933 {"Ile de France", ADDRESS_HOME_STATE}, // Missing accent. 3917 {"Ile de France", ADDRESS_HOME_STATE}, // Missing accent.
3934 {"-Ile-de-France-", ADDRESS_HOME_STATE}, // Extra punctuation. 3918 {"-Ile-de-France-", ADDRESS_HOME_STATE}, // Extra punctuation.
3935 {"île dÉ FrÃÑÇË", ADDRESS_HOME_STATE}, // Other accents & case mismatch. 3919 {"île dÉ FrÃÑÇË", ADDRESS_HOME_STATE}, // Other accents & case mismatch.
3936 {"75008", ADDRESS_HOME_ZIP}, 3920 {"75008", ADDRESS_HOME_ZIP},
3937 {"FR", ADDRESS_HOME_COUNTRY}, 3921 {"FR", ADDRESS_HOME_COUNTRY},
3938 {"France", ADDRESS_HOME_COUNTRY}, 3922 {"France", ADDRESS_HOME_COUNTRY},
3939 {"33249197070", PHONE_HOME_WHOLE_NUMBER}, 3923 {"33249197070", PHONE_HOME_WHOLE_NUMBER},
3940 {"+33 2 49 19 70 70", PHONE_HOME_WHOLE_NUMBER}, 3924 {"+33 2 49 19 70 70", PHONE_HOME_WHOLE_NUMBER},
3941 {"2 49 19 70 70", PHONE_HOME_CITY_AND_NUMBER}, 3925 {"2 49 19 70 70", PHONE_HOME_CITY_AND_NUMBER},
3942 {"249197070", PHONE_HOME_CITY_AND_NUMBER}, 3926 {"249197070", PHONE_HOME_CITY_AND_NUMBER},
3943 {"33", PHONE_HOME_COUNTRY_CODE}, 3927 {"33", PHONE_HOME_COUNTRY_CODE},
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
4519 4503
4520 // Verify whether suggestions are populated correctly for one of the middle 4504 // Verify whether suggestions are populated correctly for one of the middle
4521 // credit card number fields when filled partially. 4505 // credit card number fields when filled partially.
4522 FormFieldData number_field = form.fields[3]; 4506 FormFieldData number_field = form.fields[3];
4523 number_field.value = ASCIIToUTF16("901"); 4507 number_field.value = ASCIIToUTF16("901");
4524 4508
4525 // Get the suggestions for already filled credit card |number_field|. 4509 // Get the suggestions for already filled credit card |number_field|.
4526 GetAutofillSuggestions(form, number_field); 4510 GetAutofillSuggestions(form, number_field);
4527 4511
4528 external_delegate_->CheckSuggestions( 4512 external_delegate_->CheckSuggestions(
4529 kDefaultPageID, Suggestion("Visa" + kUTF8MidlineEllipsis + "3456", 4513 kDefaultPageID,
4530 "04/99", kVisaCard, 4514 Suggestion(std::string("Visa") + kUTF8MidlineEllipsis + "3456", "04/99",
4531 autofill_manager_->GetPackedCreditCardID(4))); 4515 kVisaCard, autofill_manager_->GetPackedCreditCardID(4)));
4532 } 4516 }
4533 4517
4534 // Test that inputs detected to be CVC inputs are forced to 4518 // Test that inputs detected to be CVC inputs are forced to
4535 // !should_autocomplete for AutocompleteHistoryManager::OnWillSubmitForm. 4519 // !should_autocomplete for AutocompleteHistoryManager::OnWillSubmitForm.
4536 TEST_F(AutofillManagerTest, DontSaveCvcInAutocompleteHistory) { 4520 TEST_F(AutofillManagerTest, DontSaveCvcInAutocompleteHistory) {
4537 FormData form_seen_by_ahm; 4521 FormData form_seen_by_ahm;
4538 MockAutocompleteHistoryManager* m = RecreateMockAutocompleteHistoryManager(); 4522 MockAutocompleteHistoryManager* m = RecreateMockAutocompleteHistoryManager();
4539 EXPECT_CALL(*m, OnWillSubmitForm(_)).WillOnce(SaveArg<0>(&form_seen_by_ahm)); 4523 EXPECT_CALL(*m, OnWillSubmitForm(_)).WillOnce(SaveArg<0>(&form_seen_by_ahm));
4540 4524
4541 FormData form; 4525 FormData form;
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
4702 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 4686 credit_card_form.fields[4].value = ASCIIToUTF16("123");
4703 4687
4704 FormSubmitted(credit_card_form); 4688 FormSubmitted(credit_card_form);
4705 4689
4706 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 4690 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4707 EXPECT_TRUE(autofill_manager_->GetLocalCreditCards().empty()); 4691 EXPECT_TRUE(autofill_manager_->GetLocalCreditCards().empty());
4708 ASSERT_EQ(1U, autofill_manager_->GetCreditCards().size()); 4692 ASSERT_EQ(1U, autofill_manager_->GetCreditCards().size());
4709 const CreditCard* const saved_card = autofill_manager_->GetCreditCards()[0]; 4693 const CreditCard* const saved_card = autofill_manager_->GetCreditCards()[0];
4710 EXPECT_EQ(CreditCard::OK, saved_card->GetServerStatus()); 4694 EXPECT_EQ(CreditCard::OK, saved_card->GetServerStatus());
4711 EXPECT_EQ(base::ASCIIToUTF16("1111"), saved_card->LastFourDigits()); 4695 EXPECT_EQ(base::ASCIIToUTF16("1111"), saved_card->LastFourDigits());
4712 EXPECT_EQ(kVisaCard, saved_card->type()); 4696 EXPECT_EQ(kVisaCard, saved_card->network());
4713 EXPECT_EQ(11, saved_card->expiration_month()); 4697 EXPECT_EQ(11, saved_card->expiration_month());
4714 EXPECT_EQ(2017, saved_card->expiration_year()); 4698 EXPECT_EQ(2017, saved_card->expiration_year());
4715 EXPECT_EQ(server_id, saved_card->server_id()); 4699 EXPECT_EQ(server_id, saved_card->server_id());
4716 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, saved_card->record_type()); 4700 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, saved_card->record_type());
4717 EXPECT_EQ(base::ASCIIToUTF16(card_number), saved_card->number()); 4701 EXPECT_EQ(base::ASCIIToUTF16(card_number), saved_card->number());
4718 } 4702 }
4719 4703
4720 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4704 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4721 #if defined(OS_ANDROID) 4705 #if defined(OS_ANDROID)
4722 #define MAYBE_UploadCreditCard_FeatureNotEnabled DISABLED_UploadCreditCard_Featu reNotEnabled 4706 #define MAYBE_UploadCreditCard_FeatureNotEnabled \
4707 DISABLED_UploadCreditCard_FeatureNotEnabled
4723 #else 4708 #else
4724 #define MAYBE_UploadCreditCard_FeatureNotEnabled UploadCreditCard_FeatureNotEnab led 4709 #define MAYBE_UploadCreditCard_FeatureNotEnabled \
4710 UploadCreditCard_FeatureNotEnabled
4725 #endif 4711 #endif
4726 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_FeatureNotEnabled) { 4712 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_FeatureNotEnabled) {
4727 personal_data_.ClearAutofillProfiles(); 4713 personal_data_.ClearAutofillProfiles();
4728 autofill_manager_->set_credit_card_upload_enabled(false); 4714 autofill_manager_->set_credit_card_upload_enabled(false);
4729 4715
4730 // Create, fill and submit an address form in order to establish a recent 4716 // Create, fill and submit an address form in order to establish a recent
4731 // profile which can be selected for the upload request. 4717 // profile which can be selected for the upload request.
4732 FormData address_form; 4718 FormData address_form;
4733 test::CreateTestAddressFormData(&address_form); 4719 test::CreateTestAddressFormData(&address_form);
4734 FormsSeen(std::vector<FormData>(1, address_form)); 4720 FormsSeen(std::vector<FormData>(1, address_form));
(...skipping 18 matching lines...) Expand all
4753 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)); 4739 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
4754 FormSubmitted(credit_card_form); 4740 FormSubmitted(credit_card_form);
4755 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); 4741 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded());
4756 4742
4757 // Verify that no histogram entry was logged called. 4743 // Verify that no histogram entry was logged called.
4758 histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionExpanded", 0); 4744 histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionExpanded", 0);
4759 } 4745 }
4760 4746
4761 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4747 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4762 #if defined(OS_ANDROID) 4748 #if defined(OS_ANDROID)
4763 #define MAYBE_UploadCreditCard_CvcUnavailable DISABLED_UploadCreditCard_CvcUnava ilable 4749 #define MAYBE_UploadCreditCard_CvcUnavailable \
4750 DISABLED_UploadCreditCard_CvcUnavailable
4764 #else 4751 #else
4765 #define MAYBE_UploadCreditCard_CvcUnavailable UploadCreditCard_CvcUnavailable 4752 #define MAYBE_UploadCreditCard_CvcUnavailable UploadCreditCard_CvcUnavailable
4766 #endif 4753 #endif
4767 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_CvcUnavailable) { 4754 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_CvcUnavailable) {
4768 EnableUkmLogging(); 4755 EnableUkmLogging();
4769 personal_data_.ClearAutofillProfiles(); 4756 personal_data_.ClearAutofillProfiles();
4770 autofill_manager_->set_credit_card_upload_enabled(true); 4757 autofill_manager_->set_credit_card_upload_enabled(true);
4771 4758
4772 // Create, fill and submit an address form in order to establish a recent 4759 // Create, fill and submit an address form in order to establish a recent
4773 // profile which can be selected for the upload request. 4760 // profile which can be selected for the upload request.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4812 std::string sample; 4799 std::string sample;
4813 rappor::RapporType type; 4800 rappor::RapporType type;
4814 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 4801 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
4815 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); 4802 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type));
4816 EXPECT_EQ("myform.com", sample); 4803 EXPECT_EQ("myform.com", sample);
4817 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 4804 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
4818 } 4805 }
4819 4806
4820 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4807 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4821 #if defined(OS_ANDROID) 4808 #if defined(OS_ANDROID)
4822 #define MAYBE_UploadCreditCard_CvcInvalidLength DISABLED_UploadCreditCard_CvcInv alidLength 4809 #define MAYBE_UploadCreditCard_CvcInvalidLength \
4810 DISABLED_UploadCreditCard_CvcInvalidLength
4823 #else 4811 #else
4824 #define MAYBE_UploadCreditCard_CvcInvalidLength UploadCreditCard_CvcInvalidLengt h 4812 #define MAYBE_UploadCreditCard_CvcInvalidLength \
4813 UploadCreditCard_CvcInvalidLength
4825 #endif 4814 #endif
4826 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_CvcInvalidLength) { 4815 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_CvcInvalidLength) {
4827 EnableUkmLogging(); 4816 EnableUkmLogging();
4828 personal_data_.ClearAutofillProfiles(); 4817 personal_data_.ClearAutofillProfiles();
4829 autofill_manager_->set_credit_card_upload_enabled(true); 4818 autofill_manager_->set_credit_card_upload_enabled(true);
4830 4819
4831 // Create, fill and submit an address form in order to establish a recent 4820 // Create, fill and submit an address form in order to establish a recent
4832 // profile which can be selected for the upload request. 4821 // profile which can be selected for the upload request.
4833 FormData address_form; 4822 FormData address_form;
4834 test::CreateTestAddressFormData(&address_form); 4823 test::CreateTestAddressFormData(&address_form);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
4868 std::string sample; 4857 std::string sample;
4869 rappor::RapporType type; 4858 rappor::RapporType type;
4870 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 4859 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
4871 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); 4860 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type));
4872 EXPECT_EQ("myform.com", sample); 4861 EXPECT_EQ("myform.com", sample);
4873 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 4862 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
4874 } 4863 }
4875 4864
4876 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4865 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4877 #if defined(OS_ANDROID) 4866 #if defined(OS_ANDROID)
4878 #define MAYBE_UploadCreditCard_MultipleCvcFields DISABLED_UploadCreditCard_Multi pleCvcFields 4867 #define MAYBE_UploadCreditCard_MultipleCvcFields \
4868 DISABLED_UploadCreditCard_MultipleCvcFields
4879 #else 4869 #else
4880 #define MAYBE_UploadCreditCard_MultipleCvcFields UploadCreditCard_MultipleCvcFie lds 4870 #define MAYBE_UploadCreditCard_MultipleCvcFields \
4871 UploadCreditCard_MultipleCvcFields
4881 #endif 4872 #endif
4882 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_MultipleCvcFields) { 4873 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_MultipleCvcFields) {
4883 EnableUkmLogging(); 4874 EnableUkmLogging();
4884 autofill_manager_->set_credit_card_upload_enabled(true); 4875 autofill_manager_->set_credit_card_upload_enabled(true);
4885 4876
4886 // Remove the profiles that were created in the TestPersonalDataManager 4877 // Remove the profiles that were created in the TestPersonalDataManager
4887 // constructor because they would result in conflicting names that would 4878 // constructor because they would result in conflicting names that would
4888 // prevent the upload. 4879 // prevent the upload.
4889 personal_data_.ClearAutofillProfiles(); 4880 personal_data_.ClearAutofillProfiles();
4890 4881
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4927 credit_card_form.fields[5].value = ASCIIToUTF16("123"); 4918 credit_card_form.fields[5].value = ASCIIToUTF16("123");
4928 4919
4929 base::HistogramTester histogram_tester; 4920 base::HistogramTester histogram_tester;
4930 4921
4931 // A CVC value appeared in one of the two CVC fields, upload should happen. 4922 // A CVC value appeared in one of the two CVC fields, upload should happen.
4932 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); 4923 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
4933 FormSubmitted(credit_card_form); 4924 FormSubmitted(credit_card_form);
4934 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 4925 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4935 4926
4936 // Verify that the correct histogram entry (and only that) was logged. 4927 // Verify that the correct histogram entry (and only that) was logged.
4937 histogram_tester.ExpectUniqueSample( 4928 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
4938 "Autofill.CardUploadDecisionExpanded", 4929 AutofillMetrics::UPLOAD_OFFERED, 1);
4939 AutofillMetrics::UPLOAD_OFFERED, 1);
4940 // Verify that the correct UKM was logged. 4930 // Verify that the correct UKM was logged.
4941 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); 4931 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
4942 } 4932 }
4943 4933
4944 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4934 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4945 #if defined(OS_ANDROID) 4935 #if defined(OS_ANDROID)
4946 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm \ 4936 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm \
4947 DISABLED_UploadCreditCard_NoCvcFieldOnForm 4937 DISABLED_UploadCreditCard_NoCvcFieldOnForm
4948 #else 4938 #else
4949 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm \ 4939 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm \
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
5075 std::string sample; 5065 std::string sample;
5076 rappor::RapporType type; 5066 rappor::RapporType type;
5077 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 5067 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
5078 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); 5068 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type));
5079 EXPECT_EQ("myform.com", sample); 5069 EXPECT_EQ("myform.com", sample);
5080 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 5070 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
5081 } 5071 }
5082 5072
5083 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5073 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5084 #if defined(OS_ANDROID) 5074 #if defined(OS_ANDROID)
5085 #define MAYBE_UploadCreditCard_NoProfileAvailable DISABLED_UploadCreditCard_NoPr ofileAvailable 5075 #define MAYBE_UploadCreditCard_NoProfileAvailable \
5076 DISABLED_UploadCreditCard_NoProfileAvailable
5086 #else 5077 #else
5087 #define MAYBE_UploadCreditCard_NoProfileAvailable UploadCreditCard_NoProfileAvai lable 5078 #define MAYBE_UploadCreditCard_NoProfileAvailable \
5079 UploadCreditCard_NoProfileAvailable
5088 #endif 5080 #endif
5089 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoProfileAvailable) { 5081 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoProfileAvailable) {
5090 EnableUkmLogging(); 5082 EnableUkmLogging();
5091 personal_data_.ClearAutofillProfiles(); 5083 personal_data_.ClearAutofillProfiles();
5092 autofill_manager_->set_credit_card_upload_enabled(true); 5084 autofill_manager_->set_credit_card_upload_enabled(true);
5093 5085
5094 // Don't fill or submit an address form. 5086 // Don't fill or submit an address form.
5095 5087
5096 // Set up our credit card form data. 5088 // Set up our credit card form data.
5097 FormData credit_card_form; 5089 FormData credit_card_form;
(...skipping 27 matching lines...) Expand all
5125 std::string sample; 5117 std::string sample;
5126 rappor::RapporType type; 5118 rappor::RapporType type;
5127 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 5119 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
5128 "Autofill.CardUploadNotOfferedNoAddress", &sample, &type)); 5120 "Autofill.CardUploadNotOfferedNoAddress", &sample, &type));
5129 EXPECT_EQ("myform.com", sample); 5121 EXPECT_EQ("myform.com", sample);
5130 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 5122 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
5131 } 5123 }
5132 5124
5133 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5125 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5134 #if defined(OS_ANDROID) 5126 #if defined(OS_ANDROID)
5135 #define MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable DISABLED_Uplo adCreditCard_CvcUnavailableAndNoProfileAvailable 5127 #define MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable \
5128 DISABLED_UploadCreditCard_CvcUnavailableAndNoProfileAvailable
5136 #else 5129 #else
5137 #define MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable UploadCreditC ard_CvcUnavailableAndNoProfileAvailable 5130 #define MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable \
5131 UploadCreditCard_CvcUnavailableAndNoProfileAvailable
5138 #endif 5132 #endif
5139 TEST_F(AutofillManagerTest, 5133 TEST_F(AutofillManagerTest,
5140 MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable) { 5134 MAYBE_UploadCreditCard_CvcUnavailableAndNoProfileAvailable) {
5141 EnableUkmLogging(); 5135 EnableUkmLogging();
5142 personal_data_.ClearAutofillProfiles(); 5136 personal_data_.ClearAutofillProfiles();
5143 autofill_manager_->set_credit_card_upload_enabled(true); 5137 autofill_manager_->set_credit_card_upload_enabled(true);
5144 5138
5145 // Don't fill or submit an address form. 5139 // Don't fill or submit an address form.
5146 5140
5147 // Set up our credit card form data. 5141 // Set up our credit card form data.
(...skipping 30 matching lines...) Expand all
5178 std::string sample; 5172 std::string sample;
5179 rappor::RapporType type; 5173 rappor::RapporType type;
5180 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 5174 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
5181 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); 5175 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type));
5182 EXPECT_EQ("myform.com", sample); 5176 EXPECT_EQ("myform.com", sample);
5183 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 5177 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
5184 } 5178 }
5185 5179
5186 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5180 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5187 #if defined(OS_ANDROID) 5181 #if defined(OS_ANDROID)
5188 #define MAYBE_UploadCreditCard_NoNameAvailable DISABLED_UploadCreditCard_NoNameA vailable 5182 #define MAYBE_UploadCreditCard_NoNameAvailable \
5183 DISABLED_UploadCreditCard_NoNameAvailable
5189 #else 5184 #else
5190 #define MAYBE_UploadCreditCard_NoNameAvailable UploadCreditCard_NoNameAvailable 5185 #define MAYBE_UploadCreditCard_NoNameAvailable UploadCreditCard_NoNameAvailable
5191 #endif 5186 #endif
5192 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoNameAvailable) { 5187 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoNameAvailable) {
5193 EnableUkmLogging(); 5188 EnableUkmLogging();
5194 personal_data_.ClearAutofillProfiles(); 5189 personal_data_.ClearAutofillProfiles();
5195 autofill_manager_->set_credit_card_upload_enabled(true); 5190 autofill_manager_->set_credit_card_upload_enabled(true);
5196 5191
5197 // Create, fill and submit an address form in order to establish a recent 5192 // Create, fill and submit an address form in order to establish a recent
5198 // profile which can be selected for the upload request. 5193 // profile which can be selected for the upload request.
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
5234 std::string sample; 5229 std::string sample;
5235 rappor::RapporType type; 5230 rappor::RapporType type;
5236 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 5231 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
5237 "Autofill.CardUploadNotOfferedNoName", &sample, &type)); 5232 "Autofill.CardUploadNotOfferedNoName", &sample, &type));
5238 EXPECT_EQ("myform.com", sample); 5233 EXPECT_EQ("myform.com", sample);
5239 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 5234 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
5240 } 5235 }
5241 5236
5242 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5237 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5243 #if defined(OS_ANDROID) 5238 #if defined(OS_ANDROID)
5244 #define MAYBE_UploadCreditCard_ZipCodesConflict DISABLED_UploadCreditCard_ZipCod esConflict 5239 #define MAYBE_UploadCreditCard_ZipCodesConflict \
5240 DISABLED_UploadCreditCard_ZipCodesConflict
5245 #else 5241 #else
5246 #define MAYBE_UploadCreditCard_ZipCodesConflict UploadCreditCard_ZipCodesConflic t 5242 #define MAYBE_UploadCreditCard_ZipCodesConflict \
5243 UploadCreditCard_ZipCodesConflict
5247 #endif 5244 #endif
5248 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_ZipCodesConflict) { 5245 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_ZipCodesConflict) {
5249 EnableUkmLogging(); 5246 EnableUkmLogging();
5250 personal_data_.ClearAutofillProfiles(); 5247 personal_data_.ClearAutofillProfiles();
5251 autofill_manager_->set_credit_card_upload_enabled(true); 5248 autofill_manager_->set_credit_card_upload_enabled(true);
5252 5249
5253 // Create, fill and submit two address forms with different zip codes. 5250 // Create, fill and submit two address forms with different zip codes.
5254 FormData address_form1, address_form2; 5251 FormData address_form1, address_form2;
5255 test::CreateTestAddressFormData(&address_form1); 5252 test::CreateTestAddressFormData(&address_form1);
5256 test::CreateTestAddressFormData(&address_form2); 5253 test::CreateTestAddressFormData(&address_form2);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
5291 histogram_tester.ExpectUniqueSample( 5288 histogram_tester.ExpectUniqueSample(
5292 "Autofill.CardUploadDecisionExpanded", 5289 "Autofill.CardUploadDecisionExpanded",
5293 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS, 1); 5290 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS, 1);
5294 // Verify that the correct UKM was logged. 5291 // Verify that the correct UKM was logged.
5295 ExpectCardUploadDecisionUkm( 5292 ExpectCardUploadDecisionUkm(
5296 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); 5293 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS);
5297 } 5294 }
5298 5295
5299 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5296 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5300 #if defined(OS_ANDROID) 5297 #if defined(OS_ANDROID)
5301 #define MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch DISABLED_UploadCreditCard _ZipCodesHavePrefixMatch 5298 #define MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch \
5299 DISABLED_UploadCreditCard_ZipCodesHavePrefixMatch
5302 #else 5300 #else
5303 #define MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch UploadCreditCard_ZipCodes HavePrefixMatch 5301 #define MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch \
5302 UploadCreditCard_ZipCodesHavePrefixMatch
5304 #endif 5303 #endif
5305 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch) { 5304 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_ZipCodesHavePrefixMatch) {
5306 EnableUkmLogging(); 5305 EnableUkmLogging();
5307 personal_data_.ClearAutofillProfiles(); 5306 personal_data_.ClearAutofillProfiles();
5308 autofill_manager_->set_credit_card_upload_enabled(true); 5307 autofill_manager_->set_credit_card_upload_enabled(true);
5309 5308
5310 // Create, fill and submit two address forms with different zip codes. 5309 // Create, fill and submit two address forms with different zip codes.
5311 FormData address_form1, address_form2; 5310 FormData address_form1, address_form2;
5312 test::CreateTestAddressFormData(&address_form1); 5311 test::CreateTestAddressFormData(&address_form1);
5313 test::CreateTestAddressFormData(&address_form2); 5312 test::CreateTestAddressFormData(&address_form2);
(...skipping 22 matching lines...) Expand all
5336 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 5335 credit_card_form.fields[4].value = ASCIIToUTF16("123");
5337 5336
5338 base::HistogramTester histogram_tester; 5337 base::HistogramTester histogram_tester;
5339 5338
5340 // One zip is a prefix of the other, upload should happen. 5339 // One zip is a prefix of the other, upload should happen.
5341 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); 5340 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
5342 FormSubmitted(credit_card_form); 5341 FormSubmitted(credit_card_form);
5343 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 5342 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
5344 5343
5345 // Verify that the correct histogram entry (and only that) was logged. 5344 // Verify that the correct histogram entry (and only that) was logged.
5346 histogram_tester.ExpectUniqueSample( 5345 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
5347 "Autofill.CardUploadDecisionExpanded", 5346 AutofillMetrics::UPLOAD_OFFERED, 1);
5348 AutofillMetrics::UPLOAD_OFFERED, 1);
5349 // Verify that the correct UKM was logged. 5347 // Verify that the correct UKM was logged.
5350 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); 5348 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
5351 } 5349 }
5352 5350
5353 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5351 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5354 #if defined(OS_ANDROID) 5352 #if defined(OS_ANDROID)
5355 #define MAYBE_UploadCreditCard_NoZipCodeAvailable DISABLED_UploadCreditCard_NoZi pCodeAvailable 5353 #define MAYBE_UploadCreditCard_NoZipCodeAvailable \
5354 DISABLED_UploadCreditCard_NoZipCodeAvailable
5356 #else 5355 #else
5357 #define MAYBE_UploadCreditCard_NoZipCodeAvailable UploadCreditCard_NoZipCodeAvai lable 5356 #define MAYBE_UploadCreditCard_NoZipCodeAvailable \
5357 UploadCreditCard_NoZipCodeAvailable
5358 #endif 5358 #endif
5359 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoZipCodeAvailable) { 5359 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NoZipCodeAvailable) {
5360 EnableUkmLogging(); 5360 EnableUkmLogging();
5361 personal_data_.ClearAutofillProfiles(); 5361 personal_data_.ClearAutofillProfiles();
5362 autofill_manager_->set_credit_card_upload_enabled(true); 5362 autofill_manager_->set_credit_card_upload_enabled(true);
5363 5363
5364 // Create, fill and submit an address form in order to establish a recent 5364 // Create, fill and submit an address form in order to establish a recent
5365 // profile which can be selected for the upload request. 5365 // profile which can be selected for the upload request.
5366 FormData address_form; 5366 FormData address_form;
5367 test::CreateTestAddressFormData(&address_form); 5367 test::CreateTestAddressFormData(&address_form);
(...skipping 30 matching lines...) Expand all
5398 // Verify that the correct histogram entry (and only that) was logged. 5398 // Verify that the correct histogram entry (and only that) was logged.
5399 histogram_tester.ExpectUniqueSample( 5399 histogram_tester.ExpectUniqueSample(
5400 "Autofill.CardUploadDecisionExpanded", 5400 "Autofill.CardUploadDecisionExpanded",
5401 AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE, 1); 5401 AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE, 1);
5402 // Verify that the correct UKM was logged. 5402 // Verify that the correct UKM was logged.
5403 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); 5403 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE);
5404 } 5404 }
5405 5405
5406 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5406 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5407 #if defined(OS_ANDROID) 5407 #if defined(OS_ANDROID)
5408 #define MAYBE_UploadCreditCard_NamesMatchLoosely DISABLED_UploadCreditCard_Names MatchLoosely 5408 #define MAYBE_UploadCreditCard_NamesMatchLoosely \
5409 DISABLED_UploadCreditCard_NamesMatchLoosely
5409 #else 5410 #else
5410 #define MAYBE_UploadCreditCard_NamesMatchLoosely UploadCreditCard_NamesMatchLoos ely 5411 #define MAYBE_UploadCreditCard_NamesMatchLoosely \
5412 UploadCreditCard_NamesMatchLoosely
5411 #endif 5413 #endif
5412 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NamesMatchLoosely) { 5414 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NamesMatchLoosely) {
5413 EnableUkmLogging(); 5415 EnableUkmLogging();
5414 personal_data_.ClearAutofillProfiles(); 5416 personal_data_.ClearAutofillProfiles();
5415 autofill_manager_->set_credit_card_upload_enabled(true); 5417 autofill_manager_->set_credit_card_upload_enabled(true);
5416 5418
5417 // Create, fill and submit two address forms with different names. 5419 // Create, fill and submit two address forms with different names.
5418 FormData address_form1, address_form2; 5420 FormData address_form1, address_form2;
5419 test::CreateTestAddressFormData(&address_form1); 5421 test::CreateTestAddressFormData(&address_form1);
5420 test::CreateTestAddressFormData(&address_form2); 5422 test::CreateTestAddressFormData(&address_form2);
(...skipping 25 matching lines...) Expand all
5446 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 5448 credit_card_form.fields[4].value = ASCIIToUTF16("123");
5447 5449
5448 base::HistogramTester histogram_tester; 5450 base::HistogramTester histogram_tester;
5449 5451
5450 // Names match loosely, upload should happen. 5452 // Names match loosely, upload should happen.
5451 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); 5453 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
5452 FormSubmitted(credit_card_form); 5454 FormSubmitted(credit_card_form);
5453 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 5455 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
5454 5456
5455 // Verify that the correct histogram entry (and only that) was logged. 5457 // Verify that the correct histogram entry (and only that) was logged.
5456 histogram_tester.ExpectUniqueSample( 5458 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
5457 "Autofill.CardUploadDecisionExpanded", 5459 AutofillMetrics::UPLOAD_OFFERED, 1);
5458 AutofillMetrics::UPLOAD_OFFERED, 1);
5459 // Verify that the correct UKM was logged. 5460 // Verify that the correct UKM was logged.
5460 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); 5461 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
5461 } 5462 }
5462 5463
5463 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5464 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5464 #if defined(OS_ANDROID) 5465 #if defined(OS_ANDROID)
5465 #define MAYBE_UploadCreditCard_NamesHaveToMatch DISABLED_UploadCreditCard_NamesH aveToMatch 5466 #define MAYBE_UploadCreditCard_NamesHaveToMatch \
5467 DISABLED_UploadCreditCard_NamesHaveToMatch
5466 #else 5468 #else
5467 #define MAYBE_UploadCreditCard_NamesHaveToMatch UploadCreditCard_NamesHaveToMatc h 5469 #define MAYBE_UploadCreditCard_NamesHaveToMatch \
5470 UploadCreditCard_NamesHaveToMatch
5468 #endif 5471 #endif
5469 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NamesHaveToMatch) { 5472 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_NamesHaveToMatch) {
5470 EnableUkmLogging(); 5473 EnableUkmLogging();
5471 personal_data_.ClearAutofillProfiles(); 5474 personal_data_.ClearAutofillProfiles();
5472 autofill_manager_->set_credit_card_upload_enabled(true); 5475 autofill_manager_->set_credit_card_upload_enabled(true);
5473 5476
5474 // Create, fill and submit two address forms with different names. 5477 // Create, fill and submit two address forms with different names.
5475 FormData address_form1, address_form2; 5478 FormData address_form1, address_form2;
5476 test::CreateTestAddressFormData(&address_form1); 5479 test::CreateTestAddressFormData(&address_form1);
5477 test::CreateTestAddressFormData(&address_form2); 5480 test::CreateTestAddressFormData(&address_form2);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
5520 std::string sample; 5523 std::string sample;
5521 rappor::RapporType type; 5524 rappor::RapporType type;
5522 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( 5525 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric(
5523 "Autofill.CardUploadNotOfferedConflictingNames", &sample, &type)); 5526 "Autofill.CardUploadNotOfferedConflictingNames", &sample, &type));
5524 EXPECT_EQ("myform.com", sample); 5527 EXPECT_EQ("myform.com", sample);
5525 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); 5528 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type);
5526 } 5529 }
5527 5530
5528 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 5531 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5529 #if defined(OS_ANDROID) 5532 #if defined(OS_ANDROID)
5530 #define MAYBE_UploadCreditCard_UploadDetailsFails DISABLED_UploadCreditCard_Uplo adDetailsFails 5533 #define MAYBE_UploadCreditCard_UploadDetailsFails \
5534 DISABLED_UploadCreditCard_UploadDetailsFails
5531 #else 5535 #else
5532 #define MAYBE_UploadCreditCard_UploadDetailsFails UploadCreditCard_UploadDetails Fails 5536 #define MAYBE_UploadCreditCard_UploadDetailsFails \
5537 UploadCreditCard_UploadDetailsFails
5533 #endif 5538 #endif
5534 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_UploadDetailsFails) { 5539 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_UploadDetailsFails) {
5535 EnableUkmLogging(); 5540 EnableUkmLogging();
5536 personal_data_.ClearAutofillProfiles(); 5541 personal_data_.ClearAutofillProfiles();
5537 autofill_manager_->set_credit_card_upload_enabled(true); 5542 autofill_manager_->set_credit_card_upload_enabled(true);
5538 5543
5539 // Anything other than "en-US" will cause GetUploadDetails to return a failure 5544 // Anything other than "en-US" will cause GetUploadDetails to return a failure
5540 // response. 5545 // response.
5541 autofill_manager_->set_app_locale("pt-BR"); 5546 autofill_manager_->set_app_locale("pt-BR");
5542 5547
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
5652 std::vector<FormData> forms(1, form); 5657 std::vector<FormData> forms(1, form);
5653 FormsSeen(forms); 5658 FormsSeen(forms);
5654 5659
5655 FormFieldData field; 5660 FormFieldData field;
5656 test::CreateTestFormField("Name on Card", "nameoncard", "pres", "text", 5661 test::CreateTestFormField("Name on Card", "nameoncard", "pres", "text",
5657 &field); 5662 &field);
5658 GetAutofillSuggestions(form, field); 5663 GetAutofillSuggestions(form, field);
5659 5664
5660 #if defined(OS_ANDROID) 5665 #if defined(OS_ANDROID)
5661 static const std::string kVisaSuggestion = 5666 static const std::string kVisaSuggestion =
5662 "Visa" + kUTF8MidlineEllipsis + "3456"; 5667 std::string("Visa") + kUTF8MidlineEllipsis + "3456";
5663 #else 5668 #else
5664 static const std::string kVisaSuggestion = "*3456"; 5669 static const std::string kVisaSuggestion = "*3456";
5665 #endif 5670 #endif
5666 5671
5667 external_delegate_->CheckSuggestions( 5672 external_delegate_->CheckSuggestions(
5668 kDefaultPageID, Suggestion("Elvis Presley", kVisaSuggestion, kVisaCard, 5673 kDefaultPageID, Suggestion("Elvis Presley", kVisaSuggestion, kVisaCard,
5669 autofill_manager_->GetPackedCreditCardID(4))); 5674 autofill_manager_->GetPackedCreditCardID(4)));
5670 } 5675 }
5671 5676
5672 // Verify that typing "lvis" will not match any of the credit card name when 5677 // Verify that typing "lvis" will not match any of the credit card name when
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
6185 6190
6186 // Wait for upload to complete (will check expected types as well). 6191 // Wait for upload to complete (will check expected types as well).
6187 autofill_manager_->WaitForAsyncUploadProcess(); 6192 autofill_manager_->WaitForAsyncUploadProcess();
6188 6193
6189 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); 6194 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature());
6190 EXPECT_NE(uploaded_available_types.end(), 6195 EXPECT_NE(uploaded_available_types.end(),
6191 uploaded_available_types.find(autofill::PASSWORD)); 6196 uploaded_available_types.find(autofill::PASSWORD));
6192 } 6197 }
6193 6198
6194 } // namespace autofill 6199 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | components/autofill/core/browser/autofill_metrics_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698