OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/test/test_timeouts.h" | 9 #include "base/test/test_timeouts.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
11 #include "chrome/browser/autofill/autofill_download.h" | 11 #include "chrome/browser/autofill/autofill_download.h" |
12 #include "chrome/browser/autofill/autofill_field.h" | 12 #include "chrome/browser/autofill/autofill_field.h" |
13 #include "chrome/browser/autofill/autofill_metrics.h" | 13 #include "chrome/browser/autofill/autofill_metrics.h" |
14 #include "chrome/browser/autofill/autofill_type.h" | 14 #include "chrome/browser/autofill/autofill_type.h" |
15 #include "chrome/browser/autofill/form_structure.h" | 15 #include "chrome/browser/autofill/form_structure.h" |
16 #include "chrome/test/base/testing_browser_process.h" | 16 #include "chrome/test/base/testing_browser_process.h" |
17 #include "chrome/test/base/testing_profile.h" | 17 #include "chrome/test/base/testing_profile.h" |
18 #include "content/public/test/test_browser_thread.h" | 18 #include "content/public/test/test_browser_thread.h" |
19 #include "content/public/test/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/Source/WebKit/chromium/public/WebInputElement.h" | 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h" |
24 #include "webkit/forms/form_data.h" | 24 #include "webkit/forms/form_data.h" |
25 | 25 |
26 using content::BrowserThread; | 26 using content::BrowserThread; |
27 using webkit::forms::FormData; | 27 using webkit::forms::FormData; |
28 using webkit::forms::FormField; | 28 using webkit::forms::FormField; |
29 using WebKit::WebInputElement; | 29 using WebKit::WebInputElement; |
30 | 30 |
31 namespace { | 31 namespace { |
32 | 32 |
33 class MockAutofillMetrics : public AutofillMetrics { | 33 class MockAutofillMetrics : public AutofillMetrics { |
34 public: | 34 public: |
35 MockAutofillMetrics() {} | 35 MockAutofillMetrics() {} |
36 MOCK_CONST_METHOD1(LogServerQueryMetric, void(ServerQueryMetric metric)); | 36 MOCK_CONST_METHOD1(LogServerQueryMetric, void(ServerQueryMetric metric)); |
37 | 37 |
38 private: | 38 private: |
39 DISALLOW_COPY_AND_ASSIGN(MockAutofillMetrics); | 39 DISALLOW_COPY_AND_ASSIGN(MockAutofillMetrics); |
40 }; | 40 }; |
41 | 41 |
42 // Call |fetcher->OnURLFetchComplete()| as the URLFetcher would when | 42 // Call |fetcher->OnURLFetchComplete()| as the URLFetcher would when |
43 // a response is received. Params allow caller to set fake status. | 43 // a response is received. Params allow caller to set fake status. |
44 void FakeOnURLFetchComplete(TestURLFetcher* fetcher, | 44 void FakeOnURLFetchComplete(net::TestURLFetcher* fetcher, |
45 int response_code, | 45 int response_code, |
46 const std::string& response_body) { | 46 const std::string& response_body) { |
47 fetcher->set_url(GURL()); | 47 fetcher->set_url(GURL()); |
48 fetcher->set_status(net::URLRequestStatus()); | 48 fetcher->set_status(net::URLRequestStatus()); |
49 fetcher->set_response_code(response_code); | 49 fetcher->set_response_code(response_code); |
50 fetcher->SetResponseString(response_body); | 50 fetcher->SetResponseString(response_body); |
51 | 51 |
52 fetcher->delegate()->OnURLFetchComplete(fetcher); | 52 fetcher->delegate()->OnURLFetchComplete(fetcher); |
53 } | 53 } |
54 | 54 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 AutofillDownloadManager download_manager_; | 133 AutofillDownloadManager download_manager_; |
134 | 134 |
135 private: | 135 private: |
136 // The profile's request context must be released on the IO thread. | 136 // The profile's request context must be released on the IO thread. |
137 content::TestBrowserThread io_thread_; | 137 content::TestBrowserThread io_thread_; |
138 }; | 138 }; |
139 | 139 |
140 TEST_F(AutofillDownloadTest, QueryAndUploadTest) { | 140 TEST_F(AutofillDownloadTest, QueryAndUploadTest) { |
141 MessageLoopForUI message_loop; | 141 MessageLoopForUI message_loop; |
142 // Create and register factory. | 142 // Create and register factory. |
143 TestURLFetcherFactory factory; | 143 net::TestURLFetcherFactory factory; |
144 | 144 |
145 FormData form; | 145 FormData form; |
146 form.method = ASCIIToUTF16("post"); | 146 form.method = ASCIIToUTF16("post"); |
147 | 147 |
148 FormField field; | 148 FormField field; |
149 field.label = ASCIIToUTF16("username"); | 149 field.label = ASCIIToUTF16("username"); |
150 field.name = ASCIIToUTF16("username"); | 150 field.name = ASCIIToUTF16("username"); |
151 field.form_control_type = ASCIIToUTF16("text"); | 151 field.form_control_type = ASCIIToUTF16("text"); |
152 form.fields.push_back(field); | 152 form.fields.push_back(field); |
153 | 153 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 "<field autofilltype=\"30\" />" | 236 "<field autofilltype=\"30\" />" |
237 "<field autofilltype=\"31\" />" | 237 "<field autofilltype=\"31\" />" |
238 "<field autofilltype=\"33\" />" | 238 "<field autofilltype=\"33\" />" |
239 "</autofillqueryresponse>", | 239 "</autofillqueryresponse>", |
240 "<autofilluploadresponse positiveuploadrate=\"0.5\" " | 240 "<autofilluploadresponse positiveuploadrate=\"0.5\" " |
241 "negativeuploadrate=\"0.3\"/>", | 241 "negativeuploadrate=\"0.3\"/>", |
242 "<html></html>", | 242 "<html></html>", |
243 }; | 243 }; |
244 | 244 |
245 // Return them out of sequence. | 245 // Return them out of sequence. |
246 TestURLFetcher* fetcher = factory.GetFetcherByID(1); | 246 net::TestURLFetcher* fetcher = factory.GetFetcherByID(1); |
247 ASSERT_TRUE(fetcher); | 247 ASSERT_TRUE(fetcher); |
248 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[1])); | 248 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[1])); |
249 | 249 |
250 // After that upload rates would be adjusted to 0.5/0.3 | 250 // After that upload rates would be adjusted to 0.5/0.3 |
251 EXPECT_DOUBLE_EQ(0.5, download_manager_.GetPositiveUploadRate()); | 251 EXPECT_DOUBLE_EQ(0.5, download_manager_.GetPositiveUploadRate()); |
252 EXPECT_DOUBLE_EQ(0.3, download_manager_.GetNegativeUploadRate()); | 252 EXPECT_DOUBLE_EQ(0.3, download_manager_.GetNegativeUploadRate()); |
253 | 253 |
254 fetcher = factory.GetFetcherByID(2); | 254 fetcher = factory.GetFetcherByID(2); |
255 ASSERT_TRUE(fetcher); | 255 ASSERT_TRUE(fetcher); |
256 FakeOnURLFetchComplete(fetcher, 404, std::string(responses[2])); | 256 FakeOnURLFetchComplete(fetcher, 404, std::string(responses[2])); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 // Upload requests should be ignored for the next 10 seconds. | 347 // Upload requests should be ignored for the next 10 seconds. |
348 EXPECT_FALSE(download_manager_.StartUploadRequest( | 348 EXPECT_FALSE(download_manager_.StartUploadRequest( |
349 *(form_structures[0]), true, FieldTypeSet())); | 349 *(form_structures[0]), true, FieldTypeSet())); |
350 fetcher = factory.GetFetcherByID(5); | 350 fetcher = factory.GetFetcherByID(5); |
351 EXPECT_EQ(NULL, fetcher); | 351 EXPECT_EQ(NULL, fetcher); |
352 } | 352 } |
353 | 353 |
354 TEST_F(AutofillDownloadTest, CacheQueryTest) { | 354 TEST_F(AutofillDownloadTest, CacheQueryTest) { |
355 MessageLoopForUI message_loop; | 355 MessageLoopForUI message_loop; |
356 // Create and register factory. | 356 // Create and register factory. |
357 TestURLFetcherFactory factory; | 357 net::TestURLFetcherFactory factory; |
358 | 358 |
359 FormData form; | 359 FormData form; |
360 form.method = ASCIIToUTF16("post"); | 360 form.method = ASCIIToUTF16("post"); |
361 | 361 |
362 FormField field; | 362 FormField field; |
363 field.form_control_type = ASCIIToUTF16("text"); | 363 field.form_control_type = ASCIIToUTF16("text"); |
364 | 364 |
365 field.label = ASCIIToUTF16("username"); | 365 field.label = ASCIIToUTF16("username"); |
366 field.name = ASCIIToUTF16("username"); | 366 field.name = ASCIIToUTF16("username"); |
367 form.fields.push_back(field); | 367 form.fields.push_back(field); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 | 421 |
422 // Request with id 0. | 422 // Request with id 0. |
423 MockAutofillMetrics mock_metric_logger; | 423 MockAutofillMetrics mock_metric_logger; |
424 EXPECT_CALL(mock_metric_logger, | 424 EXPECT_CALL(mock_metric_logger, |
425 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(1); | 425 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(1); |
426 EXPECT_TRUE(download_manager_.StartQueryRequest(form_structures0.get(), | 426 EXPECT_TRUE(download_manager_.StartQueryRequest(form_structures0.get(), |
427 mock_metric_logger)); | 427 mock_metric_logger)); |
428 // No responses yet | 428 // No responses yet |
429 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); | 429 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); |
430 | 430 |
431 TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 431 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
432 ASSERT_TRUE(fetcher); | 432 ASSERT_TRUE(fetcher); |
433 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); | 433 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); |
434 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); | 434 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); |
435 EXPECT_EQ(responses[0], responses_.front().response); | 435 EXPECT_EQ(responses[0], responses_.front().response); |
436 | 436 |
437 responses_.clear(); | 437 responses_.clear(); |
438 | 438 |
439 // No actual request - should be a cache hit. | 439 // No actual request - should be a cache hit. |
440 EXPECT_CALL(mock_metric_logger, | 440 EXPECT_CALL(mock_metric_logger, |
441 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(1); | 441 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(1); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 mock_metric_logger)); | 500 mock_metric_logger)); |
501 // No responses yet | 501 // No responses yet |
502 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); | 502 EXPECT_EQ(static_cast<size_t>(0), responses_.size()); |
503 | 503 |
504 fetcher = factory.GetFetcherByID(3); | 504 fetcher = factory.GetFetcherByID(3); |
505 ASSERT_TRUE(fetcher); | 505 ASSERT_TRUE(fetcher); |
506 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); | 506 FakeOnURLFetchComplete(fetcher, 200, std::string(responses[0])); |
507 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); | 507 ASSERT_EQ(static_cast<size_t>(1), responses_.size()); |
508 EXPECT_EQ(responses[0], responses_.front().response); | 508 EXPECT_EQ(responses[0], responses_.front().response); |
509 } | 509 } |
OLD | NEW |