| OLD | NEW |
| 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 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1063 DCHECK(autofill_manager_->full_card_request_); | 1063 DCHECK(autofill_manager_->full_card_request_); |
| 1064 return static_cast<CardUnmaskDelegate*>( | 1064 return static_cast<CardUnmaskDelegate*>( |
| 1065 autofill_manager_->full_card_request_.get()); | 1065 autofill_manager_->full_card_request_.get()); |
| 1066 } | 1066 } |
| 1067 | 1067 |
| 1068 void SetHttpWarningEnabled() { | 1068 void SetHttpWarningEnabled() { |
| 1069 scoped_feature_list_.InitAndEnableFeature( | 1069 scoped_feature_list_.InitAndEnableFeature( |
| 1070 security_state::kHttpFormWarningFeature); | 1070 security_state::kHttpFormWarningFeature); |
| 1071 } | 1071 } |
| 1072 | 1072 |
| 1073 void EnableUkmLogging() { | 1073 void EnableAutofillUpstreamRequestCvcIfMissingExperiment() { |
| 1074 scoped_feature_list_.InitAndEnableFeature(kAutofillUkmLogging); | |
| 1075 } | |
| 1076 | |
| 1077 void EnableAutofillUpstreamRequestCvcIfMissingExperimentAndUkmLogging() { | |
| 1078 scoped_feature_list_.InitWithFeatures( | 1074 scoped_feature_list_.InitWithFeatures( |
| 1079 {kAutofillUpstreamRequestCvcIfMissing, kAutofillUkmLogging}, {}); | 1075 {kAutofillUpstreamRequestCvcIfMissing}, {}); |
| 1080 } | 1076 } |
| 1081 | 1077 |
| 1082 void DisableAutofillUpstreamUseAutofillProfileComparatorForName() { | 1078 void DisableAutofillUpstreamUseAutofillProfileComparatorForName() { |
| 1083 scoped_feature_list_.InitAndDisableFeature( | 1079 scoped_feature_list_.InitAndDisableFeature( |
| 1084 kAutofillUpstreamUseAutofillProfileComparatorForName); | 1080 kAutofillUpstreamUseAutofillProfileComparatorForName); |
| 1085 } | 1081 } |
| 1086 | 1082 |
| 1087 void ExpectUniqueFillableFormParsedUkm() { | 1083 void ExpectUniqueFillableFormParsedUkm() { |
| 1088 ukm::TestUkmService* ukm_service = autofill_client_.GetTestUkmService(); | 1084 ukm::TestUkmService* ukm_service = autofill_client_.GetTestUkmService(); |
| 1089 | 1085 |
| (...skipping 2582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3672 // Verify that FormStructure::ParseQueryResponse was NOT called. | 3668 // Verify that FormStructure::ParseQueryResponse was NOT called. |
| 3673 histogram_tester.ExpectTotalCount("Autofill.ServerQueryResponse", 0); | 3669 histogram_tester.ExpectTotalCount("Autofill.ServerQueryResponse", 0); |
| 3674 } | 3670 } |
| 3675 | 3671 |
| 3676 // Test that we are able to save form data when forms are submitted and we only | 3672 // Test that we are able to save form data when forms are submitted and we only |
| 3677 // have server data for the field types. | 3673 // have server data for the field types. |
| 3678 TEST_F(AutofillManagerTest, FormSubmittedServerTypes) { | 3674 TEST_F(AutofillManagerTest, FormSubmittedServerTypes) { |
| 3679 // Set up our form data. | 3675 // Set up our form data. |
| 3680 FormData form; | 3676 FormData form; |
| 3681 test::CreateTestAddressFormData(&form); | 3677 test::CreateTestAddressFormData(&form); |
| 3678 FormsSeen(std::vector<FormData>(1, form)); |
| 3682 | 3679 |
| 3683 // Simulate having seen this form on page load. | 3680 // Simulate having seen this form on page load. |
| 3684 // |form_structure| will be owned by |autofill_manager_|. | 3681 // |form_structure| will be owned by |autofill_manager_|. |
| 3685 TestFormStructure* form_structure = new TestFormStructure(form); | 3682 TestFormStructure* form_structure = new TestFormStructure(form); |
| 3686 form_structure->DetermineHeuristicTypes(nullptr /* ukm_service */); | 3683 form_structure->DetermineHeuristicTypes(nullptr /* ukm_service */); |
| 3687 | 3684 |
| 3688 // Clear the heuristic types, and instead set the appropriate server types. | 3685 // Clear the heuristic types, and instead set the appropriate server types. |
| 3689 std::vector<ServerFieldType> heuristic_types, server_types; | 3686 std::vector<ServerFieldType> heuristic_types, server_types; |
| 3690 for (size_t i = 0; i < form.fields.size(); ++i) { | 3687 for (size_t i = 0; i < form.fields.size(); ++i) { |
| 3691 heuristic_types.push_back(UNKNOWN_TYPE); | 3688 heuristic_types.push_back(UNKNOWN_TYPE); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 3711 } | 3708 } |
| 3712 | 3709 |
| 3713 // Test that we are able to save form data after the possible types have been | 3710 // Test that we are able to save form data after the possible types have been |
| 3714 // determined. We do two submissions and verify that only at the second | 3711 // determined. We do two submissions and verify that only at the second |
| 3715 // submission are the possible types able to be inferred. | 3712 // submission are the possible types able to be inferred. |
| 3716 TEST_F(AutofillManagerTest, FormSubmittedPossibleTypesTwoSubmissions) { | 3713 TEST_F(AutofillManagerTest, FormSubmittedPossibleTypesTwoSubmissions) { |
| 3717 // Set up our form data. | 3714 // Set up our form data. |
| 3718 FormData form; | 3715 FormData form; |
| 3719 std::vector<ServerFieldTypeSet> expected_types; | 3716 std::vector<ServerFieldTypeSet> expected_types; |
| 3720 test::CreateTestAddressFormData(&form, &expected_types); | 3717 test::CreateTestAddressFormData(&form, &expected_types); |
| 3718 FormsSeen(std::vector<FormData>(1, form)); |
| 3721 | 3719 |
| 3722 // Fill the form. | 3720 // Fill the form. |
| 3723 const char guid[] = "00000000-0000-0000-0000-000000000001"; | 3721 const char guid[] = "00000000-0000-0000-0000-000000000001"; |
| 3724 int response_page_id = 0; | 3722 int response_page_id = 0; |
| 3725 FormData response_data; | 3723 FormData response_data; |
| 3726 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0], | 3724 FillAutofillFormDataAndSaveResults(kDefaultPageID, form, form.fields[0], |
| 3727 MakeFrontendID(std::string(), guid), | 3725 MakeFrontendID(std::string(), guid), |
| 3728 &response_page_id, &response_data); | 3726 &response_page_id, &response_data); |
| 3729 ExpectFilledAddressFormElvis(response_page_id, response_data, kDefaultPageID, | 3727 ExpectFilledAddressFormElvis(response_page_id, response_data, kDefaultPageID, |
| 3730 false); | 3728 false); |
| (...skipping 900 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4631 response.should_store_pan = false; | 4629 response.should_store_pan = false; |
| 4632 response.cvc = ASCIIToUTF16("123"); | 4630 response.cvc = ASCIIToUTF16("123"); |
| 4633 response.exp_month = ASCIIToUTF16("02"); | 4631 response.exp_month = ASCIIToUTF16("02"); |
| 4634 response.exp_year = ASCIIToUTF16("2018"); | 4632 response.exp_year = ASCIIToUTF16("2018"); |
| 4635 full_card_unmask_delegate()->OnUnmaskResponse(response); | 4633 full_card_unmask_delegate()->OnUnmaskResponse(response); |
| 4636 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS, | 4634 autofill_manager_->OnDidGetRealPan(AutofillClient::SUCCESS, |
| 4637 "4012888888881881"); | 4635 "4012888888881881"); |
| 4638 } | 4636 } |
| 4639 | 4637 |
| 4640 TEST_F(AutofillManagerTest, UploadCreditCard) { | 4638 TEST_F(AutofillManagerTest, UploadCreditCard) { |
| 4641 EnableUkmLogging(); | |
| 4642 personal_data_.ClearCreditCards(); | 4639 personal_data_.ClearCreditCards(); |
| 4643 personal_data_.ClearAutofillProfiles(); | 4640 personal_data_.ClearAutofillProfiles(); |
| 4644 autofill_manager_->set_credit_card_upload_enabled(true); | 4641 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4645 | 4642 |
| 4646 // Create, fill and submit an address form in order to establish a recent | 4643 // Create, fill and submit an address form in order to establish a recent |
| 4647 // profile which can be selected for the upload request. | 4644 // profile which can be selected for the upload request. |
| 4648 FormData address_form; | 4645 FormData address_form; |
| 4649 test::CreateTestAddressFormData(&address_form); | 4646 test::CreateTestAddressFormData(&address_form); |
| 4650 FormsSeen(std::vector<FormData>(1, address_form)); | 4647 FormsSeen(std::vector<FormData>(1, address_form)); |
| 4651 ExpectUniqueFillableFormParsedUkm(); | 4648 ExpectUniqueFillableFormParsedUkm(); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4763 // The save prompt should be shown instead of doing an upload. | 4760 // The save prompt should be shown instead of doing an upload. |
| 4764 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)); | 4761 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)); |
| 4765 FormSubmitted(credit_card_form); | 4762 FormSubmitted(credit_card_form); |
| 4766 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); | 4763 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); |
| 4767 | 4764 |
| 4768 // Verify that no histogram entry was logged. | 4765 // Verify that no histogram entry was logged. |
| 4769 histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0); | 4766 histogram_tester.ExpectTotalCount("Autofill.CardUploadDecisionMetric", 0); |
| 4770 } | 4767 } |
| 4771 | 4768 |
| 4772 TEST_F(AutofillManagerTest, UploadCreditCard_CvcUnavailable) { | 4769 TEST_F(AutofillManagerTest, UploadCreditCard_CvcUnavailable) { |
| 4773 EnableUkmLogging(); | |
| 4774 personal_data_.ClearAutofillProfiles(); | 4770 personal_data_.ClearAutofillProfiles(); |
| 4775 autofill_manager_->set_credit_card_upload_enabled(true); | 4771 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4776 | 4772 |
| 4777 // Create, fill and submit an address form in order to establish a recent | 4773 // Create, fill and submit an address form in order to establish a recent |
| 4778 // profile which can be selected for the upload request. | 4774 // profile which can be selected for the upload request. |
| 4779 FormData address_form; | 4775 FormData address_form; |
| 4780 test::CreateTestAddressFormData(&address_form); | 4776 test::CreateTestAddressFormData(&address_form); |
| 4781 FormsSeen(std::vector<FormData>(1, address_form)); | 4777 FormsSeen(std::vector<FormData>(1, address_form)); |
| 4782 ExpectUniqueFillableFormParsedUkm(); | 4778 ExpectUniqueFillableFormParsedUkm(); |
| 4783 | 4779 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4815 EXPECT_EQ(1, rappor_service->GetReportsCount()); | 4811 EXPECT_EQ(1, rappor_service->GetReportsCount()); |
| 4816 std::string sample; | 4812 std::string sample; |
| 4817 rappor::RapporType type; | 4813 rappor::RapporType type; |
| 4818 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( | 4814 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( |
| 4819 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); | 4815 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); |
| 4820 EXPECT_EQ("myform.com", sample); | 4816 EXPECT_EQ("myform.com", sample); |
| 4821 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 4817 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 4822 } | 4818 } |
| 4823 | 4819 |
| 4824 TEST_F(AutofillManagerTest, UploadCreditCard_CvcInvalidLength) { | 4820 TEST_F(AutofillManagerTest, UploadCreditCard_CvcInvalidLength) { |
| 4825 EnableUkmLogging(); | |
| 4826 personal_data_.ClearAutofillProfiles(); | 4821 personal_data_.ClearAutofillProfiles(); |
| 4827 autofill_manager_->set_credit_card_upload_enabled(true); | 4822 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4828 | 4823 |
| 4829 // Create, fill and submit an address form in order to establish a recent | 4824 // Create, fill and submit an address form in order to establish a recent |
| 4830 // profile which can be selected for the upload request. | 4825 // profile which can be selected for the upload request. |
| 4831 FormData address_form; | 4826 FormData address_form; |
| 4832 test::CreateTestAddressFormData(&address_form); | 4827 test::CreateTestAddressFormData(&address_form); |
| 4833 FormsSeen(std::vector<FormData>(1, address_form)); | 4828 FormsSeen(std::vector<FormData>(1, address_form)); |
| 4834 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); | 4829 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); |
| 4835 FormSubmitted(address_form); | 4830 FormSubmitted(address_form); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4864 EXPECT_EQ(1, rappor_service->GetReportsCount()); | 4859 EXPECT_EQ(1, rappor_service->GetReportsCount()); |
| 4865 std::string sample; | 4860 std::string sample; |
| 4866 rappor::RapporType type; | 4861 rappor::RapporType type; |
| 4867 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( | 4862 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( |
| 4868 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); | 4863 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); |
| 4869 EXPECT_EQ("myform.com", sample); | 4864 EXPECT_EQ("myform.com", sample); |
| 4870 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 4865 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 4871 } | 4866 } |
| 4872 | 4867 |
| 4873 TEST_F(AutofillManagerTest, UploadCreditCard_MultipleCvcFields) { | 4868 TEST_F(AutofillManagerTest, UploadCreditCard_MultipleCvcFields) { |
| 4874 EnableUkmLogging(); | |
| 4875 autofill_manager_->set_credit_card_upload_enabled(true); | 4869 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4876 | 4870 |
| 4877 // Remove the profiles that were created in the TestPersonalDataManager | 4871 // Remove the profiles that were created in the TestPersonalDataManager |
| 4878 // constructor because they would result in conflicting names that would | 4872 // constructor because they would result in conflicting names that would |
| 4879 // prevent the upload. | 4873 // prevent the upload. |
| 4880 personal_data_.ClearAutofillProfiles(); | 4874 personal_data_.ClearAutofillProfiles(); |
| 4881 | 4875 |
| 4882 // Create, fill and submit an address form in order to establish a recent | 4876 // Create, fill and submit an address form in order to establish a recent |
| 4883 // profile which can be selected for the upload request. | 4877 // profile which can be selected for the upload request. |
| 4884 FormData address_form; | 4878 FormData address_form; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4925 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 4919 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 4926 | 4920 |
| 4927 // Verify that the correct histogram entry (and only that) was logged. | 4921 // Verify that the correct histogram entry (and only that) was logged. |
| 4928 ExpectUniqueCardUploadDecision(histogram_tester, | 4922 ExpectUniqueCardUploadDecision(histogram_tester, |
| 4929 AutofillMetrics::UPLOAD_OFFERED); | 4923 AutofillMetrics::UPLOAD_OFFERED); |
| 4930 // Verify that the correct UKM was logged. | 4924 // Verify that the correct UKM was logged. |
| 4931 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); | 4925 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); |
| 4932 } | 4926 } |
| 4933 | 4927 |
| 4934 TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnForm) { | 4928 TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnForm) { |
| 4935 EnableUkmLogging(); | |
| 4936 autofill_manager_->set_credit_card_upload_enabled(true); | 4929 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4937 | 4930 |
| 4938 // Remove the profiles that were created in the TestPersonalDataManager | 4931 // Remove the profiles that were created in the TestPersonalDataManager |
| 4939 // constructor because they would result in conflicting names that would | 4932 // constructor because they would result in conflicting names that would |
| 4940 // prevent the upload. | 4933 // prevent the upload. |
| 4941 personal_data_.ClearAutofillProfiles(); | 4934 personal_data_.ClearAutofillProfiles(); |
| 4942 | 4935 |
| 4943 // Create, fill and submit an address form in order to establish a recent | 4936 // Create, fill and submit an address form in order to establish a recent |
| 4944 // profile which can be selected for the upload request. | 4937 // profile which can be selected for the upload request. |
| 4945 FormData address_form; | 4938 FormData address_form; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4981 | 4974 |
| 4982 // Verify that the correct histogram entry (and only that) was logged. | 4975 // Verify that the correct histogram entry (and only that) was logged. |
| 4983 ExpectUniqueCardUploadDecision(histogram_tester, | 4976 ExpectUniqueCardUploadDecision(histogram_tester, |
| 4984 AutofillMetrics::CVC_FIELD_NOT_FOUND); | 4977 AutofillMetrics::CVC_FIELD_NOT_FOUND); |
| 4985 // Verify that the correct UKM was logged. | 4978 // Verify that the correct UKM was logged. |
| 4986 ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND); | 4979 ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND); |
| 4987 } | 4980 } |
| 4988 | 4981 |
| 4989 TEST_F(AutofillManagerTest, | 4982 TEST_F(AutofillManagerTest, |
| 4990 UploadCreditCard_NoCvcFieldOnForm_InvalidCvcInNonCvcField) { | 4983 UploadCreditCard_NoCvcFieldOnForm_InvalidCvcInNonCvcField) { |
| 4991 EnableUkmLogging(); | |
| 4992 autofill_manager_->set_credit_card_upload_enabled(true); | 4984 autofill_manager_->set_credit_card_upload_enabled(true); |
| 4993 | 4985 |
| 4994 // Remove the profiles that were created in the TestPersonalDataManager | 4986 // Remove the profiles that were created in the TestPersonalDataManager |
| 4995 // constructor because they would result in conflicting names that would | 4987 // constructor because they would result in conflicting names that would |
| 4996 // prevent the upload. | 4988 // prevent the upload. |
| 4997 personal_data_.ClearAutofillProfiles(); | 4989 personal_data_.ClearAutofillProfiles(); |
| 4998 | 4990 |
| 4999 // Create, fill and submit an address form in order to establish a recent | 4991 // Create, fill and submit an address form in order to establish a recent |
| 5000 // profile which can be selected for the upload request. | 4992 // profile which can be selected for the upload request. |
| 5001 FormData address_form; | 4993 FormData address_form; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5040 | 5032 |
| 5041 // Verify that the correct histogram entry (and only that) was logged. | 5033 // Verify that the correct histogram entry (and only that) was logged. |
| 5042 ExpectUniqueCardUploadDecision(histogram_tester, | 5034 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5043 AutofillMetrics::CVC_FIELD_NOT_FOUND); | 5035 AutofillMetrics::CVC_FIELD_NOT_FOUND); |
| 5044 // Verify that the correct UKM was logged. | 5036 // Verify that the correct UKM was logged. |
| 5045 ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND); | 5037 ExpectCardUploadDecisionUkm(AutofillMetrics::CVC_FIELD_NOT_FOUND); |
| 5046 } | 5038 } |
| 5047 | 5039 |
| 5048 TEST_F(AutofillManagerTest, | 5040 TEST_F(AutofillManagerTest, |
| 5049 UploadCreditCard_NoCvcFieldOnForm_CvcInNonCvcField) { | 5041 UploadCreditCard_NoCvcFieldOnForm_CvcInNonCvcField) { |
| 5050 EnableUkmLogging(); | |
| 5051 autofill_manager_->set_credit_card_upload_enabled(true); | 5042 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5052 | 5043 |
| 5053 // Remove the profiles that were created in the TestPersonalDataManager | 5044 // Remove the profiles that were created in the TestPersonalDataManager |
| 5054 // constructor because they would result in conflicting names that would | 5045 // constructor because they would result in conflicting names that would |
| 5055 // prevent the upload. | 5046 // prevent the upload. |
| 5056 personal_data_.ClearAutofillProfiles(); | 5047 personal_data_.ClearAutofillProfiles(); |
| 5057 | 5048 |
| 5058 // Create, fill and submit an address form in order to establish a recent | 5049 // Create, fill and submit an address form in order to establish a recent |
| 5059 // profile which can be selected for the upload request. | 5050 // profile which can be selected for the upload request. |
| 5060 FormData address_form; | 5051 FormData address_form; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5101 ExpectUniqueCardUploadDecision( | 5092 ExpectUniqueCardUploadDecision( |
| 5102 histogram_tester, | 5093 histogram_tester, |
| 5103 AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); | 5094 AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); |
| 5104 // Verify that the correct UKM was logged. | 5095 // Verify that the correct UKM was logged. |
| 5105 ExpectCardUploadDecisionUkm( | 5096 ExpectCardUploadDecisionUkm( |
| 5106 AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); | 5097 AutofillMetrics::FOUND_POSSIBLE_CVC_VALUE_IN_NON_CVC_FIELD); |
| 5107 } | 5098 } |
| 5108 | 5099 |
| 5109 TEST_F(AutofillManagerTest, | 5100 TEST_F(AutofillManagerTest, |
| 5110 UploadCreditCard_NoCvcFieldOnForm_CvcInAddressField) { | 5101 UploadCreditCard_NoCvcFieldOnForm_CvcInAddressField) { |
| 5111 EnableUkmLogging(); | |
| 5112 autofill_manager_->set_credit_card_upload_enabled(true); | 5102 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5113 | 5103 |
| 5114 // Remove the profiles that were created in the TestPersonalDataManager | 5104 // Remove the profiles that were created in the TestPersonalDataManager |
| 5115 // constructor because they would result in conflicting names that would | 5105 // constructor because they would result in conflicting names that would |
| 5116 // prevent the upload. | 5106 // prevent the upload. |
| 5117 personal_data_.ClearAutofillProfiles(); | 5107 personal_data_.ClearAutofillProfiles(); |
| 5118 | 5108 |
| 5119 // Create, fill and submit an address form in order to establish a recent | 5109 // Create, fill and submit an address form in order to establish a recent |
| 5120 // profile which can be selected for the upload request. | 5110 // profile which can be selected for the upload request. |
| 5121 FormData address_form; | 5111 FormData address_form; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5168 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. | 5158 // TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. |
| 5169 #if defined(OS_ANDROID) | 5159 #if defined(OS_ANDROID) |
| 5170 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc \ | 5160 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc \ |
| 5171 DISABLED_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc | 5161 DISABLED_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc |
| 5172 #else | 5162 #else |
| 5173 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc \ | 5163 #define MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc \ |
| 5174 UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc | 5164 UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc |
| 5175 #endif | 5165 #endif |
| 5176 TEST_F(AutofillManagerTest, | 5166 TEST_F(AutofillManagerTest, |
| 5177 MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc) { | 5167 MAYBE_UploadCreditCard_NoCvcFieldOnForm_UserEntersCvc) { |
| 5178 EnableAutofillUpstreamRequestCvcIfMissingExperimentAndUkmLogging(); | 5168 EnableAutofillUpstreamRequestCvcIfMissingExperiment(); |
| 5179 autofill_manager_->set_credit_card_upload_enabled(true); | 5169 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5180 | 5170 |
| 5181 // Remove the profiles that were created in the TestPersonalDataManager | 5171 // Remove the profiles that were created in the TestPersonalDataManager |
| 5182 // constructor because they would result in conflicting names that would | 5172 // constructor because they would result in conflicting names that would |
| 5183 // prevent the upload. | 5173 // prevent the upload. |
| 5184 personal_data_.ClearAutofillProfiles(); | 5174 personal_data_.ClearAutofillProfiles(); |
| 5185 | 5175 |
| 5186 // Create, fill and submit an address form in order to establish a recent | 5176 // Create, fill and submit an address form in order to establish a recent |
| 5187 // profile which can be selected for the upload request. | 5177 // profile which can be selected for the upload request. |
| 5188 FormData address_form; | 5178 FormData address_form; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5228 AutofillMetrics::CVC_FIELD_NOT_FOUND); | 5218 AutofillMetrics::CVC_FIELD_NOT_FOUND); |
| 5229 // Verify that the correct UKM was logged. | 5219 // Verify that the correct UKM was logged. |
| 5230 ExpectMetric( | 5220 ExpectMetric( |
| 5231 internal::kUKMCardUploadDecisionMetricName, | 5221 internal::kUKMCardUploadDecisionMetricName, |
| 5232 internal::kUKMCardUploadDecisionEntryName, | 5222 internal::kUKMCardUploadDecisionEntryName, |
| 5233 AutofillMetrics::UPLOAD_OFFERED | AutofillMetrics::CVC_FIELD_NOT_FOUND, | 5223 AutofillMetrics::UPLOAD_OFFERED | AutofillMetrics::CVC_FIELD_NOT_FOUND, |
| 5234 1 /* expected_num_matching_entries */); | 5224 1 /* expected_num_matching_entries */); |
| 5235 } | 5225 } |
| 5236 | 5226 |
| 5237 TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnFormExperimentOff) { | 5227 TEST_F(AutofillManagerTest, UploadCreditCard_NoCvcFieldOnFormExperimentOff) { |
| 5238 EnableUkmLogging(); | |
| 5239 autofill_manager_->set_credit_card_upload_enabled(true); | 5228 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5240 | 5229 |
| 5241 // Remove the profiles that were created in the TestPersonalDataManager | 5230 // Remove the profiles that were created in the TestPersonalDataManager |
| 5242 // constructor because they would result in conflicting names that would | 5231 // constructor because they would result in conflicting names that would |
| 5243 // prevent the upload. | 5232 // prevent the upload. |
| 5244 personal_data_.ClearAutofillProfiles(); | 5233 personal_data_.ClearAutofillProfiles(); |
| 5245 | 5234 |
| 5246 // Create, fill and submit an address form in order to establish a recent | 5235 // Create, fill and submit an address form in order to establish a recent |
| 5247 // profile which can be selected for the upload request. | 5236 // profile which can be selected for the upload request. |
| 5248 FormData address_form; | 5237 FormData address_form; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5293 EXPECT_EQ(1, rappor_service->GetReportsCount()); | 5282 EXPECT_EQ(1, rappor_service->GetReportsCount()); |
| 5294 std::string sample; | 5283 std::string sample; |
| 5295 rappor::RapporType type; | 5284 rappor::RapporType type; |
| 5296 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( | 5285 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( |
| 5297 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); | 5286 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); |
| 5298 EXPECT_EQ("myform.com", sample); | 5287 EXPECT_EQ("myform.com", sample); |
| 5299 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 5288 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 5300 } | 5289 } |
| 5301 | 5290 |
| 5302 TEST_F(AutofillManagerTest, UploadCreditCard_NoProfileAvailable) { | 5291 TEST_F(AutofillManagerTest, UploadCreditCard_NoProfileAvailable) { |
| 5303 EnableUkmLogging(); | |
| 5304 personal_data_.ClearAutofillProfiles(); | 5292 personal_data_.ClearAutofillProfiles(); |
| 5305 autofill_manager_->set_credit_card_upload_enabled(true); | 5293 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5306 | 5294 |
| 5307 // Don't fill or submit an address form. | 5295 // Don't fill or submit an address form. |
| 5308 | 5296 |
| 5309 // Set up our credit card form data. | 5297 // Set up our credit card form data. |
| 5310 FormData credit_card_form; | 5298 FormData credit_card_form; |
| 5311 CreateTestCreditCardFormData(&credit_card_form, true, false); | 5299 CreateTestCreditCardFormData(&credit_card_form, true, false); |
| 5312 FormsSeen(std::vector<FormData>(1, credit_card_form)); | 5300 FormsSeen(std::vector<FormData>(1, credit_card_form)); |
| 5313 | 5301 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 5341 "Autofill.CardUploadNotOfferedNoAddress", &sample, &type)); | 5329 "Autofill.CardUploadNotOfferedNoAddress", &sample, &type)); |
| 5342 EXPECT_EQ("myform.com", sample); | 5330 EXPECT_EQ("myform.com", sample); |
| 5343 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 5331 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 5344 } | 5332 } |
| 5345 | 5333 |
| 5346 TEST_F(AutofillManagerTest, UploadCreditCard_NoRecentlyUsedProfile) { | 5334 TEST_F(AutofillManagerTest, UploadCreditCard_NoRecentlyUsedProfile) { |
| 5347 // Create the test clock and set the time to a specific value. | 5335 // Create the test clock and set the time to a specific value. |
| 5348 TestAutofillClock test_clock; | 5336 TestAutofillClock test_clock; |
| 5349 test_clock.SetNow(kArbitraryTime); | 5337 test_clock.SetNow(kArbitraryTime); |
| 5350 | 5338 |
| 5351 EnableUkmLogging(); | |
| 5352 personal_data_.ClearAutofillProfiles(); | 5339 personal_data_.ClearAutofillProfiles(); |
| 5353 autofill_manager_->set_credit_card_upload_enabled(true); | 5340 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5354 | 5341 |
| 5355 // Create, fill and submit an address form in order to establish a profile. | 5342 // Create, fill and submit an address form in order to establish a profile. |
| 5356 FormData address_form; | 5343 FormData address_form; |
| 5357 test::CreateTestAddressFormData(&address_form); | 5344 test::CreateTestAddressFormData(&address_form); |
| 5358 FormsSeen({address_form}); | 5345 FormsSeen({address_form}); |
| 5359 | 5346 |
| 5360 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); | 5347 ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); |
| 5361 FormSubmitted(address_form); | 5348 FormSubmitted(address_form); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5442 FormSubmitted(credit_card_form); | 5429 FormSubmitted(credit_card_form); |
| 5443 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 5430 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 5444 | 5431 |
| 5445 // Verify that the correct histogram entry (and only that) was logged. | 5432 // Verify that the correct histogram entry (and only that) was logged. |
| 5446 ExpectUniqueCardUploadDecision(histogram_tester, | 5433 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5447 AutofillMetrics::UPLOAD_OFFERED); | 5434 AutofillMetrics::UPLOAD_OFFERED); |
| 5448 } | 5435 } |
| 5449 | 5436 |
| 5450 TEST_F(AutofillManagerTest, | 5437 TEST_F(AutofillManagerTest, |
| 5451 UploadCreditCard_CvcUnavailableAndNoProfileAvailable) { | 5438 UploadCreditCard_CvcUnavailableAndNoProfileAvailable) { |
| 5452 EnableUkmLogging(); | |
| 5453 personal_data_.ClearAutofillProfiles(); | 5439 personal_data_.ClearAutofillProfiles(); |
| 5454 autofill_manager_->set_credit_card_upload_enabled(true); | 5440 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5455 | 5441 |
| 5456 // Don't fill or submit an address form. | 5442 // Don't fill or submit an address form. |
| 5457 | 5443 |
| 5458 // Set up our credit card form data. | 5444 // Set up our credit card form data. |
| 5459 FormData credit_card_form; | 5445 FormData credit_card_form; |
| 5460 CreateTestCreditCardFormData(&credit_card_form, true, false); | 5446 CreateTestCreditCardFormData(&credit_card_form, true, false); |
| 5461 FormsSeen(std::vector<FormData>(1, credit_card_form)); | 5447 FormsSeen(std::vector<FormData>(1, credit_card_form)); |
| 5462 | 5448 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 5493 EXPECT_EQ(1, rappor_service->GetReportsCount()); | 5479 EXPECT_EQ(1, rappor_service->GetReportsCount()); |
| 5494 std::string sample; | 5480 std::string sample; |
| 5495 rappor::RapporType type; | 5481 rappor::RapporType type; |
| 5496 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( | 5482 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( |
| 5497 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); | 5483 "Autofill.CardUploadNotOfferedNoCvc", &sample, &type)); |
| 5498 EXPECT_EQ("myform.com", sample); | 5484 EXPECT_EQ("myform.com", sample); |
| 5499 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 5485 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 5500 } | 5486 } |
| 5501 | 5487 |
| 5502 TEST_F(AutofillManagerTest, UploadCreditCard_NoNameAvailable) { | 5488 TEST_F(AutofillManagerTest, UploadCreditCard_NoNameAvailable) { |
| 5503 EnableUkmLogging(); | |
| 5504 personal_data_.ClearAutofillProfiles(); | 5489 personal_data_.ClearAutofillProfiles(); |
| 5505 autofill_manager_->set_credit_card_upload_enabled(true); | 5490 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5506 | 5491 |
| 5507 // Create, fill and submit an address form in order to establish a recent | 5492 // Create, fill and submit an address form in order to establish a recent |
| 5508 // profile which can be selected for the upload request. | 5493 // profile which can be selected for the upload request. |
| 5509 FormData address_form; | 5494 FormData address_form; |
| 5510 test::CreateTestAddressFormData(&address_form); | 5495 test::CreateTestAddressFormData(&address_form); |
| 5511 FormsSeen(std::vector<FormData>(1, address_form)); | 5496 FormsSeen(std::vector<FormData>(1, address_form)); |
| 5512 // But omit the name: | 5497 // But omit the name: |
| 5513 ManuallyFillAddressForm("", "", "77401", "US", &address_form); | 5498 ManuallyFillAddressForm("", "", "77401", "US", &address_form); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 5542 EXPECT_EQ(1, rappor_service->GetReportsCount()); | 5527 EXPECT_EQ(1, rappor_service->GetReportsCount()); |
| 5543 std::string sample; | 5528 std::string sample; |
| 5544 rappor::RapporType type; | 5529 rappor::RapporType type; |
| 5545 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( | 5530 EXPECT_TRUE(rappor_service->GetRecordedSampleForMetric( |
| 5546 "Autofill.CardUploadNotOfferedNoName", &sample, &type)); | 5531 "Autofill.CardUploadNotOfferedNoName", &sample, &type)); |
| 5547 EXPECT_EQ("myform.com", sample); | 5532 EXPECT_EQ("myform.com", sample); |
| 5548 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); | 5533 EXPECT_EQ(rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, type); |
| 5549 } | 5534 } |
| 5550 | 5535 |
| 5551 TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesConflict) { | 5536 TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesConflict) { |
| 5552 EnableUkmLogging(); | |
| 5553 personal_data_.ClearAutofillProfiles(); | 5537 personal_data_.ClearAutofillProfiles(); |
| 5554 autofill_manager_->set_credit_card_upload_enabled(true); | 5538 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5555 | 5539 |
| 5556 // Create, fill and submit two address forms with different zip codes. | 5540 // Create, fill and submit two address forms with different zip codes. |
| 5557 FormData address_form1, address_form2; | 5541 FormData address_form1, address_form2; |
| 5558 test::CreateTestAddressFormData(&address_form1); | 5542 test::CreateTestAddressFormData(&address_form1); |
| 5559 test::CreateTestAddressFormData(&address_form2); | 5543 test::CreateTestAddressFormData(&address_form2); |
| 5560 | 5544 |
| 5561 std::vector<FormData> address_forms; | 5545 std::vector<FormData> address_forms; |
| 5562 address_forms.push_back(address_form1); | 5546 address_forms.push_back(address_form1); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 5592 | 5576 |
| 5593 // Verify that the correct histogram entry (and only that) was logged. | 5577 // Verify that the correct histogram entry (and only that) was logged. |
| 5594 ExpectUniqueCardUploadDecision( | 5578 ExpectUniqueCardUploadDecision( |
| 5595 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); | 5579 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); |
| 5596 // Verify that the correct UKM was logged. | 5580 // Verify that the correct UKM was logged. |
| 5597 ExpectCardUploadDecisionUkm( | 5581 ExpectCardUploadDecisionUkm( |
| 5598 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); | 5582 AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_ZIPS); |
| 5599 } | 5583 } |
| 5600 | 5584 |
| 5601 TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) { | 5585 TEST_F(AutofillManagerTest, UploadCreditCard_ZipCodesHavePrefixMatch) { |
| 5602 EnableUkmLogging(); | |
| 5603 personal_data_.ClearAutofillProfiles(); | 5586 personal_data_.ClearAutofillProfiles(); |
| 5604 autofill_manager_->set_credit_card_upload_enabled(true); | 5587 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5605 | 5588 |
| 5606 // Create, fill and submit two address forms with different zip codes. | 5589 // Create, fill and submit two address forms with different zip codes. |
| 5607 FormData address_form1, address_form2; | 5590 FormData address_form1, address_form2; |
| 5608 test::CreateTestAddressFormData(&address_form1); | 5591 test::CreateTestAddressFormData(&address_form1); |
| 5609 test::CreateTestAddressFormData(&address_form2); | 5592 test::CreateTestAddressFormData(&address_form2); |
| 5610 | 5593 |
| 5611 std::vector<FormData> address_forms; | 5594 std::vector<FormData> address_forms; |
| 5612 address_forms.push_back(address_form1); | 5595 address_forms.push_back(address_form1); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 5639 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 5622 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 5640 | 5623 |
| 5641 // Verify that the correct histogram entry (and only that) was logged. | 5624 // Verify that the correct histogram entry (and only that) was logged. |
| 5642 ExpectUniqueCardUploadDecision(histogram_tester, | 5625 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5643 AutofillMetrics::UPLOAD_OFFERED); | 5626 AutofillMetrics::UPLOAD_OFFERED); |
| 5644 // Verify that the correct UKM was logged. | 5627 // Verify that the correct UKM was logged. |
| 5645 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); | 5628 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); |
| 5646 } | 5629 } |
| 5647 | 5630 |
| 5648 TEST_F(AutofillManagerTest, UploadCreditCard_NoZipCodeAvailable) { | 5631 TEST_F(AutofillManagerTest, UploadCreditCard_NoZipCodeAvailable) { |
| 5649 EnableUkmLogging(); | |
| 5650 personal_data_.ClearAutofillProfiles(); | 5632 personal_data_.ClearAutofillProfiles(); |
| 5651 autofill_manager_->set_credit_card_upload_enabled(true); | 5633 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5652 | 5634 |
| 5653 // Create, fill and submit an address form in order to establish a recent | 5635 // Create, fill and submit an address form in order to establish a recent |
| 5654 // profile which can be selected for the upload request. | 5636 // profile which can be selected for the upload request. |
| 5655 FormData address_form; | 5637 FormData address_form; |
| 5656 test::CreateTestAddressFormData(&address_form); | 5638 test::CreateTestAddressFormData(&address_form); |
| 5657 FormsSeen(std::vector<FormData>(1, address_form)); | 5639 FormsSeen(std::vector<FormData>(1, address_form)); |
| 5658 // Autofill's validation requirements for Venezuala ("VE", see | 5640 // Autofill's validation requirements for Venezuala ("VE", see |
| 5659 // src/components/autofill/core/browser/country_data.cc) do not require zip | 5641 // src/components/autofill/core/browser/country_data.cc) do not require zip |
| (...skipping 25 matching lines...) Expand all Loading... |
| 5685 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); | 5667 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); |
| 5686 | 5668 |
| 5687 // Verify that the correct histogram entry (and only that) was logged. | 5669 // Verify that the correct histogram entry (and only that) was logged. |
| 5688 ExpectUniqueCardUploadDecision( | 5670 ExpectUniqueCardUploadDecision( |
| 5689 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); | 5671 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); |
| 5690 // Verify that the correct UKM was logged. | 5672 // Verify that the correct UKM was logged. |
| 5691 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); | 5673 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_NOT_OFFERED_NO_ZIP_CODE); |
| 5692 } | 5674 } |
| 5693 | 5675 |
| 5694 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleInitial) { | 5676 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleInitial) { |
| 5695 EnableUkmLogging(); | |
| 5696 personal_data_.ClearAutofillProfiles(); | 5677 personal_data_.ClearAutofillProfiles(); |
| 5697 autofill_manager_->set_credit_card_upload_enabled(true); | 5678 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5698 | 5679 |
| 5699 // Create, fill and submit two address forms with different names. | 5680 // Create, fill and submit two address forms with different names. |
| 5700 FormData address_form1, address_form2; | 5681 FormData address_form1, address_form2; |
| 5701 test::CreateTestAddressFormData(&address_form1); | 5682 test::CreateTestAddressFormData(&address_form1); |
| 5702 test::CreateTestAddressFormData(&address_form2); | 5683 test::CreateTestAddressFormData(&address_form2); |
| 5703 FormsSeen({address_form1, address_form2}); | 5684 FormsSeen({address_form1, address_form2}); |
| 5704 | 5685 |
| 5705 // Names can be different case. | 5686 // Names can be different case. |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5776 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); | 5757 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); |
| 5777 FormSubmitted(credit_card_form); | 5758 FormSubmitted(credit_card_form); |
| 5778 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 5759 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 5779 | 5760 |
| 5780 // Verify that the correct histogram entry (and only that) was logged. | 5761 // Verify that the correct histogram entry (and only that) was logged. |
| 5781 ExpectUniqueCardUploadDecision(histogram_tester, | 5762 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5782 AutofillMetrics::UPLOAD_OFFERED); | 5763 AutofillMetrics::UPLOAD_OFFERED); |
| 5783 } | 5764 } |
| 5784 | 5765 |
| 5785 TEST_F(AutofillManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) { | 5766 TEST_F(AutofillManagerTest, UploadCreditCard_NoMiddleInitialInCCForm) { |
| 5786 EnableUkmLogging(); | |
| 5787 personal_data_.ClearAutofillProfiles(); | 5767 personal_data_.ClearAutofillProfiles(); |
| 5788 autofill_manager_->set_credit_card_upload_enabled(true); | 5768 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5789 | 5769 |
| 5790 // Create, fill and submit two address forms with different names. | 5770 // Create, fill and submit two address forms with different names. |
| 5791 FormData address_form1, address_form2; | 5771 FormData address_form1, address_form2; |
| 5792 test::CreateTestAddressFormData(&address_form1); | 5772 test::CreateTestAddressFormData(&address_form1); |
| 5793 test::CreateTestAddressFormData(&address_form2); | 5773 test::CreateTestAddressFormData(&address_form2); |
| 5794 FormsSeen({address_form1, address_form2}); | 5774 FormsSeen({address_form1, address_form2}); |
| 5795 | 5775 |
| 5796 // Names can have different variations of middle initials. | 5776 // Names can have different variations of middle initials. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5861 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); | 5841 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); |
| 5862 FormSubmitted(credit_card_form); | 5842 FormSubmitted(credit_card_form); |
| 5863 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 5843 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 5864 | 5844 |
| 5865 // Verify that the correct histogram entry (and only that) was logged. | 5845 // Verify that the correct histogram entry (and only that) was logged. |
| 5866 ExpectUniqueCardUploadDecision(histogram_tester, | 5846 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5867 AutofillMetrics::UPLOAD_OFFERED); | 5847 AutofillMetrics::UPLOAD_OFFERED); |
| 5868 } | 5848 } |
| 5869 | 5849 |
| 5870 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleName) { | 5850 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormHasMiddleName) { |
| 5871 EnableUkmLogging(); | |
| 5872 personal_data_.ClearAutofillProfiles(); | 5851 personal_data_.ClearAutofillProfiles(); |
| 5873 autofill_manager_->set_credit_card_upload_enabled(true); | 5852 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5874 | 5853 |
| 5875 // Create, fill and submit address form without middle name. | 5854 // Create, fill and submit address form without middle name. |
| 5876 FormData address_form; | 5855 FormData address_form; |
| 5877 test::CreateTestAddressFormData(&address_form); | 5856 test::CreateTestAddressFormData(&address_form); |
| 5878 FormsSeen({address_form}); | 5857 FormsSeen({address_form}); |
| 5879 ManuallyFillAddressForm("John", "Adams", "77401", "US", &address_form); | 5858 ManuallyFillAddressForm("John", "Adams", "77401", "US", &address_form); |
| 5880 FormSubmitted(address_form); | 5859 FormSubmitted(address_form); |
| 5881 | 5860 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5937 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); | 5916 EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); |
| 5938 FormSubmitted(credit_card_form); | 5917 FormSubmitted(credit_card_form); |
| 5939 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); | 5918 EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); |
| 5940 | 5919 |
| 5941 // Verify that the correct histogram entry (and only that) was logged. | 5920 // Verify that the correct histogram entry (and only that) was logged. |
| 5942 ExpectUniqueCardUploadDecision( | 5921 ExpectUniqueCardUploadDecision( |
| 5943 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); | 5922 histogram_tester, AutofillMetrics::UPLOAD_NOT_OFFERED_CONFLICTING_NAMES); |
| 5944 } | 5923 } |
| 5945 | 5924 |
| 5946 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormRemovesMiddleName) { | 5925 TEST_F(AutofillManagerTest, UploadCreditCard_CCFormRemovesMiddleName) { |
| 5947 EnableUkmLogging(); | |
| 5948 personal_data_.ClearAutofillProfiles(); | 5926 personal_data_.ClearAutofillProfiles(); |
| 5949 autofill_manager_->set_credit_card_upload_enabled(true); | 5927 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5950 | 5928 |
| 5951 // Create, fill and submit address form with middle name. | 5929 // Create, fill and submit address form with middle name. |
| 5952 FormData address_form; | 5930 FormData address_form; |
| 5953 test::CreateTestAddressFormData(&address_form); | 5931 test::CreateTestAddressFormData(&address_form); |
| 5954 FormsSeen({address_form}); | 5932 FormsSeen({address_form}); |
| 5955 ManuallyFillAddressForm("John Quincy", "Adams", "77401", "US", &address_form); | 5933 ManuallyFillAddressForm("John Quincy", "Adams", "77401", "US", &address_form); |
| 5956 FormSubmitted(address_form); | 5934 FormSubmitted(address_form); |
| 5957 | 5935 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 5975 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 5953 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 5976 | 5954 |
| 5977 // Verify that the correct histogram entry (and only that) was logged. | 5955 // Verify that the correct histogram entry (and only that) was logged. |
| 5978 ExpectUniqueCardUploadDecision(histogram_tester, | 5956 ExpectUniqueCardUploadDecision(histogram_tester, |
| 5979 AutofillMetrics::UPLOAD_OFFERED); | 5957 AutofillMetrics::UPLOAD_OFFERED); |
| 5980 // Verify that the correct UKM was logged. | 5958 // Verify that the correct UKM was logged. |
| 5981 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); | 5959 ExpectCardUploadDecisionUkm(AutofillMetrics::UPLOAD_OFFERED); |
| 5982 } | 5960 } |
| 5983 | 5961 |
| 5984 TEST_F(AutofillManagerTest, UploadCreditCard_NamesHaveToMatch) { | 5962 TEST_F(AutofillManagerTest, UploadCreditCard_NamesHaveToMatch) { |
| 5985 EnableUkmLogging(); | |
| 5986 personal_data_.ClearAutofillProfiles(); | 5963 personal_data_.ClearAutofillProfiles(); |
| 5987 autofill_manager_->set_credit_card_upload_enabled(true); | 5964 autofill_manager_->set_credit_card_upload_enabled(true); |
| 5988 | 5965 |
| 5989 // Create, fill and submit two address forms with different names. | 5966 // Create, fill and submit two address forms with different names. |
| 5990 FormData address_form1, address_form2; | 5967 FormData address_form1, address_form2; |
| 5991 test::CreateTestAddressFormData(&address_form1); | 5968 test::CreateTestAddressFormData(&address_form1); |
| 5992 test::CreateTestAddressFormData(&address_form2); | 5969 test::CreateTestAddressFormData(&address_form2); |
| 5993 | 5970 |
| 5994 std::vector<FormData> address_forms; | 5971 std::vector<FormData> address_forms; |
| 5995 address_forms.push_back(address_form1); | 5972 address_forms.push_back(address_form1); |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6235 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 6212 EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); |
| 6236 | 6213 |
| 6237 // Verify that UMA for "DaysSincePreviousUse" is logged. | 6214 // Verify that UMA for "DaysSincePreviousUse" is logged. |
| 6238 histogram_tester.ExpectUniqueSample( | 6215 histogram_tester.ExpectUniqueSample( |
| 6239 "Autofill.DaysSincePreviousUseAtSubmission.Profile", | 6216 "Autofill.DaysSincePreviousUseAtSubmission.Profile", |
| 6240 (kMuchLaterTime - kArbitraryTime).InDays(), | 6217 (kMuchLaterTime - kArbitraryTime).InDays(), |
| 6241 /*expected_count=*/1); | 6218 /*expected_count=*/1); |
| 6242 } | 6219 } |
| 6243 | 6220 |
| 6244 TEST_F(AutofillManagerTest, UploadCreditCard_UploadDetailsFails) { | 6221 TEST_F(AutofillManagerTest, UploadCreditCard_UploadDetailsFails) { |
| 6245 EnableUkmLogging(); | |
| 6246 personal_data_.ClearAutofillProfiles(); | 6222 personal_data_.ClearAutofillProfiles(); |
| 6247 autofill_manager_->set_credit_card_upload_enabled(true); | 6223 autofill_manager_->set_credit_card_upload_enabled(true); |
| 6248 | 6224 |
| 6249 // Anything other than "en-US" will cause GetUploadDetails to return a failure | 6225 // Anything other than "en-US" will cause GetUploadDetails to return a failure |
| 6250 // response. | 6226 // response. |
| 6251 autofill_manager_->set_app_locale("pt-BR"); | 6227 autofill_manager_->set_app_locale("pt-BR"); |
| 6252 | 6228 |
| 6253 // Create, fill and submit an address form in order to establish a recent | 6229 // Create, fill and submit an address form in order to establish a recent |
| 6254 // profile which can be selected for the upload request. | 6230 // profile which can be selected for the upload request. |
| 6255 FormData address_form; | 6231 FormData address_form; |
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6884 // Suggestions should be displayed. | 6860 // Suggestions should be displayed. |
| 6885 for (const FormFieldData& field : form.fields) { | 6861 for (const FormFieldData& field : form.fields) { |
| 6886 GetAutofillSuggestions(form, field); | 6862 GetAutofillSuggestions(form, field); |
| 6887 EXPECT_TRUE(external_delegate_->on_suggestions_returned_seen()); | 6863 EXPECT_TRUE(external_delegate_->on_suggestions_returned_seen()); |
| 6888 } | 6864 } |
| 6889 } | 6865 } |
| 6890 | 6866 |
| 6891 // Test that a sign-in form submission sends an upload with types matching the | 6867 // Test that a sign-in form submission sends an upload with types matching the |
| 6892 // fields. | 6868 // fields. |
| 6893 TEST_F(AutofillManagerTest, SignInFormSubmission_Upload) { | 6869 TEST_F(AutofillManagerTest, SignInFormSubmission_Upload) { |
| 6894 EnableUkmLogging(); | |
| 6895 // Set up our form data (it's already filled out with user data). | 6870 // Set up our form data (it's already filled out with user data). |
| 6896 FormData form; | 6871 FormData form; |
| 6897 form.origin = GURL("http://myform.com/form.html"); | 6872 form.origin = GURL("http://myform.com/form.html"); |
| 6898 form.action = GURL("http://myform.com/submit.html"); | 6873 form.action = GURL("http://myform.com/submit.html"); |
| 6899 | 6874 |
| 6900 std::vector<ServerFieldTypeSet> expected_types; | 6875 std::vector<ServerFieldTypeSet> expected_types; |
| 6901 ServerFieldTypeSet types; | 6876 ServerFieldTypeSet types; |
| 6902 | 6877 |
| 6903 FormFieldData field; | 6878 FormFieldData field; |
| 6904 test::CreateTestFormField("Email", "email", "theking@gmail.com", "text", | 6879 test::CreateTestFormField("Email", "email", "theking@gmail.com", "text", |
| 6905 &field); | 6880 &field); |
| 6906 form.fields.push_back(field); | 6881 form.fields.push_back(field); |
| 6907 types.insert(EMAIL_ADDRESS); | 6882 types.insert(EMAIL_ADDRESS); |
| 6908 expected_types.push_back(types); | 6883 expected_types.push_back(types); |
| 6909 | 6884 |
| 6910 test::CreateTestFormField("Password", "pw", "secret", "password", &field); | 6885 test::CreateTestFormField("Password", "pw", "secret", "password", &field); |
| 6911 form.fields.push_back(field); | 6886 form.fields.push_back(field); |
| 6887 FormsSeen(std::vector<FormData>(1, form)); |
| 6912 types.clear(); | 6888 types.clear(); |
| 6913 types.insert(PASSWORD); | 6889 types.insert(PASSWORD); |
| 6914 expected_types.push_back(types); | 6890 expected_types.push_back(types); |
| 6915 | 6891 |
| 6916 FormsSeen({form}); | 6892 FormsSeen({form}); |
| 6917 | 6893 |
| 6918 // We will expect these types in the upload and no observed submission. (the | 6894 // We will expect these types in the upload and no observed submission. (the |
| 6919 // callback initiated by WaitForAsyncUploadProcess checks these expectations.) | 6895 // callback initiated by WaitForAsyncUploadProcess checks these expectations.) |
| 6920 autofill_manager_->set_expected_submitted_field_types(expected_types); | 6896 autofill_manager_->set_expected_submitted_field_types(expected_types); |
| 6921 autofill_manager_->set_expected_observed_submission(true); | 6897 autofill_manager_->set_expected_observed_submission(true); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 6937 | 6913 |
| 6938 // Wait for upload to complete (will check expected types as well). | 6914 // Wait for upload to complete (will check expected types as well). |
| 6939 autofill_manager_->WaitForAsyncUploadProcess(); | 6915 autofill_manager_->WaitForAsyncUploadProcess(); |
| 6940 | 6916 |
| 6941 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); | 6917 EXPECT_EQ(signature, autofill_manager_->GetSubmittedFormSignature()); |
| 6942 EXPECT_NE(uploaded_available_types.end(), | 6918 EXPECT_NE(uploaded_available_types.end(), |
| 6943 uploaded_available_types.find(autofill::PASSWORD)); | 6919 uploaded_available_types.find(autofill::PASSWORD)); |
| 6944 } | 6920 } |
| 6945 | 6921 |
| 6946 } // namespace autofill | 6922 } // namespace autofill |
| OLD | NEW |