| 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 <list> | 5 #include <list> |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/test/test_timeouts.h" | 10 #include "base/test/test_timeouts.h" |
| 11 #include "chrome/test/base/testing_profile.h" | 11 #include "chrome/test/base/testing_profile.h" |
| 12 #include "components/autofill/core/browser/autofill_download.h" | 12 #include "components/autofill/core/browser/autofill_download.h" |
| 13 #include "components/autofill/core/browser/autofill_field.h" | 13 #include "components/autofill/core/browser/autofill_field.h" |
| 14 #include "components/autofill/core/browser/autofill_metrics.h" | 14 #include "components/autofill/core/browser/autofill_metrics.h" |
| 15 #include "components/autofill/core/browser/autofill_type.h" | 15 #include "components/autofill/core/browser/autofill_type.h" |
| 16 #include "components/autofill/core/browser/form_structure.h" | 16 #include "components/autofill/core/browser/form_structure.h" |
| 17 #include "components/autofill/core/common/form_data.h" | 17 #include "components/autofill/core/common/form_data.h" |
| 18 #include "content/public/test/test_browser_thread.h" | 18 #include "content/public/test/test_browser_thread_bundle.h" |
| 19 #include "net/url_request/test_url_fetcher_factory.h" | 19 #include "net/url_request/test_url_fetcher_factory.h" |
| 20 #include "net/url_request/url_request_status.h" | 20 #include "net/url_request/url_request_status.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 23 #include "third_party/WebKit/public/web/WebInputElement.h" | 23 #include "third_party/WebKit/public/web/WebInputElement.h" |
| 24 | 24 |
| 25 using content::BrowserThread; | |
| 26 using WebKit::WebInputElement; | 25 using WebKit::WebInputElement; |
| 27 | 26 |
| 28 namespace autofill { | 27 namespace autofill { |
| 29 | 28 |
| 30 namespace { | 29 namespace { |
| 31 | 30 |
| 32 class MockAutofillMetrics : public AutofillMetrics { | 31 class MockAutofillMetrics : public AutofillMetrics { |
| 33 public: | 32 public: |
| 34 MockAutofillMetrics() {} | 33 MockAutofillMetrics() {} |
| 35 MOCK_CONST_METHOD1(LogServerQueryMetric, void(ServerQueryMetric metric)); | 34 MOCK_CONST_METHOD1(LogServerQueryMetric, void(ServerQueryMetric metric)); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 58 // AutofillDownloadManager. Then it records responses to different initiated | 57 // AutofillDownloadManager. Then it records responses to different initiated |
| 59 // requests, which are verified later. To mock network requests | 58 // requests, which are verified later. To mock network requests |
| 60 // TestURLFetcherFactory is used, which creates URLFetchers that do not | 59 // TestURLFetcherFactory is used, which creates URLFetchers that do not |
| 61 // go over the wire, but allow calling back HTTP responses directly. | 60 // go over the wire, but allow calling back HTTP responses directly. |
| 62 // The responses in test are out of order and verify: successful query request, | 61 // The responses in test are out of order and verify: successful query request, |
| 63 // successful upload request, failed upload request. | 62 // successful upload request, failed upload request. |
| 64 class AutofillDownloadTest : public AutofillDownloadManager::Observer, | 63 class AutofillDownloadTest : public AutofillDownloadManager::Observer, |
| 65 public testing::Test { | 64 public testing::Test { |
| 66 public: | 65 public: |
| 67 AutofillDownloadTest() | 66 AutofillDownloadTest() |
| 68 : download_manager_(&profile_, this), | 67 : download_manager_(&profile_, this) { |
| 69 io_thread_(BrowserThread::IO) { | |
| 70 } | |
| 71 | |
| 72 virtual void SetUp() { | |
| 73 io_thread_.StartIOThread(); | |
| 74 profile_.CreateRequestContext(); | |
| 75 } | |
| 76 | |
| 77 virtual void TearDown() { | |
| 78 profile_.ResetRequestContext(); | |
| 79 io_thread_.Stop(); | |
| 80 } | 68 } |
| 81 | 69 |
| 82 void LimitCache(size_t cache_size) { | 70 void LimitCache(size_t cache_size) { |
| 83 download_manager_.set_max_form_cache_size(cache_size); | 71 download_manager_.set_max_form_cache_size(cache_size); |
| 84 } | 72 } |
| 85 | 73 |
| 86 // AutofillDownloadManager::Observer implementation. | 74 // AutofillDownloadManager::Observer implementation. |
| 87 virtual void OnLoadedServerPredictions( | 75 virtual void OnLoadedServerPredictions( |
| 88 const std::string& response_xml) OVERRIDE { | 76 const std::string& response_xml) OVERRIDE { |
| 89 ResponseData response; | 77 ResponseData response; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 struct ResponseData { | 109 struct ResponseData { |
| 122 ResponseType type_of_response; | 110 ResponseType type_of_response; |
| 123 int error; | 111 int error; |
| 124 std::string signature; | 112 std::string signature; |
| 125 std::string response; | 113 std::string response; |
| 126 | 114 |
| 127 ResponseData() : type_of_response(REQUEST_QUERY_FAILED), error(0) {} | 115 ResponseData() : type_of_response(REQUEST_QUERY_FAILED), error(0) {} |
| 128 }; | 116 }; |
| 129 std::list<ResponseData> responses_; | 117 std::list<ResponseData> responses_; |
| 130 | 118 |
| 119 content::TestBrowserThreadBundle thread_bundle_; |
| 131 TestingProfile profile_; | 120 TestingProfile profile_; |
| 132 AutofillDownloadManager download_manager_; | 121 AutofillDownloadManager download_manager_; |
| 133 | |
| 134 private: | |
| 135 // The profile's request context must be released on the IO thread. | |
| 136 content::TestBrowserThread io_thread_; | |
| 137 }; | 122 }; |
| 138 | 123 |
| 139 TEST_F(AutofillDownloadTest, QueryAndUploadTest) { | 124 TEST_F(AutofillDownloadTest, QueryAndUploadTest) { |
| 140 base::MessageLoopForUI message_loop; | |
| 141 // Create and register factory. | 125 // Create and register factory. |
| 142 net::TestURLFetcherFactory factory; | 126 net::TestURLFetcherFactory factory; |
| 143 | 127 |
| 144 FormData form; | 128 FormData form; |
| 145 form.method = ASCIIToUTF16("post"); | 129 form.method = ASCIIToUTF16("post"); |
| 146 | 130 |
| 147 FormFieldData field; | 131 FormFieldData field; |
| 148 field.label = ASCIIToUTF16("username"); | 132 field.label = ASCIIToUTF16("username"); |
| 149 field.name = ASCIIToUTF16("username"); | 133 field.name = ASCIIToUTF16("username"); |
| 150 field.form_control_type = "text"; | 134 field.form_control_type = "text"; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 responses_.pop_front(); | 326 responses_.pop_front(); |
| 343 | 327 |
| 344 // Upload requests should be ignored for the next 10 seconds. | 328 // Upload requests should be ignored for the next 10 seconds. |
| 345 EXPECT_FALSE(download_manager_.StartUploadRequest( | 329 EXPECT_FALSE(download_manager_.StartUploadRequest( |
| 346 *(form_structures[0]), true, FieldTypeSet())); | 330 *(form_structures[0]), true, FieldTypeSet())); |
| 347 fetcher = factory.GetFetcherByID(5); | 331 fetcher = factory.GetFetcherByID(5); |
| 348 EXPECT_EQ(NULL, fetcher); | 332 EXPECT_EQ(NULL, fetcher); |
| 349 } | 333 } |
| 350 | 334 |
| 351 TEST_F(AutofillDownloadTest, CacheQueryTest) { | 335 TEST_F(AutofillDownloadTest, CacheQueryTest) { |
| 352 base::MessageLoopForUI message_loop; | |
| 353 // Create and register factory. | 336 // Create and register factory. |
| 354 net::TestURLFetcherFactory factory; | 337 net::TestURLFetcherFactory factory; |
| 355 | 338 |
| 356 FormData form; | 339 FormData form; |
| 357 form.method = ASCIIToUTF16("post"); | 340 form.method = ASCIIToUTF16("post"); |
| 358 | 341 |
| 359 FormFieldData field; | 342 FormFieldData field; |
| 360 field.form_control_type = "text"; | 343 field.form_control_type = "text"; |
| 361 | 344 |
| 362 field.label = ASCIIToUTF16("username"); | 345 field.label = ASCIIToUTF16("username"); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); | 482 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); |
| 500 | 483 |
| 501 fetcher = factory.GetFetcherByID(3); | 484 fetcher = factory.GetFetcherByID(3); |
| 502 ASSERT_TRUE(fetcher); | 485 ASSERT_TRUE(fetcher); |
| 503 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); | 486 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); |
| 504 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); | 487 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); |
| 505 EXPECT_EQ(responses[0], responses_.front().response); | 488 EXPECT_EQ(responses[0], responses_.front().response); |
| 506 } | 489 } |
| 507 | 490 |
| 508 } // namespace autofill | 491 } // namespace autofill |
| OLD | NEW |