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

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

Issue 2829853008: Stores server card as a full server card when upload to server succeeds. (Closed)
Patch Set: Renames AddServerCreditCard to AddFullServerCreditCard. Adds DCHECK to verify that we are in a tran… Created 3 years, 8 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #include "components/metrics/proto/ukm/entry.pb.h" 53 #include "components/metrics/proto/ukm/entry.pb.h"
54 #include "components/prefs/pref_service.h" 54 #include "components/prefs/pref_service.h"
55 #include "components/rappor/test_rappor_service.h" 55 #include "components/rappor/test_rappor_service.h"
56 #include "components/security_state/core/security_state.h" 56 #include "components/security_state/core/security_state.h"
57 #include "components/strings/grit/components_strings.h" 57 #include "components/strings/grit/components_strings.h"
58 #include "components/ukm/test_ukm_service.h" 58 #include "components/ukm/test_ukm_service.h"
59 #include "components/ukm/ukm_entry.h" 59 #include "components/ukm/ukm_entry.h"
60 #include "components/ukm/ukm_source.h" 60 #include "components/ukm/ukm_source.h"
61 #include "components/variations/variations_associated_data.h" 61 #include "components/variations/variations_associated_data.h"
62 #include "net/base/url_util.h" 62 #include "net/base/url_util.h"
63 #include "net/url_request/url_request_context_getter.h"
63 #include "net/url_request/url_request_test_util.h" 64 #include "net/url_request/url_request_test_util.h"
64 #include "testing/gmock/include/gmock/gmock.h" 65 #include "testing/gmock/include/gmock/gmock.h"
65 #include "testing/gtest/include/gtest/gtest.h" 66 #include "testing/gtest/include/gtest/gtest.h"
66 #include "ui/base/l10n/l10n_util.h" 67 #include "ui/base/l10n/l10n_util.h"
67 #include "ui/gfx/geometry/rect.h" 68 #include "ui/gfx/geometry/rect.h"
68 #include "url/gurl.h" 69 #include "url/gurl.h"
69 70
70 using base::ASCIIToUTF16; 71 using base::ASCIIToUTF16;
71 using base::UTF8ToUTF16; 72 using base::UTF8ToUTF16;
72 using testing::_; 73 using testing::_;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 const std::string& app_locale) override { 115 const std::string& app_locale) override {
115 delegate_->OnDidGetUploadDetails( 116 delegate_->OnDidGetUploadDetails(
116 app_locale == "en-US" ? AutofillClient::SUCCESS 117 app_locale == "en-US" ? AutofillClient::SUCCESS
117 : AutofillClient::PERMANENT_FAILURE, 118 : AutofillClient::PERMANENT_FAILURE,
118 ASCIIToUTF16("this is a context token"), 119 ASCIIToUTF16("this is a context token"),
119 std::unique_ptr<base::DictionaryValue>(nullptr)); 120 std::unique_ptr<base::DictionaryValue>(nullptr));
120 } 121 }
121 122
122 void UploadCard(const payments::PaymentsClient::UploadRequestDetails& 123 void UploadCard(const payments::PaymentsClient::UploadRequestDetails&
123 request_details) override { 124 request_details) override {
124 delegate_->OnDidUploadCard(AutofillClient::SUCCESS); 125 delegate_->OnDidUploadCard(AutofillClient::SUCCESS, server_id_);
125 } 126 }
126 127
128 std::string server_id_;
129
127 private: 130 private:
128 payments::PaymentsClientDelegate* const delegate_; 131 payments::PaymentsClientDelegate* const delegate_;
129 132
130 DISALLOW_COPY_AND_ASSIGN(TestPaymentsClient); 133 DISALLOW_COPY_AND_ASSIGN(TestPaymentsClient);
131 }; 134 };
132 135
133 class TestPersonalDataManager : public PersonalDataManager { 136 class TestPersonalDataManager : public PersonalDataManager {
134 public: 137 public:
135 TestPersonalDataManager() 138 TestPersonalDataManager()
136 : PersonalDataManager("en-US"), 139 : PersonalDataManager("en-US"),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 web_profiles_.push_back(std::move(profile)); 176 web_profiles_.push_back(std::move(profile));
174 } 177 }
175 178
176 void AddCreditCard(const CreditCard& credit_card) override { 179 void AddCreditCard(const CreditCard& credit_card) override {
177 std::unique_ptr<CreditCard> local_credit_card = 180 std::unique_ptr<CreditCard> local_credit_card =
178 base::MakeUnique<CreditCard>(credit_card); 181 base::MakeUnique<CreditCard>(credit_card);
179 local_credit_card->set_modification_date(base::Time::Now()); 182 local_credit_card->set_modification_date(base::Time::Now());
180 local_credit_cards_.push_back(std::move(local_credit_card)); 183 local_credit_cards_.push_back(std::move(local_credit_card));
181 } 184 }
182 185
186 void AddFullServerCreditCard(const CreditCard& credit_card) override {
187 std::unique_ptr<CreditCard> server_credit_card =
188 base::MakeUnique<CreditCard>(credit_card);
189 server_credit_card->set_modification_date(base::Time::Now());
190 server_credit_cards_.push_back(std::move(server_credit_card));
191 }
192
183 void RecordUseOf(const AutofillDataModel& data_model) override { 193 void RecordUseOf(const AutofillDataModel& data_model) override {
184 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str()); 194 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str());
185 if (credit_card) 195 if (credit_card)
186 credit_card->RecordAndLogUse(); 196 credit_card->RecordAndLogUse();
187 197
188 AutofillProfile* profile = GetProfileWithGUID(data_model.guid().c_str()); 198 AutofillProfile* profile = GetProfileWithGUID(data_model.guid().c_str());
189 if (profile) 199 if (profile)
190 profile->RecordAndLogUse(); 200 profile->RecordAndLogUse();
191 } 201 }
192 202
(...skipping 16 matching lines...) Expand all
209 })); 219 }));
210 } 220 }
211 } 221 }
212 222
213 void ClearAutofillProfiles() { 223 void ClearAutofillProfiles() {
214 web_profiles_.clear(); 224 web_profiles_.clear();
215 } 225 }
216 226
217 void ClearCreditCards() { 227 void ClearCreditCards() {
218 local_credit_cards_.clear(); 228 local_credit_cards_.clear();
229 server_credit_cards_.clear();
219 } 230 }
220 231
221 // Create Elvis card with whitespace in the credit card number. 232 // Create Elvis card with whitespace in the credit card number.
222 void CreateTestCreditCardWithWhitespace() { 233 void CreateTestCreditCardWithWhitespace() {
223 ClearCreditCards(); 234 ClearCreditCards();
224 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>(); 235 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>();
225 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley", 236 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley",
226 "4234 5678 9012 3456", // Visa 237 "4234 5678 9012 3456", // Visa
227 "04", "2999"); 238 "04", "2999");
228 credit_card->set_guid("00000000-0000-0000-0000-000000000008"); 239 credit_card->set_guid("00000000-0000-0000-0000-000000000008");
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver); 546 DISALLOW_COPY_AND_ASSIGN(MockAutofillDriver);
536 }; 547 };
537 548
538 class TestAutofillManager : public AutofillManager { 549 class TestAutofillManager : public AutofillManager {
539 public: 550 public:
540 TestAutofillManager(AutofillDriver* driver, 551 TestAutofillManager(AutofillDriver* driver,
541 AutofillClient* client, 552 AutofillClient* client,
542 TestPersonalDataManager* personal_data) 553 TestPersonalDataManager* personal_data)
543 : AutofillManager(driver, client, personal_data), 554 : AutofillManager(driver, client, personal_data),
544 personal_data_(personal_data), 555 personal_data_(personal_data),
556 context_getter_(driver->GetURLRequestContext()),
545 autofill_enabled_(true), 557 autofill_enabled_(true),
546 credit_card_upload_enabled_(false), 558 credit_card_upload_enabled_(false),
547 credit_card_was_uploaded_(false), 559 credit_card_was_uploaded_(false),
548 expected_observed_submission_(true), 560 expected_observed_submission_(true),
549 call_parent_upload_form_data_(false) { 561 call_parent_upload_form_data_(false) {
550 set_payments_client( 562 set_payments_client(new TestPaymentsClient(context_getter_, this));
551 new TestPaymentsClient(driver->GetURLRequestContext(), this));
552 } 563 }
553 ~TestAutofillManager() override {} 564 ~TestAutofillManager() override {}
554 565
555 bool IsAutofillEnabled() const override { return autofill_enabled_; } 566 bool IsAutofillEnabled() const override { return autofill_enabled_; }
556 567
557 void set_autofill_enabled(bool autofill_enabled) { 568 void set_autofill_enabled(bool autofill_enabled) {
558 autofill_enabled_ = autofill_enabled; 569 autofill_enabled_ = autofill_enabled;
559 } 570 }
560 571
561 bool IsCreditCardUploadEnabled() override { 572 bool IsCreditCardUploadEnabled() override {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 } 648 }
638 649
639 AutofillProfile* GetProfileWithGUID(const char* guid) { 650 AutofillProfile* GetProfileWithGUID(const char* guid) {
640 return personal_data_->GetProfileWithGUID(guid); 651 return personal_data_->GetProfileWithGUID(guid);
641 } 652 }
642 653
643 CreditCard* GetCreditCardWithGUID(const char* guid) { 654 CreditCard* GetCreditCardWithGUID(const char* guid) {
644 return personal_data_->GetCreditCardWithGUID(guid); 655 return personal_data_->GetCreditCardWithGUID(guid);
645 } 656 }
646 657
658 std::vector<CreditCard*> GetLocalCreditCards() const {
659 return personal_data_->GetLocalCreditCards();
660 }
661
662 const std::vector<CreditCard*>& GetCreditCards() const {
663 return personal_data_->GetCreditCards();
664 }
665
647 void AddProfile(std::unique_ptr<AutofillProfile> profile) { 666 void AddProfile(std::unique_ptr<AutofillProfile> profile) {
648 personal_data_->AddProfile(std::move(profile)); 667 personal_data_->AddProfile(std::move(profile));
649 } 668 }
650 669
651 void AddCreditCard(const CreditCard& credit_card) { 670 void AddCreditCard(const CreditCard& credit_card) {
652 personal_data_->AddCreditCard(credit_card); 671 personal_data_->AddCreditCard(credit_card);
653 } 672 }
654 673
655 int GetPackedCreditCardID(int credit_card_id) { 674 int GetPackedCreditCardID(int credit_card_id) {
656 std::string credit_card_guid = 675 std::string credit_card_guid =
657 base::StringPrintf("00000000-0000-0000-0000-%012d", credit_card_id); 676 base::StringPrintf("00000000-0000-0000-0000-%012d", credit_card_id);
658 677
659 return MakeFrontendID(credit_card_guid, std::string()); 678 return MakeFrontendID(credit_card_guid, std::string());
660 } 679 }
661 680
662 void AddSeenForm(std::unique_ptr<FormStructure> form) { 681 void AddSeenForm(std::unique_ptr<FormStructure> form) {
663 form_structures()->push_back(std::move(form)); 682 form_structures()->push_back(std::move(form));
664 } 683 }
665 684
666 void ClearFormStructures() { 685 void ClearFormStructures() {
667 form_structures()->clear(); 686 form_structures()->clear();
668 } 687 }
669 688
689 void ResetPaymentsClientForCardUpload(const char* server_id) {
690 TestPaymentsClient* payments_client =
691 new TestPaymentsClient(context_getter_, this);
692 payments_client->server_id_ = server_id;
693 set_payments_client(payments_client);
694 }
695
670 private: 696 private:
671 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result) override { 697 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result,
698 const std::string& server_id) override {
672 credit_card_was_uploaded_ = true; 699 credit_card_was_uploaded_ = true;
700 AutofillManager::OnDidUploadCard(result, server_id);
673 }; 701 };
674 702
675 // Weak reference. 703 TestPersonalDataManager* personal_data_; // Weak reference.
676 TestPersonalDataManager* personal_data_; 704 net::URLRequestContextGetter* context_getter_; // Weak reference.
677
678 bool autofill_enabled_; 705 bool autofill_enabled_;
679 bool credit_card_upload_enabled_; 706 bool credit_card_upload_enabled_;
680 bool credit_card_was_uploaded_; 707 bool credit_card_was_uploaded_;
681 bool expected_observed_submission_; 708 bool expected_observed_submission_;
682 bool call_parent_upload_form_data_; 709 bool call_parent_upload_form_data_;
683 710
684 std::unique_ptr<base::RunLoop> run_loop_; 711 std::unique_ptr<base::RunLoop> run_loop_;
685 712
686 std::string submitted_form_signature_; 713 std::string submitted_form_signature_;
687 std::vector<ServerFieldTypeSet> expected_submitted_field_types_; 714 std::vector<ServerFieldTypeSet> expected_submitted_field_types_;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 EXPECT_EQ(expected_suggestions[i].label, suggestions_[i].label); 755 EXPECT_EQ(expected_suggestions[i].label, suggestions_[i].label);
729 EXPECT_EQ(expected_suggestions[i].icon, suggestions_[i].icon); 756 EXPECT_EQ(expected_suggestions[i].icon, suggestions_[i].icon);
730 EXPECT_EQ(expected_suggestions[i].frontend_id, 757 EXPECT_EQ(expected_suggestions[i].frontend_id,
731 suggestions_[i].frontend_id); 758 suggestions_[i].frontend_id);
732 } 759 }
733 ASSERT_EQ(expected_num_suggestions, suggestions_.size()); 760 ASSERT_EQ(expected_num_suggestions, suggestions_.size());
734 } 761 }
735 762
736 // Wrappers around the above GetSuggestions call that take a hardcoded number 763 // Wrappers around the above GetSuggestions call that take a hardcoded number
737 // of expected results so callsites are cleaner. 764 // of expected results so callsites are cleaner.
738 void CheckSuggestions(int expected_page_id, 765 void CheckSuggestions(int expected_page_id, const Suggestion& suggestion0) {
739 const Suggestion& suggestion0) {
740 std::vector<Suggestion> suggestion_vector; 766 std::vector<Suggestion> suggestion_vector;
741 suggestion_vector.push_back(suggestion0); 767 suggestion_vector.push_back(suggestion0);
742 CheckSuggestions(expected_page_id, 1, &suggestion_vector[0]); 768 CheckSuggestions(expected_page_id, 1, &suggestion_vector[0]);
743 } 769 }
744 void CheckSuggestions(int expected_page_id, 770 void CheckSuggestions(int expected_page_id,
745 const Suggestion& suggestion0, 771 const Suggestion& suggestion0,
746 const Suggestion& suggestion1) { 772 const Suggestion& suggestion1) {
747 std::vector<Suggestion> suggestion_vector; 773 std::vector<Suggestion> suggestion_vector;
748 suggestion_vector.push_back(suggestion0); 774 suggestion_vector.push_back(suggestion0);
749 suggestion_vector.push_back(suggestion1); 775 suggestion_vector.push_back(suggestion1);
(...skipping 18 matching lines...) Expand all
768 // and contain a specific number of suggestions. 794 // and contain a specific number of suggestions.
769 void CheckSuggestionCount(int expected_page_id, 795 void CheckSuggestionCount(int expected_page_id,
770 size_t expected_num_suggestions) { 796 size_t expected_num_suggestions) {
771 // Ensure that these results are from the most recent query. 797 // Ensure that these results are from the most recent query.
772 EXPECT_TRUE(on_suggestions_returned_seen_); 798 EXPECT_TRUE(on_suggestions_returned_seen_);
773 799
774 EXPECT_EQ(expected_page_id, query_id_); 800 EXPECT_EQ(expected_page_id, query_id_);
775 ASSERT_EQ(expected_num_suggestions, suggestions_.size()); 801 ASSERT_EQ(expected_num_suggestions, suggestions_.size());
776 } 802 }
777 803
778 bool on_query_seen() const { 804 bool on_query_seen() const { return on_query_seen_; }
779 return on_query_seen_;
780 }
781 805
782 bool on_suggestions_returned_seen() const { 806 bool on_suggestions_returned_seen() const {
783 return on_suggestions_returned_seen_; 807 return on_suggestions_returned_seen_;
784 } 808 }
785 809
786 private: 810 private:
787 // Records if OnQuery has been called yet. 811 // Records if OnQuery has been called yet.
788 bool on_query_seen_; 812 bool on_query_seen_;
789 813
790 // Records if OnSuggestionsReturned has been called after the most recent 814 // Records if OnSuggestionsReturned has been called after the most recent
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 void TearDown() override { 876 void TearDown() override {
853 // Order of destruction is important as AutofillManager relies on 877 // Order of destruction is important as AutofillManager relies on
854 // PersonalDataManager to be around when it gets destroyed. 878 // PersonalDataManager to be around when it gets destroyed.
855 autofill_manager_.reset(); 879 autofill_manager_.reset();
856 autofill_driver_.reset(); 880 autofill_driver_.reset();
857 881
858 // Remove the AutofillWebDataService so TestPersonalDataManager does not 882 // Remove the AutofillWebDataService so TestPersonalDataManager does not
859 // need to care about removing self as an observer in destruction. 883 // need to care about removing self as an observer in destruction.
860 personal_data_.set_database(scoped_refptr<AutofillWebDataService>(NULL)); 884 personal_data_.set_database(scoped_refptr<AutofillWebDataService>(NULL));
861 personal_data_.SetPrefService(NULL); 885 personal_data_.SetPrefService(NULL);
886 personal_data_.ClearCreditCards();
862 887
863 request_context_ = nullptr; 888 request_context_ = nullptr;
864 } 889 }
865 890
866 void GetAutofillSuggestions(int query_id, 891 void GetAutofillSuggestions(int query_id,
867 const FormData& form, 892 const FormData& form,
868 const FormFieldData& field) { 893 const FormFieldData& field) {
869 autofill_manager_->OnQueryFormFieldAutofill(query_id, form, field, 894 autofill_manager_->OnQueryFormFieldAutofill(query_id, form, field,
870 gfx::RectF()); 895 gfx::RectF());
871 } 896 }
872 897
873 void GetAutofillSuggestions(const FormData& form, 898 void GetAutofillSuggestions(const FormData& form,
874 const FormFieldData& field) { 899 const FormFieldData& field) {
875 GetAutofillSuggestions(kDefaultPageID, form, field); 900 GetAutofillSuggestions(kDefaultPageID, form, field);
876 } 901 }
877 902
878 void AutocompleteSuggestionsReturned( 903 void AutocompleteSuggestionsReturned(
879 const std::vector<base::string16>& result) { 904 const std::vector<base::string16>& result) {
880 autofill_manager_->autocomplete_history_manager_->SendSuggestions(&result); 905 autofill_manager_->autocomplete_history_manager_->SendSuggestions(&result);
881 } 906 }
882 907
883 void FormsSeen(const std::vector<FormData>& forms) { 908 void FormsSeen(const std::vector<FormData>& forms) {
884 autofill_manager_->OnFormsSeen(forms, base::TimeTicks()); 909 autofill_manager_->OnFormsSeen(forms, base::TimeTicks());
885 } 910 }
886 911
887 void FormSubmitted(const FormData& form) { 912 void FormSubmitted(const FormData& form) {
888 autofill_manager_->ResetRunLoop(); 913 autofill_manager_->ResetRunLoop();
889 if (autofill_manager_->OnWillSubmitForm(form, base::TimeTicks::Now())) 914 if (autofill_manager_->OnWillSubmitForm(form, base::TimeTicks::Now()) &&
915 (!personal_data_.GetProfiles().empty() ||
916 !personal_data_.GetCreditCards().empty()))
890 autofill_manager_->WaitForAsyncUploadProcess(); 917 autofill_manager_->WaitForAsyncUploadProcess();
891 autofill_manager_->OnFormSubmitted(form); 918 autofill_manager_->OnFormSubmitted(form);
892 } 919 }
893 920
894 void FillAutofillFormData(int query_id, 921 void FillAutofillFormData(int query_id,
895 const FormData& form, 922 const FormData& form,
896 const FormFieldData& field, 923 const FormFieldData& field,
897 int unique_id) { 924 int unique_id) {
898 autofill_manager_->FillOrPreviewForm( 925 autofill_manager_->FillOrPreviewForm(
899 AutofillDriver::FORM_DATA_ACTION_FILL, query_id, form, field, 926 AutofillDriver::FORM_DATA_ACTION_FILL, query_id, form, field,
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 EXPECT_EQ(expected_num_matching_entries, num_matching_entries); 1155 EXPECT_EQ(expected_num_matching_entries, num_matching_entries);
1129 } 1156 }
1130 1157
1131 protected: 1158 protected:
1132 base::test::ScopedTaskEnvironment scoped_task_environment_; 1159 base::test::ScopedTaskEnvironment scoped_task_environment_;
1133 MockAutofillClient autofill_client_; 1160 MockAutofillClient autofill_client_;
1134 std::unique_ptr<MockAutofillDriver> autofill_driver_; 1161 std::unique_ptr<MockAutofillDriver> autofill_driver_;
1135 std::unique_ptr<TestAutofillManager> autofill_manager_; 1162 std::unique_ptr<TestAutofillManager> autofill_manager_;
1136 std::unique_ptr<TestAutofillExternalDelegate> external_delegate_; 1163 std::unique_ptr<TestAutofillExternalDelegate> external_delegate_;
1137 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 1164 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
1138 TestPaymentsClient* payments_client_;
1139 TestAutofillDownloadManager* download_manager_; 1165 TestAutofillDownloadManager* download_manager_;
1140 TestPersonalDataManager personal_data_; 1166 TestPersonalDataManager personal_data_;
1141 base::FieldTrialList field_trial_list_; 1167 base::FieldTrialList field_trial_list_;
1142 base::test::ScopedFeatureList scoped_feature_list_; 1168 base::test::ScopedFeatureList scoped_feature_list_;
1143 }; 1169 };
1144 1170
1145 class TestFormStructure : public FormStructure { 1171 class TestFormStructure : public FormStructure {
1146 public: 1172 public:
1147 explicit TestFormStructure(const FormData& form) 1173 explicit TestFormStructure(const FormData& form)
1148 : FormStructure(form) {} 1174 : FormStructure(form) {}
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
1787 "04/99", kVisaCard, 1813 "04/99", kVisaCard,
1788 autofill_manager_->GetPackedCreditCardID(4)), 1814 autofill_manager_->GetPackedCreditCardID(4)),
1789 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98", 1815 Suggestion("MasterCard" + kUTF8MidlineEllipsis + "8765", "10/98",
1790 kMasterCard, autofill_manager_->GetPackedCreditCardID(5))); 1816 kMasterCard, autofill_manager_->GetPackedCreditCardID(5)));
1791 } 1817 }
1792 1818
1793 // Test that we will eventually return the credit card signin promo when there 1819 // Test that we will eventually return the credit card signin promo when there
1794 // are no credit card suggestions and the promo is active. See the tests in 1820 // are no credit card suggestions and the promo is active. See the tests in
1795 // AutofillExternalDelegateTest that test whether the promo is added. 1821 // AutofillExternalDelegateTest that test whether the promo is added.
1796 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_OnlySigninPromo) { 1822 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_OnlySigninPromo) {
1797 // Make sure there are no credit cards.
1798 personal_data_.ClearCreditCards(); 1823 personal_data_.ClearCreditCards();
1799 1824
1800 // Set up our form data. 1825 // Set up our form data.
1801 FormData form; 1826 FormData form;
1802 CreateTestCreditCardFormData(&form, true, false); 1827 CreateTestCreditCardFormData(&form, true, false);
1803 std::vector<FormData> forms(1, form); 1828 std::vector<FormData> forms(1, form);
1804 FormsSeen(forms); 1829 FormsSeen(forms);
1805 FormFieldData field = form.fields[1]; 1830 FormFieldData field = form.fields[1];
1806 1831
1807 ON_CALL(autofill_client_, ShouldShowSigninPromo()) 1832 ON_CALL(autofill_client_, ShouldShowSigninPromo())
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 &response_page_id, &response_data); 2369 &response_page_id, &response_data);
2345 ExpectFilledCreditCardYearMonthWithYearMonth( 2370 ExpectFilledCreditCardYearMonthWithYearMonth(
2346 response_page_id, response_data, kDefaultPageID, false, "2999", ""); 2371 response_page_id, response_data, kDefaultPageID, false, "2999", "");
2347 } 2372 }
2348 2373
2349 // Test that we correctly fill a credit card form with month input type. 2374 // Test that we correctly fill a credit card form with month input type.
2350 // 4. year non-empty, month empty 2375 // 4. year non-empty, month empty
2351 TEST_F(AutofillManagerTest, FillCreditCardForm_YearMonth) { 2376 TEST_F(AutofillManagerTest, FillCreditCardForm_YearMonth) {
2352 // Same as the SetUp(), but generate 4 credit cards with year month 2377 // Same as the SetUp(), but generate 4 credit cards with year month
2353 // combination. 2378 // combination.
2354 personal_data_.ClearCreditCards();
2355 personal_data_.CreateTestCreditCardsYearAndMonth("2999", "04"); 2379 personal_data_.CreateTestCreditCardsYearAndMonth("2999", "04");
2356 // Set up our form data. 2380 // Set up our form data.
2357 FormData form; 2381 FormData form;
2358 CreateTestCreditCardFormData(&form, true, true); 2382 CreateTestCreditCardFormData(&form, true, true);
2359 std::vector<FormData> forms(1, form); 2383 std::vector<FormData> forms(1, form);
2360 FormsSeen(forms); 2384 FormsSeen(forms);
2361 2385
2362 const char guid[] = "00000000-0000-0000-0000-000000000007"; 2386 const char guid[] = "00000000-0000-0000-0000-000000000007";
2363 int response_page_id = 0; 2387 int response_page_id = 0;
2364 FormData response_data; 2388 FormData response_data;
(...skipping 2227 matching lines...) Expand 10 before | Expand all | Expand 10 after
4592 } 4616 }
4593 4617
4594 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4618 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4595 #if defined(OS_ANDROID) 4619 #if defined(OS_ANDROID)
4596 #define MAYBE_UploadCreditCard DISABLED_UploadCreditCard 4620 #define MAYBE_UploadCreditCard DISABLED_UploadCreditCard
4597 #else 4621 #else
4598 #define MAYBE_UploadCreditCard UploadCreditCard 4622 #define MAYBE_UploadCreditCard UploadCreditCard
4599 #endif 4623 #endif
4600 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) { 4624 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) {
4601 EnableUkmLogging(); 4625 EnableUkmLogging();
4626 personal_data_.ClearCreditCards();
4602 personal_data_.ClearAutofillProfiles(); 4627 personal_data_.ClearAutofillProfiles();
4603 autofill_manager_->set_credit_card_upload_enabled(true); 4628 autofill_manager_->set_credit_card_upload_enabled(true);
4604 4629
4605 // Create, fill and submit an address form in order to establish a recent 4630 // Create, fill and submit an address form in order to establish a recent
4606 // profile which can be selected for the upload request. 4631 // profile which can be selected for the upload request.
4607 FormData address_form; 4632 FormData address_form;
4608 test::CreateTestAddressFormData(&address_form); 4633 test::CreateTestAddressFormData(&address_form);
4609 FormsSeen(std::vector<FormData>(1, address_form)); 4634 FormsSeen(std::vector<FormData>(1, address_form));
4610 ExpectUniqueFillableFormParsedUkm(); 4635 ExpectUniqueFillableFormParsedUkm();
4611 4636
(...skipping 11 matching lines...) Expand all
4623 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); 4648 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
4624 credit_card_form.fields[2].value = ASCIIToUTF16("11"); 4649 credit_card_form.fields[2].value = ASCIIToUTF16("11");
4625 credit_card_form.fields[3].value = ASCIIToUTF16("2017"); 4650 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
4626 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 4651 credit_card_form.fields[4].value = ASCIIToUTF16("123");
4627 4652
4628 base::HistogramTester histogram_tester; 4653 base::HistogramTester histogram_tester;
4629 4654
4630 FormSubmitted(credit_card_form); 4655 FormSubmitted(credit_card_form);
4631 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 4656 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4632 4657
4658 // Server did not send a server_id, expect copy of card is not stored.
4659 EXPECT_TRUE(autofill_manager_->GetCreditCards().empty());
4660
4633 // Verify that the correct histogram entry (and only that) was logged. 4661 // Verify that the correct histogram entry (and only that) was logged.
4634 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded", 4662 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
4635 AutofillMetrics::UPLOAD_OFFERED, 1); 4663 AutofillMetrics::UPLOAD_OFFERED, 1);
4636 // Verify that the correct UKM was logged. 4664 // Verify that the correct UKM was logged.
4637 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); 4665 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
4638 } 4666 }
4639 4667
4640 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. 4668 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4641 #if defined(OS_ANDROID) 4669 #if defined(OS_ANDROID)
4670 #define MAYBE_UploadCreditCardAndSaveCopy DISABLED_UploadCreditCardAndSaveCopy
4671 #else
4672 #define MAYBE_UploadCreditCardAndSaveCopy UploadCreditCardAndSaveCopy
4673 #endif
4674 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCardAndSaveCopy) {
4675 personal_data_.ClearCreditCards();
4676 personal_data_.ClearAutofillProfiles();
4677 autofill_manager_->set_credit_card_upload_enabled(true);
4678
4679 const char* const server_id = "InstrumentData:1234";
4680 autofill_manager_->ResetPaymentsClientForCardUpload(server_id);
4681
4682 // Create, fill and submit an address form in order to establish a recent
4683 // profile which can be selected for the upload request.
4684 FormData address_form;
4685 test::CreateTestAddressFormData(&address_form);
4686 FormsSeen(std::vector<FormData>(1, address_form));
4687
4688 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form);
4689 FormSubmitted(address_form);
4690
4691 // Set up our credit card form data.
4692 FormData credit_card_form;
4693 CreateTestCreditCardFormData(&credit_card_form, true, false);
4694 FormsSeen(std::vector<FormData>(1, credit_card_form));
4695
4696 // Edit the data, and submit.
4697 const char* const card_number = "4111111111111111";
4698 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
4699 credit_card_form.fields[1].value = ASCIIToUTF16(card_number);
4700 credit_card_form.fields[2].value = ASCIIToUTF16("11");
4701 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
4702 credit_card_form.fields[4].value = ASCIIToUTF16("123");
4703
4704 FormSubmitted(credit_card_form);
4705
4706 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4707 EXPECT_TRUE(autofill_manager_->GetLocalCreditCards().empty());
4708 ASSERT_EQ(1U, autofill_manager_->GetCreditCards().size());
4709 const CreditCard* const saved_card = autofill_manager_->GetCreditCards()[0];
4710 EXPECT_EQ(CreditCard::OK, saved_card->GetServerStatus());
4711 EXPECT_EQ(base::ASCIIToUTF16("1111"), saved_card->LastFourDigits());
4712 EXPECT_EQ(kVisaCard, saved_card->type());
4713 EXPECT_EQ(11, saved_card->expiration_month());
4714 EXPECT_EQ(2017, saved_card->expiration_year());
4715 EXPECT_EQ(server_id, saved_card->server_id());
4716 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, saved_card->record_type());
4717 EXPECT_EQ(base::ASCIIToUTF16(card_number), saved_card->number());
4718 }
4719
4720 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
4721 #if defined(OS_ANDROID)
4642 #define MAYBE_UploadCreditCard_FeatureNotEnabled DISABLED_UploadCreditCard_Featu reNotEnabled 4722 #define MAYBE_UploadCreditCard_FeatureNotEnabled DISABLED_UploadCreditCard_Featu reNotEnabled
4643 #else 4723 #else
4644 #define MAYBE_UploadCreditCard_FeatureNotEnabled UploadCreditCard_FeatureNotEnab led 4724 #define MAYBE_UploadCreditCard_FeatureNotEnabled UploadCreditCard_FeatureNotEnab led
4645 #endif 4725 #endif
4646 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_FeatureNotEnabled) { 4726 TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_FeatureNotEnabled) {
4647 personal_data_.ClearAutofillProfiles(); 4727 personal_data_.ClearAutofillProfiles();
4648 autofill_manager_->set_credit_card_upload_enabled(false); 4728 autofill_manager_->set_credit_card_upload_enabled(false);
4649 4729
4650 // Create, fill and submit an address form in order to establish a recent 4730 // Create, fill and submit an address form in order to establish a recent
4651 // profile which can be selected for the upload request. 4731 // profile which can be selected for the upload request.
(...skipping 1453 matching lines...) Expand 10 before | Expand all | Expand 10 after
6105 6185
6106 // Wait for upload to complete (will check expected types as well). 6186 // Wait for upload to complete (will check expected types as well).
6107 autofill_manager_->WaitForAsyncUploadProcess(); 6187 autofill_manager_->WaitForAsyncUploadProcess();
6108 6188
6109 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); 6189 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature());
6110 EXPECT_NE(uploaded_available_types.end(), 6190 EXPECT_NE(uploaded_available_types.end(),
6111 uploaded_available_types.find(autofill::PASSWORD)); 6191 uploaded_available_types.find(autofill::PASSWORD));
6112 } 6192 }
6113 6193
6114 } // namespace autofill 6194 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698