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

Unified Diff: components/autofill/core/browser/autofill_manager_unittest.cc

Issue 1457793002: [Autofill] No longer pass FormStructure pointers in ParseQueryResponse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added AutofillManager tests Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/autofill_manager_unittest.cc
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index e2c034656379f16a1811f298a55aaa3fe206e66d..648b2d3052c9aaf01c4a725e84a5cf34722fd49b 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -2592,6 +2592,88 @@ TEST_F(AutofillManagerTest, AutocompleteOffRespectedForAutocomplete) {
GetAutofillSuggestions(form, *field);
}
+// Test that OnLoadedServerPredictions can obtain the FormStructure with the
+// signature of the queried form and apply type predictions.
+TEST_F(AutofillManagerTest, OnLoadedServerPredictions) {
+ // Set up our form data.
+ FormData form;
+ test::CreateTestAddressFormData(&form);
+
+ // Simulate having seen this form on page load.
+ // |form_structure| will be owned by |autofill_manager_|.
+ TestFormStructure* form_structure = new TestFormStructure(form);
+ form_structure->DetermineHeuristicTypes();
+ autofill_manager_->AddSeenForm(form_structure);
+
+ std::string xml = "<autofillqueryresponse>"
+ "<field autofilltype=\"3\" />" // This is tested below.
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"3\" />"
+ "<field autofilltype=\"2\" />"
+ "<field autofilltype=\"61\"/>"
+ "</autofillqueryresponse>";
+ std::vector<std::string> signatures;
+ signatures.push_back(form_structure->FormSignature());
+
+ base::HistogramTester histogram_tester;
+ autofill_manager_->OnLoadedServerPredictions(xml, signatures);
+ // Verify that FormStructure::ParseQueryResponse was called (here and below).
+ histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse",
+ AutofillMetrics::QUERY_RESPONSE_RECEIVED,
+ 1);
+ histogram_tester.ExpectBucketCount("Autofill.ServerQueryResponse",
+ AutofillMetrics::QUERY_RESPONSE_PARSED,
+ 1);
+ // We expect the server type to have been applied to the first field.
+ EXPECT_EQ(NAME_FIRST, form_structure->field(0)->Type().GetStorableType());
+}
+
+// Test that OnLoadedServerPredictions does not call ParseQueryResponse if the
+// AutofillManager has been reset between the time the query was sent and the
+// response received.
+TEST_F(AutofillManagerTest, OnLoadedServerPredictions_ResetManager) {
+ // Set up our form data.
+ FormData form;
+ test::CreateTestAddressFormData(&form);
+
+ // Simulate having seen this form on page load.
+ // |form_structure| will be owned by |autofill_manager_|.
+ TestFormStructure* form_structure = new TestFormStructure(form);
+ form_structure->DetermineHeuristicTypes();
+ autofill_manager_->AddSeenForm(form_structure);
+
+ std::string xml = "<autofillqueryresponse>"
+ "<field autofilltype=\"3\" />" // This is tested below.
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"0\" />"
+ "<field autofilltype=\"3\" />"
+ "<field autofilltype=\"2\" />"
+ "<field autofilltype=\"61\"/>"
+ "</autofillqueryresponse>";
+ std::vector<std::string> signatures;
+ signatures.push_back(form_structure->FormSignature());
+
+ // Reset the manager (such as during a navigation).
+ autofill_manager_->Reset();
+
+ base::HistogramTester histogram_tester;
+ autofill_manager_->OnLoadedServerPredictions(xml, signatures);
+
+ // Verify that FormStructure::ParseQueryResponse was NOT called.
+ histogram_tester.ExpectTotalCount("Autofill.ServerQueryResponse", 0);
+}
+
// Test that we are able to save form data when forms are submitted and we only
// have server data for the field types.
TEST_F(AutofillManagerTest, FormSubmittedServerTypes) {
« no previous file with comments | « components/autofill/core/browser/autofill_manager.cc ('k') | components/autofill/core/browser/form_structure.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698