| 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 | 
|---|