| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/string_util.h" | 7 #include "base/string_util.h" |
| 8 #include "base/test/test_timeouts.h" | 8 #include "base/test/test_timeouts.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/autofill/autofill_download.h" | 10 #include "chrome/browser/autofill/autofill_download.h" |
| 11 #include "chrome/browser/autofill/autofill_field.h" | 11 #include "chrome/browser/autofill/autofill_field.h" |
| 12 #include "chrome/browser/autofill/autofill_metrics.h" | 12 #include "chrome/browser/autofill/autofill_metrics.h" |
| 13 #include "chrome/browser/autofill/autofill_type.h" |
| 13 #include "chrome/browser/autofill/form_structure.h" | 14 #include "chrome/browser/autofill/form_structure.h" |
| 14 #include "chrome/common/net/test_url_fetcher_factory.h" | 15 #include "chrome/common/net/test_url_fetcher_factory.h" |
| 15 #include "chrome/test/test_url_request_context_getter.h" | 16 #include "chrome/test/test_url_request_context_getter.h" |
| 16 #include "chrome/test/testing_browser_process.h" | 17 #include "chrome/test/testing_browser_process.h" |
| 17 #include "chrome/test/testing_browser_process_test.h" | 18 #include "chrome/test/testing_browser_process_test.h" |
| 18 #include "chrome/test/testing_profile.h" | 19 #include "chrome/test/testing_profile.h" |
| 19 #include "net/url_request/url_request_status.h" | 20 #include "net/url_request/url_request_status.h" |
| 20 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 22 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h" | 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputElement.h" |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 EXPECT_FALSE(helper.download_manager.StartQueryRequest(form_structures, | 209 EXPECT_FALSE(helper.download_manager.StartQueryRequest(form_structures, |
| 209 mock_metric_logger)); | 210 mock_metric_logger)); |
| 210 helper.InitContextGetter(); | 211 helper.InitContextGetter(); |
| 211 EXPECT_TRUE(helper.download_manager.StartQueryRequest(form_structures, | 212 EXPECT_TRUE(helper.download_manager.StartQueryRequest(form_structures, |
| 212 mock_metric_logger)); | 213 mock_metric_logger)); |
| 213 // Set upload to 100% so requests happen. | 214 // Set upload to 100% so requests happen. |
| 214 helper.download_manager.SetPositiveUploadRate(1.0); | 215 helper.download_manager.SetPositiveUploadRate(1.0); |
| 215 helper.download_manager.SetNegativeUploadRate(1.0); | 216 helper.download_manager.SetNegativeUploadRate(1.0); |
| 216 // Request with id 1. | 217 // Request with id 1. |
| 217 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[0]), | 218 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[0]), |
| 218 true)); | 219 true, |
| 220 FieldTypeSet())); |
| 219 // Request with id 2. | 221 // Request with id 2. |
| 220 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[1]), | 222 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[1]), |
| 221 false)); | 223 false, |
| 224 FieldTypeSet())); |
| 222 | 225 |
| 223 const char *responses[] = { | 226 const char *responses[] = { |
| 224 "<autofillqueryresponse>" | 227 "<autofillqueryresponse>" |
| 225 "<field autofilltype=\"0\" />" | 228 "<field autofilltype=\"0\" />" |
| 226 "<field autofilltype=\"3\" />" | 229 "<field autofilltype=\"3\" />" |
| 227 "<field autofilltype=\"5\" />" | 230 "<field autofilltype=\"5\" />" |
| 228 "<field autofilltype=\"9\" />" | 231 "<field autofilltype=\"9\" />" |
| 229 "<field autofilltype=\"0\" />" | 232 "<field autofilltype=\"0\" />" |
| 230 "<field autofilltype=\"30\" />" | 233 "<field autofilltype=\"30\" />" |
| 231 "<field autofilltype=\"31\" />" | 234 "<field autofilltype=\"31\" />" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 EXPECT_EQ(0, helper.responses_.front().error); | 286 EXPECT_EQ(0, helper.responses_.front().error); |
| 284 EXPECT_EQ(std::string(), helper.responses_.front().signature); | 287 EXPECT_EQ(std::string(), helper.responses_.front().signature); |
| 285 EXPECT_EQ(responses[0], helper.responses_.front().response); | 288 EXPECT_EQ(responses[0], helper.responses_.front().response); |
| 286 helper.responses_.pop_front(); | 289 helper.responses_.pop_front(); |
| 287 | 290 |
| 288 // Set upload to 0% so no new requests happen. | 291 // Set upload to 0% so no new requests happen. |
| 289 helper.download_manager.SetPositiveUploadRate(0.0); | 292 helper.download_manager.SetPositiveUploadRate(0.0); |
| 290 helper.download_manager.SetNegativeUploadRate(0.0); | 293 helper.download_manager.SetNegativeUploadRate(0.0); |
| 291 // No actual requests for the next two calls, as we set upload rate to 0%. | 294 // No actual requests for the next two calls, as we set upload rate to 0%. |
| 292 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[0]), | 295 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[0]), |
| 293 true)); | 296 true, |
| 297 FieldTypeSet())); |
| 294 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[1]), | 298 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[1]), |
| 295 false)); | 299 false, |
| 300 FieldTypeSet())); |
| 296 fetcher = factory.GetFetcherByID(3); | 301 fetcher = factory.GetFetcherByID(3); |
| 297 EXPECT_EQ(NULL, fetcher); | 302 EXPECT_EQ(NULL, fetcher); |
| 298 | 303 |
| 299 // Modify form structures to miss the cache. | 304 // Modify form structures to miss the cache. |
| 300 form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("Address line 2"), | 305 form.fields.push_back(webkit_glue::FormField(ASCIIToUTF16("Address line 2"), |
| 301 ASCIIToUTF16("address2"), | 306 ASCIIToUTF16("address2"), |
| 302 string16(), | 307 string16(), |
| 303 ASCIIToUTF16("text"), | 308 ASCIIToUTF16("text"), |
| 304 0, | 309 0, |
| 305 false)); | 310 false)); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 331 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(0); | 336 LogServerQueryMetric(AutofillMetrics::QUERY_SENT)).Times(0); |
| 332 EXPECT_FALSE(helper.download_manager.StartQueryRequest(form_structures, | 337 EXPECT_FALSE(helper.download_manager.StartQueryRequest(form_structures, |
| 333 mock_metric_logger)); | 338 mock_metric_logger)); |
| 334 fetcher = factory.GetFetcherByID(4); | 339 fetcher = factory.GetFetcherByID(4); |
| 335 EXPECT_EQ(NULL, fetcher); | 340 EXPECT_EQ(NULL, fetcher); |
| 336 | 341 |
| 337 // Set upload to 100% so requests happen. | 342 // Set upload to 100% so requests happen. |
| 338 helper.download_manager.SetPositiveUploadRate(1.0); | 343 helper.download_manager.SetPositiveUploadRate(1.0); |
| 339 // Request with id 4. | 344 // Request with id 4. |
| 340 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[0]), | 345 EXPECT_TRUE(helper.download_manager.StartUploadRequest(*(form_structures[0]), |
| 341 true)); | 346 true, |
| 347 FieldTypeSet())); |
| 342 fetcher = factory.GetFetcherByID(4); | 348 fetcher = factory.GetFetcherByID(4); |
| 343 ASSERT_TRUE(fetcher); | 349 ASSERT_TRUE(fetcher); |
| 344 fetcher->set_backoff_delay( | 350 fetcher->set_backoff_delay( |
| 345 base::TimeDelta::FromMilliseconds(TestTimeouts::action_max_timeout_ms())); | 351 base::TimeDelta::FromMilliseconds(TestTimeouts::action_max_timeout_ms())); |
| 346 fetcher->delegate()->OnURLFetchComplete(fetcher, GURL(), | 352 fetcher->delegate()->OnURLFetchComplete(fetcher, GURL(), |
| 347 net::URLRequestStatus(), | 353 net::URLRequestStatus(), |
| 348 503, ResponseCookies(), | 354 503, ResponseCookies(), |
| 349 std::string(responses[2])); | 355 std::string(responses[2])); |
| 350 EXPECT_EQ(AutofillDownloadTestHelper::REQUEST_UPLOAD_FAILED, | 356 EXPECT_EQ(AutofillDownloadTestHelper::REQUEST_UPLOAD_FAILED, |
| 351 helper.responses_.front().type_of_response); | 357 helper.responses_.front().type_of_response); |
| 352 EXPECT_EQ(503, helper.responses_.front().error); | 358 EXPECT_EQ(503, helper.responses_.front().error); |
| 353 helper.responses_.pop_front(); | 359 helper.responses_.pop_front(); |
| 354 | 360 |
| 355 // Upload requests should be ignored for the next 10 seconds. | 361 // Upload requests should be ignored for the next 10 seconds. |
| 356 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[0]), | 362 EXPECT_FALSE(helper.download_manager.StartUploadRequest(*(form_structures[0]), |
| 357 true)); | 363 true, |
| 364 FieldTypeSet())); |
| 358 fetcher = factory.GetFetcherByID(5); | 365 fetcher = factory.GetFetcherByID(5); |
| 359 EXPECT_EQ(NULL, fetcher); | 366 EXPECT_EQ(NULL, fetcher); |
| 360 | 367 |
| 361 // Make sure consumer of URLFetcher does the right thing. | 368 // Make sure consumer of URLFetcher does the right thing. |
| 362 URLFetcher::set_factory(NULL); | 369 URLFetcher::set_factory(NULL); |
| 363 } | 370 } |
| 364 | 371 |
| 365 TEST_F(AutofillDownloadTest, CacheQueryTest) { | 372 TEST_F(AutofillDownloadTest, CacheQueryTest) { |
| 366 MessageLoopForUI message_loop; | 373 MessageLoopForUI message_loop; |
| 367 AutofillDownloadTestHelper helper; | 374 AutofillDownloadTestHelper helper; |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 net::URLRequestStatus(), | 544 net::URLRequestStatus(), |
| 538 200, ResponseCookies(), | 545 200, ResponseCookies(), |
| 539 std::string(responses[0])); | 546 std::string(responses[0])); |
| 540 ASSERT_EQ(static_cast<size_t>(1), helper.responses_.size()); | 547 ASSERT_EQ(static_cast<size_t>(1), helper.responses_.size()); |
| 541 EXPECT_EQ(responses[0], helper.responses_.front().response); | 548 EXPECT_EQ(responses[0], helper.responses_.front().response); |
| 542 | 549 |
| 543 // Make sure consumer of URLFetcher does the right thing. | 550 // Make sure consumer of URLFetcher does the right thing. |
| 544 URLFetcher::set_factory(NULL); | 551 URLFetcher::set_factory(NULL); |
| 545 } | 552 } |
| 546 | 553 |
| OLD | NEW |