OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/browser/loader/resource_loader.h" | 5 #include "content/browser/loader/resource_loader.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <deque> | 10 #include <deque> |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 redirect_ ? std::string(kRedirectHeaders, arraysize(kRedirectHeaders)) | 261 redirect_ ? std::string(kRedirectHeaders, arraysize(kRedirectHeaders)) |
262 : net::URLRequestTestJob::test_headers(); | 262 : net::URLRequestTestJob::test_headers(); |
263 return new MockHTTPSURLRequestJob(request, network_delegate, headers, | 263 return new MockHTTPSURLRequestJob(request, network_delegate, headers, |
264 "dummy response", true); | 264 "dummy response", true); |
265 } | 265 } |
266 | 266 |
267 private: | 267 private: |
268 bool redirect_; | 268 bool redirect_; |
269 }; | 269 }; |
270 | 270 |
271 // Arbitrary read buffer size. | |
272 // Test browser client that captures calls to SelectClientCertificates and | 271 // Test browser client that captures calls to SelectClientCertificates and |
273 // records the arguments of the most recent call for later inspection. | 272 // records the arguments of the most recent call for later inspection. |
274 class SelectCertificateBrowserClient : public TestContentBrowserClient { | 273 class SelectCertificateBrowserClient : public TestContentBrowserClient { |
275 public: | 274 public: |
276 SelectCertificateBrowserClient() : call_count_(0) {} | 275 SelectCertificateBrowserClient() : call_count_(0) {} |
277 | 276 |
278 // Waits until the first call to SelectClientCertificate. | 277 // Waits until the first call to SelectClientCertificate. |
279 void WaitForSelectCertificate() { | 278 void WaitForSelectCertificate() { |
280 select_certificate_run_loop_.Run(); | 279 select_certificate_run_loop_.Run(); |
281 // Process any pending messages - just so tests can check if | 280 // Process any pending messages - just so tests can check if |
(...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 net::URLRequestFailedJob::START, net::ERR_IO_PENDING)); | 1381 net::URLRequestFailedJob::START, net::ERR_IO_PENDING)); |
1383 | 1382 |
1384 loader_->StartRequest(); | 1383 loader_->StartRequest(); |
1385 base::RunLoop().RunUntilIdle(); | 1384 base::RunLoop().RunUntilIdle(); |
1386 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); | 1385 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); |
1387 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); | 1386 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); |
1388 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); | 1387 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); |
1389 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); | 1388 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
1390 EXPECT_EQ(1, handle_external_protocol_); | 1389 EXPECT_EQ(1, handle_external_protocol_); |
1391 | 1390 |
1392 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); | 1391 // Can't cancel through the ResourceHandler, since that depends on |
| 1392 // ResourceDispatachHost, which these tests don't use. |
| 1393 loader_->CancelRequest(false); |
1393 raw_ptr_resource_handler_->WaitUntilResponseComplete(); | 1394 raw_ptr_resource_handler_->WaitUntilResponseComplete(); |
1394 | 1395 |
1395 EXPECT_EQ(0, did_received_redirect_); | 1396 EXPECT_EQ(0, did_received_redirect_); |
1396 EXPECT_EQ(0, did_receive_response_); | 1397 EXPECT_EQ(0, did_receive_response_); |
1397 EXPECT_EQ(1, did_finish_loading_); | 1398 EXPECT_EQ(1, did_finish_loading_); |
1398 EXPECT_EQ(1, handle_external_protocol_); | 1399 EXPECT_EQ(1, handle_external_protocol_); |
1399 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); | 1400 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); |
1400 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); | 1401 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); |
1401 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); | 1402 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); |
1402 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); | 1403 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
1403 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); | 1404 EXPECT_EQ(net::ERR_ABORTED, |
| 1405 raw_ptr_resource_handler_->final_status().error()); |
1404 EXPECT_EQ("", raw_ptr_resource_handler_->body()); | 1406 EXPECT_EQ("", raw_ptr_resource_handler_->body()); |
1405 } | 1407 } |
1406 | 1408 |
1407 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) { | 1409 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) { |
1408 SetUpResourceLoaderForUrl( | 1410 SetUpResourceLoaderForUrl( |
1409 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( | 1411 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( |
1410 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING)); | 1412 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING)); |
1411 | 1413 |
1412 loader_->StartRequest(); | 1414 loader_->StartRequest(); |
1413 base::RunLoop().RunUntilIdle(); | 1415 base::RunLoop().RunUntilIdle(); |
1414 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); | 1416 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); |
1415 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); | 1417 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); |
1416 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); | 1418 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); |
1417 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); | 1419 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); |
1418 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); | 1420 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); |
1419 EXPECT_EQ(1, handle_external_protocol_); | 1421 EXPECT_EQ(1, handle_external_protocol_); |
1420 | 1422 |
1421 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); | 1423 // Can't cancel through the ResourceHandler, since that depends on |
| 1424 // ResourceDispatachHost, which these tests don't use. |
| 1425 loader_->CancelRequest(false); |
1422 raw_ptr_resource_handler_->WaitUntilResponseComplete(); | 1426 raw_ptr_resource_handler_->WaitUntilResponseComplete(); |
1423 EXPECT_EQ(0, did_received_redirect_); | 1427 EXPECT_EQ(0, did_received_redirect_); |
1424 EXPECT_EQ(1, did_receive_response_); | 1428 EXPECT_EQ(1, did_receive_response_); |
1425 EXPECT_EQ(1, did_finish_loading_); | 1429 EXPECT_EQ(1, did_finish_loading_); |
1426 EXPECT_EQ(1, handle_external_protocol_); | 1430 EXPECT_EQ(1, handle_external_protocol_); |
1427 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); | 1431 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); |
1428 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); | 1432 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); |
1429 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); | 1433 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); |
1430 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); | 1434 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); |
1431 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); | 1435 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); |
1432 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); | 1436 EXPECT_EQ(net::ERR_ABORTED, |
| 1437 raw_ptr_resource_handler_->final_status().error()); |
1433 EXPECT_EQ("", raw_ptr_resource_handler_->body()); | 1438 EXPECT_EQ("", raw_ptr_resource_handler_->body()); |
1434 } | 1439 } |
1435 | 1440 |
1436 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) { | 1441 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) { |
1437 raw_ptr_resource_handler_->set_defer_on_will_start(true); | 1442 raw_ptr_resource_handler_->set_defer_on_will_start(true); |
1438 | 1443 |
1439 loader_->StartRequest(); | 1444 loader_->StartRequest(); |
| 1445 raw_ptr_resource_handler_->WaitUntilDeferred(); |
1440 loader_->CancelRequest(true); | 1446 loader_->CancelRequest(true); |
1441 static_cast<ResourceController*>(loader_.get())->Resume(); | 1447 raw_ptr_resource_handler_->Resume(); |
1442 } | 1448 } |
1443 | 1449 |
1444 class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest { | 1450 class ResourceLoaderRedirectToFileTest : public ResourceLoaderTest { |
1445 public: | 1451 public: |
1446 ResourceLoaderRedirectToFileTest() | 1452 ResourceLoaderRedirectToFileTest() |
1447 : file_stream_(NULL), | 1453 : file_stream_(NULL), |
1448 redirect_to_file_resource_handler_(NULL) { | 1454 redirect_to_file_resource_handler_(NULL) { |
1449 } | 1455 } |
1450 | 1456 |
1451 ~ResourceLoaderRedirectToFileTest() override { | 1457 ~ResourceLoaderRedirectToFileTest() override { |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1719 | 1725 |
1720 // Tests that the effective connection type is not set on non-main frame | 1726 // Tests that the effective connection type is not set on non-main frame |
1721 // requests. | 1727 // requests. |
1722 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) { | 1728 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) { |
1723 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false, | 1729 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false, |
1724 net::EFFECTIVE_CONNECTION_TYPE_3G, | 1730 net::EFFECTIVE_CONNECTION_TYPE_3G, |
1725 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); | 1731 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); |
1726 } | 1732 } |
1727 | 1733 |
1728 } // namespace content | 1734 } // namespace content |
OLD | NEW |