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

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

Issue 2864363004: Adds UMA for days since previous use to help us determine the validity (Closed)
Patch Set: Merge forward. 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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 } 176 }
177 177
178 void AddProfile(std::unique_ptr<AutofillProfile> profile) { 178 void AddProfile(std::unique_ptr<AutofillProfile> profile) {
179 profile->set_modification_date(AutofillClock::Now()); 179 profile->set_modification_date(AutofillClock::Now());
180 web_profiles_.push_back(std::move(profile)); 180 web_profiles_.push_back(std::move(profile));
181 } 181 }
182 182
183 void AddCreditCard(const CreditCard& credit_card) override { 183 void AddCreditCard(const CreditCard& credit_card) override {
184 std::unique_ptr<CreditCard> local_credit_card = 184 std::unique_ptr<CreditCard> local_credit_card =
185 base::MakeUnique<CreditCard>(credit_card); 185 base::MakeUnique<CreditCard>(credit_card);
186 local_credit_card->set_modification_date(base::Time::Now()); 186 local_credit_card->set_modification_date(AutofillClock::Now());
187 local_credit_cards_.push_back(std::move(local_credit_card)); 187 local_credit_cards_.push_back(std::move(local_credit_card));
188 } 188 }
189 189
190 void AddFullServerCreditCard(const CreditCard& credit_card) override { 190 void AddFullServerCreditCard(const CreditCard& credit_card) override {
191 AddServerCreditCard(credit_card); 191 AddServerCreditCard(credit_card);
192 } 192 }
193 193
194 void RecordUseOf(const AutofillDataModel& data_model) override { 194 void RecordUseOf(const AutofillDataModel& data_model) override {
195 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str()); 195 CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str());
196 if (credit_card) 196 if (credit_card)
(...skipping 27 matching lines...) Expand all
224 void ClearAutofillProfiles() { web_profiles_.clear(); } 224 void ClearAutofillProfiles() { web_profiles_.clear(); }
225 225
226 void ClearCreditCards() { 226 void ClearCreditCards() {
227 local_credit_cards_.clear(); 227 local_credit_cards_.clear();
228 server_credit_cards_.clear(); 228 server_credit_cards_.clear();
229 } 229 }
230 230
231 void AddServerCreditCard(const CreditCard& credit_card) { 231 void AddServerCreditCard(const CreditCard& credit_card) {
232 std::unique_ptr<CreditCard> server_credit_card = 232 std::unique_ptr<CreditCard> server_credit_card =
233 base::MakeUnique<CreditCard>(credit_card); 233 base::MakeUnique<CreditCard>(credit_card);
234 server_credit_card->set_modification_date(base::Time::Now()); 234 server_credit_card->set_modification_date(AutofillClock::Now());
235 server_credit_cards_.push_back(std::move(server_credit_card)); 235 server_credit_cards_.push_back(std::move(server_credit_card));
236 } 236 }
237 237
238 // Create Elvis card with whitespace in the credit card number. 238 // Create Elvis card with whitespace in the credit card number.
239 void CreateTestCreditCardWithWhitespace() { 239 void CreateTestCreditCardWithWhitespace() {
240 ClearCreditCards(); 240 ClearCreditCards();
241 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>(); 241 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>();
242 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley", 242 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley",
243 "4234 5678 9012 3456", // Visa 243 "4234 5678 9012 3456", // Visa
244 "04", "2999"); 244 "04", "2999");
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 } 302 }
303 303
304 void CreateTestCreditCards( 304 void CreateTestCreditCards(
305 std::vector<std::unique_ptr<CreditCard>>* credit_cards) { 305 std::vector<std::unique_ptr<CreditCard>>* credit_cards) {
306 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>(); 306 std::unique_ptr<CreditCard> credit_card = base::MakeUnique<CreditCard>();
307 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley", 307 test::SetCreditCardInfo(credit_card.get(), "Elvis Presley",
308 "4234567890123456", // Visa 308 "4234567890123456", // Visa
309 "04", "2999"); 309 "04", "2999");
310 credit_card->set_guid("00000000-0000-0000-0000-000000000004"); 310 credit_card->set_guid("00000000-0000-0000-0000-000000000004");
311 credit_card->set_use_count(10); 311 credit_card->set_use_count(10);
312 credit_card->set_use_date(base::Time::Now() - base::TimeDelta::FromDays(5)); 312 credit_card->set_use_date(AutofillClock::Now() -
313 base::TimeDelta::FromDays(5));
313 credit_cards->push_back(std::move(credit_card)); 314 credit_cards->push_back(std::move(credit_card));
314 315
315 credit_card = base::MakeUnique<CreditCard>(); 316 credit_card = base::MakeUnique<CreditCard>();
316 test::SetCreditCardInfo(credit_card.get(), "Buddy Holly", 317 test::SetCreditCardInfo(credit_card.get(), "Buddy Holly",
317 "5187654321098765", // Mastercard 318 "5187654321098765", // Mastercard
318 "10", "2998"); 319 "10", "2998");
319 credit_card->set_guid("00000000-0000-0000-0000-000000000005"); 320 credit_card->set_guid("00000000-0000-0000-0000-000000000005");
320 credit_card->set_use_count(5); 321 credit_card->set_use_count(5);
321 credit_card->set_use_date(base::Time::Now() - base::TimeDelta::FromDays(4)); 322 credit_card->set_use_date(AutofillClock::Now() -
323 base::TimeDelta::FromDays(4));
322 credit_cards->push_back(std::move(credit_card)); 324 credit_cards->push_back(std::move(credit_card));
323 325
324 credit_card = base::MakeUnique<CreditCard>(); 326 credit_card = base::MakeUnique<CreditCard>();
325 test::SetCreditCardInfo(credit_card.get(), "", "", "", ""); 327 test::SetCreditCardInfo(credit_card.get(), "", "", "", "");
326 credit_card->set_guid("00000000-0000-0000-0000-000000000006"); 328 credit_card->set_guid("00000000-0000-0000-0000-000000000006");
327 credit_cards->push_back(std::move(credit_card)); 329 credit_cards->push_back(std::move(credit_card));
328 } 330 }
329 331
330 size_t num_times_save_imported_profile_called_; 332 size_t num_times_save_imported_profile_called_;
331 333
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1954 // Test that we return all credit card suggestions in the case that two cards 1956 // Test that we return all credit card suggestions in the case that two cards
1955 // have the same obfuscated number. 1957 // have the same obfuscated number.
1956 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_RepeatedObfuscatedNumber) { 1958 TEST_F(AutofillManagerTest, GetCreditCardSuggestions_RepeatedObfuscatedNumber) {
1957 // Add a credit card with the same obfuscated number as Elvis's. 1959 // Add a credit card with the same obfuscated number as Elvis's.
1958 // |credit_card| will be owned by the mock PersonalDataManager. 1960 // |credit_card| will be owned by the mock PersonalDataManager.
1959 CreditCard credit_card; 1961 CreditCard credit_card;
1960 test::SetCreditCardInfo(&credit_card, "Elvis Presley", 1962 test::SetCreditCardInfo(&credit_card, "Elvis Presley",
1961 "5231567890123456", // Mastercard 1963 "5231567890123456", // Mastercard
1962 "05", "2999"); 1964 "05", "2999");
1963 credit_card.set_guid("00000000-0000-0000-0000-000000000007"); 1965 credit_card.set_guid("00000000-0000-0000-0000-000000000007");
1964 credit_card.set_use_date(base::Time::Now() - base::TimeDelta::FromDays(15)); 1966 credit_card.set_use_date(AutofillClock::Now() -
1967 base::TimeDelta::FromDays(15));
1965 autofill_manager_->AddCreditCard(credit_card); 1968 autofill_manager_->AddCreditCard(credit_card);
1966 1969
1967 // Set up our form data. 1970 // Set up our form data.
1968 FormData form; 1971 FormData form;
1969 CreateTestCreditCardFormData(&form, true, false); 1972 CreateTestCreditCardFormData(&form, true, false);
1970 std::vector<FormData> forms(1, form); 1973 std::vector<FormData> forms(1, form);
1971 FormsSeen(forms); 1974 FormsSeen(forms);
1972 1975
1973 FormFieldData field = form.fields[1]; 1976 FormFieldData field = form.fields[1];
1974 GetAutofillSuggestions(form, field); 1977 GetAutofillSuggestions(form, field);
(...skipping 2689 matching lines...) Expand 10 before | Expand all | Expand 10 after
4664 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 4667 credit_card_form.fields[4].value = ASCIIToUTF16("123");
4665 4668
4666 base::HistogramTester histogram_tester; 4669 base::HistogramTester histogram_tester;
4667 4670
4668 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); 4671 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
4669 FormSubmitted(credit_card_form); 4672 FormSubmitted(credit_card_form);
4670 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); 4673 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
4671 4674
4672 // Server did not send a server_id, expect copy of card is not stored. 4675 // Server did not send a server_id, expect copy of card is not stored.
4673 EXPECT_TRUE(autofill_manager_->GetCreditCards().empty()); 4676 EXPECT_TRUE(autofill_manager_->GetCreditCards().empty());
4674
4675 // Verify that the correct histogram entry (and only that) was logged. 4677 // Verify that the correct histogram entry (and only that) was logged.
4676 ExpectUniqueCardUploadDecision(histogram_tester, 4678 ExpectUniqueCardUploadDecision(histogram_tester,
4677 AutofillMetrics::UPLOAD_OFFERED); 4679 AutofillMetrics::UPLOAD_OFFERED);
4678 // Verify that the correct UKM was logged. 4680 // Verify that the correct UKM was logged.
4679 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); 4681 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED);
4680 // Verify the histogram entry for recent profile modification. 4682 // Verify the histogram entry for recent profile modification.
4681 histogram_tester.ExpectUniqueSample( 4683 histogram_tester.ExpectUniqueSample(
4682 "Autofill.HasModifiedProfile.CreditCardFormSubmission", true, 1); 4684 "Autofill.HasModifiedProfile.CreditCardFormSubmission", true, 1);
4685 // Verify that UMA for "DaysSincePreviousUse" was not logged because we
4686 // modified the profile.
4687 histogram_tester.ExpectTotalCount(
4688 "Autofill.DaysSincePreviousUseAtSubmission.Profile", 0);
4683 } 4689 }
4684 4690
4685 TEST_F(AutofillManagerTest, UploadCreditCardAndSaveCopy) { 4691 TEST_F(AutofillManagerTest, UploadCreditCardAndSaveCopy) {
4686 personal_data_.ClearCreditCards(); 4692 personal_data_.ClearCreditCards();
4687 personal_data_.ClearAutofillProfiles(); 4693 personal_data_.ClearAutofillProfiles();
4688 autofill_manager_->set_credit_card_upload_enabled(true); 4694 autofill_manager_->set_credit_card_upload_enabled(true);
4689 4695
4690 const char* const server_id = "InstrumentData:1234"; 4696 const char* const server_id = "InstrumentData:1234";
4691 autofill_manager_->ResetPaymentsClientForCardUpload(server_id); 4697 autofill_manager_->ResetPaymentsClientForCardUpload(server_id);
4692 4698
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after
5867 5873
5868 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form1); 5874 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form1);
5869 FormSubmitted(address_form1); 5875 FormSubmitted(address_form1);
5870 5876
5871 ManuallyFillAddressForm("Master", "Blaster", "77401", "US", &address_form2); 5877 ManuallyFillAddressForm("Master", "Blaster", "77401", "US", &address_form2);
5872 FormSubmitted(address_form2); 5878 FormSubmitted(address_form2);
5873 5879
5874 // Set up our credit card form data. 5880 // Set up our credit card form data.
5875 FormData credit_card_form; 5881 FormData credit_card_form;
5876 CreateTestCreditCardFormData(&credit_card_form, true, false); 5882 CreateTestCreditCardFormData(&credit_card_form, true, false);
5877 FormsSeen(std::vector<FormData>(1, credit_card_form)); 5883 FormsSeen({credit_card_form});
5878 5884
5879 // Edit the data, but use yet another name, and submit. 5885 // Edit the data, but use yet another name, and submit.
5880 credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master"); 5886 credit_card_form.fields[0].value = ASCIIToUTF16("Bob Master");
5887 FormsSeen({credit_card_form});
5888
5889 // Edit the credit card form and submit.
5890 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
5881 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); 5891 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
5882 credit_card_form.fields[2].value = ASCIIToUTF16("11"); 5892 credit_card_form.fields[2].value = ASCIIToUTF16("11");
5883 credit_card_form.fields[3].value = ASCIIToUTF16("2017"); 5893 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
5884 credit_card_form.fields[4].value = ASCIIToUTF16("123"); 5894 credit_card_form.fields[4].value = ASCIIToUTF16("123");
5885 5895
5886 base::HistogramTester histogram_tester; 5896 base::HistogramTester histogram_tester;
5887 5897
5888 // Names are required to match, upload should not happen. 5898 // Names are required to match, upload should not happen.
5889 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); 5899 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
5890 FormSubmitted(credit_card_form); 5900 FormSubmitted(credit_card_form);
5891 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); 5901 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded());
5892 5902
5893 // Verify that the correct histogram entry (and only that) was logged. 5903 // Verify that the correct histogram entry (and only that) was logged.
5894 ExpectUniqueCardUploadDecision( 5904 ExpectUniqueCardUploadDecision(
5895 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); 5905 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES);
5896 } 5906 }
5897 5907
5908 TEST_F(AutofillManagerTest, UploadCreditCard_LogPreviousUseDate) {
5909 // Create the test clock and set the time to a specific value.
5910 TestAutofillClock test_clock;
5911 test_clock.SetNow(kArbitraryTime);
5912
5913 personal_data_.ClearAutofillProfiles();
5914 autofill_manager_->set_credit_card_upload_enabled(true);
5915
5916 // Create, fill and submit an address form in order to establish a recent
5917 // profile which can be selected for the upload request.
5918 FormData address_form;
5919 test::CreateTestAddressFormData(&address_form);
5920 FormsSeen({address_form});
5921 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form);
5922 FormSubmitted(address_form);
5923 const std::vector<AutofillProfile*>& profiles =
5924 personal_data_.GetProfilesToSuggest();
5925 ASSERT_EQ(1U, profiles.size());
5926
5927 // Advance the current time and simulate use of the address profile.
5928 test_clock.SetNow(kMuchLaterTime);
5929 profiles[0]->RecordAndLogUse();
5930
5931 // Set up our credit card form data.
5932 FormData credit_card_form;
5933 CreateTestCreditCardFormData(&credit_card_form, true, false);
5934 FormsSeen({credit_card_form});
5935
5936 // Edit the credit card form and submit.
5937 credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
5938 credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111");
5939 credit_card_form.fields[2].value = ASCIIToUTF16("11");
5940 credit_card_form.fields[3].value = ASCIIToUTF16("2017");
5941 credit_card_form.fields[4].value = ASCIIToUTF16("123");
5942
5943 base::HistogramTester histogram_tester;
5944
5945 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0);
5946 FormSubmitted(credit_card_form);
5947 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
5948
5949 // Verify that UMA for "DaysSincePreviousUse" is logged.
5950 histogram_tester.ExpectUniqueSample(
5951 "Autofill.DaysSincePreviousUseAtSubmission.Profile",
5952 (kMuchLaterTime - kArbitraryTime).InDays(),
5953 /*expected_count=*/1);
5954 }
5955
5898 TEST_F(AutofillManagerTest, UploadCreditCard_UploadDetailsFails) { 5956 TEST_F(AutofillManagerTest, UploadCreditCard_UploadDetailsFails) {
5899 EnableUkmLogging(); 5957 EnableUkmLogging();
5900 personal_data_.ClearAutofillProfiles(); 5958 personal_data_.ClearAutofillProfiles();
5901 autofill_manager_->set_credit_card_upload_enabled(true); 5959 autofill_manager_->set_credit_card_upload_enabled(true);
5902 5960
5903 // Anything other than "en-US" will cause GetUploadDetails to return a failure 5961 // Anything other than "en-US" will cause GetUploadDetails to return a failure
5904 // response. 5962 // response.
5905 autofill_manager_->set_app_locale("pt-BR"); 5963 autofill_manager_->set_app_locale("pt-BR");
5906 5964
5907 // Create, fill and submit an address form in order to establish a recent 5965 // Create, fill and submit an address form in order to establish a recent
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
6587 6645
6588 // Wait for upload to complete (will check expected types as well). 6646 // Wait for upload to complete (will check expected types as well).
6589 autofill_manager_->WaitForAsyncUploadProcess(); 6647 autofill_manager_->WaitForAsyncUploadProcess();
6590 6648
6591 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); 6649 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature());
6592 EXPECT_NE(uploaded_available_types.end(), 6650 EXPECT_NE(uploaded_available_types.end(),
6593 uploaded_available_types.find(autofill::PASSWORD)); 6651 uploaded_available_types.find(autofill::PASSWORD));
6594 } 6652 }
6595 6653
6596 } // namespace autofill 6654 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | components/autofill/core/browser/autofill_profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698