OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_download_manager.h" | 5 #include "components/autofill/core/browser/autofill_download_manager.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
| 8 #include <utility> |
8 | 9 |
9 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "base/test/histogram_tester.h" | 14 #include "base/test/histogram_tester.h" |
14 #include "base/test/test_timeouts.h" | 15 #include "base/test/test_timeouts.h" |
15 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
16 #include "components/autofill/core/browser/autofill_field.h" | 17 #include "components/autofill/core/browser/autofill_field.h" |
17 #include "components/autofill/core/browser/autofill_metrics.h" | 18 #include "components/autofill/core/browser/autofill_metrics.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 download_manager_(&driver_, prefs_.get(), this) { | 75 download_manager_(&driver_, prefs_.get(), this) { |
75 driver_.SetURLRequestContext(request_context_.get()); | 76 driver_.SetURLRequestContext(request_context_.get()); |
76 } | 77 } |
77 | 78 |
78 void LimitCache(size_t cache_size) { | 79 void LimitCache(size_t cache_size) { |
79 download_manager_.set_max_form_cache_size(cache_size); | 80 download_manager_.set_max_form_cache_size(cache_size); |
80 } | 81 } |
81 | 82 |
82 // AutofillDownloadManager::Observer implementation. | 83 // AutofillDownloadManager::Observer implementation. |
83 void OnLoadedServerPredictions( | 84 void OnLoadedServerPredictions( |
84 const std::string& response_xml, | 85 std::string response_xml, |
85 const std::vector<std::string>& form_signatures) override { | 86 const std::vector<std::string>& form_signatures) override { |
86 ResponseData response; | 87 ResponseData response; |
87 response.response = response_xml; | 88 response.response = std::move(response_xml); |
88 response.type_of_response = QUERY_SUCCESSFULL; | 89 response.type_of_response = QUERY_SUCCESSFULL; |
89 responses_.push_back(response); | 90 responses_.push_back(response); |
90 } | 91 } |
91 | 92 |
92 void OnUploadedPossibleFieldTypes() override { | 93 void OnUploadedPossibleFieldTypes() override { |
93 ResponseData response; | 94 ResponseData response; |
94 response.type_of_response = UPLOAD_SUCCESSFULL; | 95 response.type_of_response = UPLOAD_SUCCESSFULL; |
95 responses_.push_back(response); | 96 responses_.push_back(response); |
96 } | 97 } |
97 | 98 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 field.label = ASCIIToUTF16("password"); | 167 field.label = ASCIIToUTF16("password"); |
167 field.name = ASCIIToUTF16("password"); | 168 field.name = ASCIIToUTF16("password"); |
168 field.form_control_type = "password"; | 169 field.form_control_type = "password"; |
169 form.fields.push_back(field); | 170 form.fields.push_back(field); |
170 | 171 |
171 field.label = base::string16(); | 172 field.label = base::string16(); |
172 field.name = ASCIIToUTF16("Submit"); | 173 field.name = ASCIIToUTF16("Submit"); |
173 field.form_control_type = "submit"; | 174 field.form_control_type = "submit"; |
174 form.fields.push_back(field); | 175 form.fields.push_back(field); |
175 | 176 |
176 FormStructure *form_structure = new FormStructure(form); | 177 FormStructure* form_structure = new FormStructure(form); |
177 ScopedVector<FormStructure> form_structures; | 178 ScopedVector<FormStructure> form_structures; |
178 form_structures.push_back(form_structure); | 179 form_structures.push_back(form_structure); |
179 | 180 |
180 form.fields.clear(); | 181 form.fields.clear(); |
181 | 182 |
182 field.label = ASCIIToUTF16("address"); | 183 field.label = ASCIIToUTF16("address"); |
183 field.name = ASCIIToUTF16("address"); | 184 field.name = ASCIIToUTF16("address"); |
184 field.form_control_type = "text"; | 185 field.form_control_type = "text"; |
185 form.fields.push_back(field); | 186 form.fields.push_back(field); |
186 | 187 |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 form.fields.push_back(field); | 425 form.fields.push_back(field); |
425 | 426 |
426 field.label = ASCIIToUTF16("First Name"); | 427 field.label = ASCIIToUTF16("First Name"); |
427 field.name = ASCIIToUTF16("firstname"); | 428 field.name = ASCIIToUTF16("firstname"); |
428 form.fields.push_back(field); | 429 form.fields.push_back(field); |
429 | 430 |
430 field.label = ASCIIToUTF16("Last Name"); | 431 field.label = ASCIIToUTF16("Last Name"); |
431 field.name = ASCIIToUTF16("lastname"); | 432 field.name = ASCIIToUTF16("lastname"); |
432 form.fields.push_back(field); | 433 form.fields.push_back(field); |
433 | 434 |
434 FormStructure *form_structure = new FormStructure(form); | 435 FormStructure* form_structure = new FormStructure(form); |
435 ScopedVector<FormStructure> form_structures0; | 436 ScopedVector<FormStructure> form_structures0; |
436 form_structures0.push_back(form_structure); | 437 form_structures0.push_back(form_structure); |
437 | 438 |
438 // Add a slightly different form, which should result in a different request. | 439 // Add a slightly different form, which should result in a different request. |
439 field.label = ASCIIToUTF16("email"); | 440 field.label = ASCIIToUTF16("email"); |
440 field.name = ASCIIToUTF16("email"); | 441 field.name = ASCIIToUTF16("email"); |
441 form.fields.push_back(field); | 442 form.fields.push_back(field); |
442 form_structure = new FormStructure(form); | 443 form_structure = new FormStructure(form); |
443 ScopedVector<FormStructure> form_structures1; | 444 ScopedVector<FormStructure> form_structures1; |
444 form_structures1.push_back(form_structure); | 445 form_structures1.push_back(form_structure); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 fetcher = factory.GetFetcherByID(3); | 556 fetcher = factory.GetFetcherByID(3); |
556 ASSERT_TRUE(fetcher); | 557 ASSERT_TRUE(fetcher); |
557 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); | 558 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); |
558 ASSERT_EQ(1U, responses_.size()); | 559 ASSERT_EQ(1U, responses_.size()); |
559 EXPECT_EQ(responses[0], responses_.front().response); | 560 EXPECT_EQ(responses[0], responses_.front().response); |
560 } | 561 } |
561 | 562 |
562 TEST_F(AutofillDownloadTest, QueryRequestIsGzipped) { | 563 TEST_F(AutofillDownloadTest, QueryRequestIsGzipped) { |
563 // Expected query (uncompressed for visual verification). | 564 // Expected query (uncompressed for visual verification). |
564 const char* kExpectedQueryXml = | 565 const char* kExpectedQueryXml = |
565 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | 566 "<?xml version=\"1.0\"?>\n" |
566 "<autofillquery clientversion=\"6.1.1715.1442/en (GGLL)\">" | 567 "<autofillquery clientversion=\"6.1.1715.1442/en (GGLL)\">" |
567 "<form signature=\"14546501144368603154\">" | 568 "<form signature=\"14546501144368603154\">" |
568 "<field signature=\"239111655\"/>" | 569 "<field signature=\"239111655\"/>" |
569 "<field signature=\"3763331450\"/>" | 570 "<field signature=\"3763331450\"/>" |
570 "<field signature=\"3494530716\"/>" | 571 "<field signature=\"3494530716\"/>" |
571 "</form></autofillquery>"; | 572 "</form></autofillquery>\n"; |
572 | 573 |
573 // Create and register factory. | 574 // Create and register factory. |
574 net::TestURLFetcherFactory factory; | 575 net::TestURLFetcherFactory factory; |
575 | 576 |
576 FormData form; | 577 FormData form; |
577 | 578 |
578 FormFieldData field; | 579 FormFieldData field; |
579 field.form_control_type = "text"; | 580 field.form_control_type = "text"; |
580 | 581 |
581 field.label = ASCIIToUTF16("username"); | 582 field.label = ASCIIToUTF16("username"); |
(...skipping 24 matching lines...) Expand all Loading... |
606 EXPECT_EQ(Compress(kExpectedQueryXml), fetcher->upload_data()); | 607 EXPECT_EQ(Compress(kExpectedQueryXml), fetcher->upload_data()); |
607 | 608 |
608 // Proper content-encoding header is defined. | 609 // Proper content-encoding header is defined. |
609 net::HttpRequestHeaders headers; | 610 net::HttpRequestHeaders headers; |
610 fetcher->GetExtraRequestHeaders(&headers); | 611 fetcher->GetExtraRequestHeaders(&headers); |
611 std::string header; | 612 std::string header; |
612 EXPECT_TRUE(headers.GetHeader("content-encoding", &header)); | 613 EXPECT_TRUE(headers.GetHeader("content-encoding", &header)); |
613 EXPECT_EQ("gzip", header); | 614 EXPECT_EQ("gzip", header); |
614 | 615 |
615 // Expect that the compression is logged. | 616 // Expect that the compression is logged. |
616 histogram.ExpectUniqueSample("Autofill.PayloadCompressionRatio.Query", 73, 1); | 617 histogram.ExpectUniqueSample("Autofill.PayloadCompressionRatio.Query", 72, 1); |
617 } | 618 } |
618 | 619 |
619 TEST_F(AutofillDownloadTest, UploadRequestIsGzipped) { | 620 TEST_F(AutofillDownloadTest, UploadRequestIsGzipped) { |
620 // Expected upload (uncompressed for visual verification). | 621 // Expected upload (uncompressed for visual verification). |
621 const char* kExpectedUploadXml = | 622 const char* kExpectedUploadXml = |
622 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | 623 "<?xml version=\"1.0\"?>\n" |
623 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" | 624 "<autofillupload clientversion=\"6.1.1715.1442/en (GGLL)\"" |
624 " formsignature=\"14546501144368603154\" autofillused=\"true\"" | 625 " formsignature=\"14546501144368603154\" autofillused=\"true\"" |
625 " datapresent=\"\"/>"; | 626 " datapresent=\"\"/>\n"; |
626 | 627 |
627 // Create and register factory. | 628 // Create and register factory. |
628 net::TestURLFetcherFactory factory; | 629 net::TestURLFetcherFactory factory; |
629 | 630 |
630 FormData form; | 631 FormData form; |
631 | 632 |
632 FormFieldData field; | 633 FormFieldData field; |
633 field.form_control_type = "text"; | 634 field.form_control_type = "text"; |
634 | 635 |
635 field.label = ASCIIToUTF16("username"); | 636 field.label = ASCIIToUTF16("username"); |
(...skipping 27 matching lines...) Expand all Loading... |
663 EXPECT_EQ(Compress(kExpectedUploadXml), fetcher->upload_data()); | 664 EXPECT_EQ(Compress(kExpectedUploadXml), fetcher->upload_data()); |
664 | 665 |
665 // Proper content-encoding header is defined. | 666 // Proper content-encoding header is defined. |
666 net::HttpRequestHeaders headers; | 667 net::HttpRequestHeaders headers; |
667 fetcher->GetExtraRequestHeaders(&headers); | 668 fetcher->GetExtraRequestHeaders(&headers); |
668 std::string header; | 669 std::string header; |
669 EXPECT_TRUE(headers.GetHeader("content-encoding", &header)); | 670 EXPECT_TRUE(headers.GetHeader("content-encoding", &header)); |
670 EXPECT_EQ("gzip", header); | 671 EXPECT_EQ("gzip", header); |
671 | 672 |
672 // Expect that the compression is logged. | 673 // Expect that the compression is logged. |
673 histogram.ExpectUniqueSample("Autofill.PayloadCompressionRatio.Upload", 92, | 674 histogram.ExpectUniqueSample("Autofill.PayloadCompressionRatio.Upload", 95, |
674 1); | 675 1); |
675 } | 676 } |
676 | 677 |
677 } // namespace autofill | 678 } // namespace autofill |
OLD | NEW |