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

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

Issue 2855943002: Offer to save card locally if user manually enters same card number as (Closed)
Patch Set: Creates separate tests for duplicating masked server card and not duplicating full server card. 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 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 } 177 }
178 178
179 void AddCreditCard(const CreditCard& credit_card) override { 179 void AddCreditCard(const CreditCard& credit_card) override {
180 std::unique_ptr<CreditCard> local_credit_card = 180 std::unique_ptr<CreditCard> local_credit_card =
181 base::MakeUnique<CreditCard>(credit_card); 181 base::MakeUnique<CreditCard>(credit_card);
182 local_credit_card->set_modification_date(base::Time::Now()); 182 local_credit_card->set_modification_date(base::Time::Now());
183 local_credit_cards_.push_back(std::move(local_credit_card)); 183 local_credit_cards_.push_back(std::move(local_credit_card));
184 } 184 }
185 185
186 void AddFullServerCreditCard(const CreditCard& credit_card) override { 186 void AddFullServerCreditCard(const CreditCard& credit_card) override {
187 std::unique_ptr<CreditCard> server_credit_card = 187 AddServerCreditCard(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 } 188 }
192 189
193 void RecordUseOf(const AutofillDataModel& data_model) override { 190 void RecordUseOf(const AutofillDataModel& data_model) override {
194 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str()); 191 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str());
195 if (credit_card) 192 if (credit_card)
196 credit_card->RecordAndLogUse(); 193 credit_card->RecordAndLogUse();
197 194
198 AutofillProfile* profile = GetProfileWithGUID(data_model.guid().c_str()); 195 AutofillProfile* profile = GetProfileWithGUID(data_model.guid().c_str());
199 if (profile) 196 if (profile)
200 profile->RecordAndLogUse(); 197 profile->RecordAndLogUse();
(...skipping 19 matching lines...) Expand all
220 } 217 }
221 } 218 }
222 219
223 void ClearAutofillProfiles() { web_profiles_.clear(); } 220 void ClearAutofillProfiles() { web_profiles_.clear(); }
224 221
225 void ClearCreditCards() { 222 void ClearCreditCards() {
226 local_credit_cards_.clear(); 223 local_credit_cards_.clear();
227 server_credit_cards_.clear(); 224 server_credit_cards_.clear();
228 } 225 }
229 226
227 void AddServerCreditCard(const CreditCard& credit_card) {
228 std::unique_ptr<CreditCard> server_credit_card =
229 base::MakeUnique<CreditCard>(credit_card);
230 server_credit_card->set_modification_date(base::Time::Now());
231 server_credit_cards_.push_back(std::move(server_credit_card));
232 }
233
230 // Create Elvis card with whitespace in the credit card number. 234 // Create Elvis card with whitespace in the credit card number.
231 void CreateTestCreditCardWithWhitespace() { 235 void CreateTestCreditCardWithWhitespace() {
232 ClearCreditCards(); 236 ClearCreditCards();
233 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>(); 237 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>();
234 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley", 238 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley",
235 "4234 5678 9012 3456", // Visa 239 "4234 5678 9012 3456", // Visa
236 "04", "2999"); 240 "04", "2999");
237 credit_card->set_guid("00000000-0000-0000-0000-000000000008"); 241 credit_card->set_guid("00000000-0000-0000-0000-000000000008");
238 local_credit_cards_.push_back(std::move(credit_card)); 242 local_credit_cards_.push_back(std::move(credit_card));
239 } 243 }
(...skipping 4389 matching lines...) Expand 10 before | Expand all | Expand 10 after
4629 4633
4630 // Edit the data, and submit. 4634 // Edit the data, and submit.
4631 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); 4635 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
4632 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); 4636 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
4633 credit_card_form.fields[2].value = ASCIIToUTF16("11"); 4637 credit_card_form.fields[2].value = ASCIIToUTF16("11");
4634 credit_card_form.fields[3].value = ASCIIToUTF16("2017"); 4638 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
4635 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 4639 credit_card_form.fields[4].value = ASCIIToUTF16("123");
4636 4640
4637 base::HistogramTester histogram_tester; 4641 base::HistogramTester histogram_tester;
4638 4642
4643 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
4639 FormSubmitted(credit_card_form); 4644 FormSubmitted(credit_card_form);
4640 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 4645 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4641 4646
4642 // Server did not send a server_id, expect copy of card is not stored. 4647 // Server did not send a server_id, expect copy of card is not stored.
4643 EXPECT_TRUE(autofill_manager_->GetCreditCards().empty()); 4648 EXPECT_TRUE(autofill_manager_->GetCreditCards().empty());
4644 4649
4645 // Verify that the correct histogram entry (and only that) was logged. 4650 // Verify that the correct histogram entry (and only that) was logged.
4646 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded", 4651 histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
4647 AutofillMetrics::UPLOAD_OFFERED, 1); 4652 AutofillMetrics::UPLOAD_OFFERED, 1);
4648 // Verify that the correct UKM was logged. 4653 // Verify that the correct UKM was logged.
(...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after
5574 5579
5575 // Verify that the correct histogram entry (and only that) was logged. 5580 // Verify that the correct histogram entry (and only that) was logged.
5576 histogram_tester.ExpectUniqueSample( 5581 histogram_tester.ExpectUniqueSample(
5577 "Autofill.CardUploadDecisionExpanded", 5582 "Autofill.CardUploadDecisionExpanded",
5578 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED, 1); 5583 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED, 1);
5579 // Verify that the correct UKM was logged. 5584 // Verify that the correct UKM was logged.
5580 ExpectCardUploadDecisionUkm( 5585 ExpectCardUploadDecisionUkm(
5581 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); 5586 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED);
5582 } 5587 }
5583 5588
5589 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
5590 #if defined(OS_ANDROID)
5591 #define MAYBE_DuplicateMaskedCreditCard DISABLED_DuplicatedMaskedCreditCard
5592 #else
5593 #define MAYBE_DuplicateMaskedCreditCard DuplicateMaskedCreditCard
5594 #endif
5595 TEST_F(AutofillManagerTest, MAYBE_DuplicateMaskedCreditCard) {
5596 personal_data_.ClearAutofillProfiles();
5597 autofill_manager_->set_credit_card_upload_enabled(true);
5598 autofill_manager_->set_app_locale("en-US");
5599
5600 // Create, fill and submit an address form in order to establish a recent
5601 // profile which can be selected for the upload request.
5602 FormData address_form;
5603 test::CreateTestAddressFormData(&address_form);
5604 FormsSeen(std::vector<FormData>(1, address_form));
5605 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form);
5606 FormSubmitted(address_form);
5607
5608 // Add a masked credit card whose |TypeAndLastFourDigits| matches what we will
5609 // below.
5610 CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123");
5611 test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11", "2017");
5612 credit_card.SetNetworkForMaskedCard(kVisaCard);
5613 personal_data_.AddServerCreditCard(credit_card);
5614
5615 // Set up our credit card form data.
5616 FormData credit_card_form;
5617 CreateTestCreditCardFormData(&credit_card_form, true, false);
5618 FormsSeen(std::vector<FormData>(1, credit_card_form));
5619
5620 // Edit the data, and submit.
5621 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
5622 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
5623 credit_card_form.fields[2].value = ASCIIToUTF16("11");
5624 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
5625 credit_card_form.fields[4].value = ASCIIToUTF16("123");
5626
5627 // The save prompt should be shown.
5628 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _));
5629 FormSubmitted(credit_card_form);
5630 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded());
5631 }
5632
5584 // Verify that typing "gmail" will match "theking@gmail.com" and 5633 // Verify that typing "gmail" will match "theking@gmail.com" and
5585 // "buddy@gmail.com" when substring matching is enabled. 5634 // "buddy@gmail.com" when substring matching is enabled.
5586 TEST_F(AutofillManagerTest, DisplaySuggestionsWithMatchingTokens) { 5635 TEST_F(AutofillManagerTest, DisplaySuggestionsWithMatchingTokens) {
5587 // Token matching is currently behind a flag. 5636 // Token matching is currently behind a flag.
5588 base::CommandLine::ForCurrentProcess()->AppendSwitch( 5637 base::CommandLine::ForCurrentProcess()->AppendSwitch(
5589 switches::kEnableSuggestionsWithSubstringMatch); 5638 switches::kEnableSuggestionsWithSubstringMatch);
5590 5639
5591 // Set up our form data. 5640 // Set up our form data.
5592 FormData form; 5641 FormData form;
5593 test::CreateTestAddressFormData(&form); 5642 test::CreateTestAddressFormData(&form);
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
6190 6239
6191 // Wait for upload to complete (will check expected types as well). 6240 // Wait for upload to complete (will check expected types as well).
6192 autofill_manager_->WaitForAsyncUploadProcess(); 6241 autofill_manager_->WaitForAsyncUploadProcess();
6193 6242
6194 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); 6243 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature());
6195 EXPECT_NE(uploaded_available_types.end(), 6244 EXPECT_NE(uploaded_available_types.end(),
6196 uploaded_available_types.find(autofill::PASSWORD)); 6245 uploaded_available_types.find(autofill::PASSWORD));
6197 } 6246 }
6198 6247
6199 } // namespace autofill 6248 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | components/autofill/core/browser/autofill_merge_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698