| 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 <memory> | 5 #include <memory> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 #include "net/ssl/token_binding.h" | 93 #include "net/ssl/token_binding.h" |
| 94 #include "net/test/cert_test_util.h" | 94 #include "net/test/cert_test_util.h" |
| 95 #include "net/test/embedded_test_server/embedded_test_server.h" | 95 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 96 #include "net/test/embedded_test_server/http_request.h" | 96 #include "net/test/embedded_test_server/http_request.h" |
| 97 #include "net/test/embedded_test_server/http_response.h" | 97 #include "net/test/embedded_test_server/http_response.h" |
| 98 #include "net/test/gtest_util.h" | 98 #include "net/test/gtest_util.h" |
| 99 #include "net/test/spawned_test_server/spawned_test_server.h" | 99 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 100 #include "net/test/test_data_directory.h" | 100 #include "net/test/test_data_directory.h" |
| 101 #include "net/test/url_request/url_request_failed_job.h" | 101 #include "net/test/url_request/url_request_failed_job.h" |
| 102 #include "net/url_request/data_protocol_handler.h" | 102 #include "net/url_request/data_protocol_handler.h" |
| 103 #include "net/url_request/http_protocol_handler.h" |
| 103 #include "net/url_request/static_http_user_agent_settings.h" | 104 #include "net/url_request/static_http_user_agent_settings.h" |
| 104 #include "net/url_request/url_request.h" | 105 #include "net/url_request/url_request.h" |
| 105 #include "net/url_request/url_request_filter.h" | 106 #include "net/url_request/url_request_filter.h" |
| 106 #include "net/url_request/url_request_http_job.h" | 107 #include "net/url_request/url_request_http_job.h" |
| 107 #include "net/url_request/url_request_intercepting_job_factory.h" | 108 #include "net/url_request/url_request_intercepting_job_factory.h" |
| 108 #include "net/url_request/url_request_interceptor.h" | 109 #include "net/url_request/url_request_interceptor.h" |
| 109 #include "net/url_request/url_request_job_factory_impl.h" | 110 #include "net/url_request/url_request_job_factory_impl.h" |
| 110 #include "net/url_request/url_request_redirect_job.h" | 111 #include "net/url_request/url_request_redirect_job.h" |
| 111 #include "net/url_request/url_request_test_job.h" | 112 #include "net/url_request/url_request_test_job.h" |
| 112 #include "net/url_request/url_request_test_util.h" | 113 #include "net/url_request/url_request_test_util.h" |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 }; | 730 }; |
| 730 | 731 |
| 731 } // namespace | 732 } // namespace |
| 732 | 733 |
| 733 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. | 734 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. |
| 734 class URLRequestTest : public PlatformTest { | 735 class URLRequestTest : public PlatformTest { |
| 735 public: | 736 public: |
| 736 URLRequestTest() : default_context_(true) { | 737 URLRequestTest() : default_context_(true) { |
| 737 default_context_.set_network_delegate(&default_network_delegate_); | 738 default_context_.set_network_delegate(&default_network_delegate_); |
| 738 default_context_.set_net_log(&net_log_); | 739 default_context_.set_net_log(&net_log_); |
| 739 job_factory_impl_ = new URLRequestJobFactoryImpl(); | 740 std::unique_ptr<URLRequestJobFactoryImpl> job_factory = |
| 740 job_factory_.reset(job_factory_impl_); | 741 URLRequestJobFactoryImpl::CreateWithHttpProtocolHandlers(); |
| 742 job_factory_impl_ = job_factory.get(); |
| 743 job_factory_ = std::move(job_factory); |
| 741 } | 744 } |
| 742 | 745 |
| 743 ~URLRequestTest() override { | 746 ~URLRequestTest() override { |
| 744 // URLRequestJobs may post clean-up tasks on destruction. | 747 // URLRequestJobs may post clean-up tasks on destruction. |
| 745 base::RunLoop().RunUntilIdle(); | 748 base::RunLoop().RunUntilIdle(); |
| 746 } | 749 } |
| 747 | 750 |
| 748 void SetUp() override { | 751 void SetUp() override { |
| 749 SetUpFactory(); | 752 SetUpFactory(); |
| 753 test_job_interceptor_ = new TestJobInterceptor; |
| 754 job_factory_.reset(new URLRequestInterceptingJobFactory( |
| 755 std::move(job_factory_), base::WrapUnique(test_job_interceptor_))); |
| 750 default_context_.set_job_factory(job_factory_.get()); | 756 default_context_.set_job_factory(job_factory_.get()); |
| 751 default_context_.Init(); | 757 default_context_.Init(); |
| 752 PlatformTest::SetUp(); | 758 PlatformTest::SetUp(); |
| 753 } | 759 } |
| 754 | 760 |
| 755 virtual void SetUpFactory() { | 761 virtual void SetUpFactory() { |
| 756 job_factory_impl_->SetProtocolHandler( | 762 job_factory_impl_->SetProtocolHandler( |
| 757 "data", base::WrapUnique(new DataProtocolHandler)); | 763 "data", base::WrapUnique(new DataProtocolHandler)); |
| 764 |
| 758 #if !defined(DISABLE_FILE_SUPPORT) | 765 #if !defined(DISABLE_FILE_SUPPORT) |
| 759 job_factory_impl_->SetProtocolHandler( | 766 job_factory_impl_->SetProtocolHandler( |
| 760 "file", base::MakeUnique<FileProtocolHandler>( | 767 "file", base::MakeUnique<FileProtocolHandler>( |
| 761 base::ThreadTaskRunnerHandle::Get())); | 768 base::ThreadTaskRunnerHandle::Get())); |
| 762 #endif | 769 #endif |
| 763 } | 770 } |
| 764 | 771 |
| 765 TestNetworkDelegate* default_network_delegate() { | 772 TestNetworkDelegate* default_network_delegate() { |
| 766 return &default_network_delegate_; | 773 return &default_network_delegate_; |
| 767 } | 774 } |
| 768 | 775 |
| 769 const TestURLRequestContext& default_context() const { | 776 const TestURLRequestContext& default_context() const { |
| 770 return default_context_; | 777 return default_context_; |
| 771 } | 778 } |
| 772 | 779 |
| 773 | |
| 774 // Adds the TestJobInterceptor to the default context. | |
| 775 TestJobInterceptor* AddTestInterceptor() { | |
| 776 TestJobInterceptor* protocol_handler_ = new TestJobInterceptor(); | |
| 777 job_factory_impl_->SetProtocolHandler("http", nullptr); | |
| 778 job_factory_impl_->SetProtocolHandler("http", | |
| 779 base::WrapUnique(protocol_handler_)); | |
| 780 return protocol_handler_; | |
| 781 } | |
| 782 | |
| 783 protected: | 780 protected: |
| 784 TestNetLog net_log_; | 781 TestNetLog net_log_; |
| 785 TestNetworkDelegate default_network_delegate_; // Must outlive URLRequest. | 782 TestNetworkDelegate default_network_delegate_; // Must outlive URLRequest. |
| 786 URLRequestJobFactoryImpl* job_factory_impl_; | 783 URLRequestJobFactoryImpl* job_factory_impl_; |
| 787 std::unique_ptr<URLRequestJobFactory> job_factory_; | 784 std::unique_ptr<URLRequestJobFactory> job_factory_; |
| 788 TestURLRequestContext default_context_; | 785 TestURLRequestContext default_context_; |
| 786 TestJobInterceptor* test_job_interceptor_; |
| 789 }; | 787 }; |
| 790 | 788 |
| 791 TEST_F(URLRequestTest, AboutBlankTest) { | 789 TEST_F(URLRequestTest, AboutBlankTest) { |
| 792 TestDelegate d; | 790 TestDelegate d; |
| 793 { | 791 { |
| 794 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( | 792 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
| 795 GURL("about:blank"), DEFAULT_PRIORITY, &d)); | 793 GURL("about:blank"), DEFAULT_PRIORITY, &d)); |
| 796 | 794 |
| 797 r->Start(); | 795 r->Start(); |
| 798 EXPECT_TRUE(r->is_pending()); | 796 EXPECT_TRUE(r->is_pending()); |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1350 } | 1348 } |
| 1351 if (cancel_then_restart_main_request_) { | 1349 if (cancel_then_restart_main_request_) { |
| 1352 cancel_then_restart_main_request_ = false; | 1350 cancel_then_restart_main_request_ = false; |
| 1353 did_cancel_then_restart_main_ = true; | 1351 did_cancel_then_restart_main_ = true; |
| 1354 return new CancelThenRestartTestJob(request, network_delegate); | 1352 return new CancelThenRestartTestJob(request, network_delegate); |
| 1355 } | 1353 } |
| 1356 if (simulate_main_network_error_) { | 1354 if (simulate_main_network_error_) { |
| 1357 simulate_main_network_error_ = false; | 1355 simulate_main_network_error_ = false; |
| 1358 did_simulate_error_main_ = true; | 1356 did_simulate_error_main_ = true; |
| 1359 if (use_url_request_http_job_) { | 1357 if (use_url_request_http_job_) { |
| 1360 return URLRequestHttpJob::Factory(request, network_delegate, "http"); | 1358 return new URLRequestHttpJob( |
| 1359 request, network_delegate, |
| 1360 request->context()->http_user_agent_settings()); |
| 1361 } | 1361 } |
| 1362 // This job will result in error since the requested URL is not one of the | 1362 // This job will result in error since the requested URL is not one of the |
| 1363 // URLs supported by these tests. | 1363 // URLs supported by these tests. |
| 1364 return new URLRequestTestJob(request, network_delegate, true); | 1364 return new URLRequestTestJob(request, network_delegate, true); |
| 1365 } | 1365 } |
| 1366 if (!intercept_main_request_) | 1366 if (!intercept_main_request_) |
| 1367 return nullptr; | 1367 return nullptr; |
| 1368 intercept_main_request_ = false; | 1368 intercept_main_request_ = false; |
| 1369 did_intercept_main_ = true; | 1369 did_intercept_main_ = true; |
| 1370 URLRequestTestJob* job = new URLRequestTestJob(request, | 1370 URLRequestTestJob* job = new URLRequestTestJob(request, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1382 if (cancel_redirect_request_) { | 1382 if (cancel_redirect_request_) { |
| 1383 cancel_redirect_request_ = false; | 1383 cancel_redirect_request_ = false; |
| 1384 did_cancel_redirect_ = true; | 1384 did_cancel_redirect_ = true; |
| 1385 return new CancelTestJob(request, network_delegate); | 1385 return new CancelTestJob(request, network_delegate); |
| 1386 } | 1386 } |
| 1387 if (!intercept_redirect_) | 1387 if (!intercept_redirect_) |
| 1388 return nullptr; | 1388 return nullptr; |
| 1389 intercept_redirect_ = false; | 1389 intercept_redirect_ = false; |
| 1390 did_intercept_redirect_ = true; | 1390 did_intercept_redirect_ = true; |
| 1391 if (use_url_request_http_job_) { | 1391 if (use_url_request_http_job_) { |
| 1392 return URLRequestHttpJob::Factory(request, network_delegate, "http"); | 1392 return new URLRequestHttpJob( |
| 1393 request, network_delegate, |
| 1394 request->context()->http_user_agent_settings()); |
| 1393 } | 1395 } |
| 1394 return new URLRequestTestJob(request, | 1396 return new URLRequestTestJob(request, |
| 1395 network_delegate, | 1397 network_delegate, |
| 1396 redirect_headers_, | 1398 redirect_headers_, |
| 1397 redirect_data_, | 1399 redirect_data_, |
| 1398 true); | 1400 true); |
| 1399 } | 1401 } |
| 1400 | 1402 |
| 1401 URLRequestJob* MaybeInterceptResponse( | 1403 URLRequestJob* MaybeInterceptResponse( |
| 1402 URLRequest* request, | 1404 URLRequest* request, |
| 1403 NetworkDelegate* network_delegate) const override { | 1405 NetworkDelegate* network_delegate) const override { |
| 1404 if (cancel_final_request_) { | 1406 if (cancel_final_request_) { |
| 1405 cancel_final_request_ = false; | 1407 cancel_final_request_ = false; |
| 1406 did_cancel_final_ = true; | 1408 did_cancel_final_ = true; |
| 1407 return new CancelTestJob(request, network_delegate); | 1409 return new CancelTestJob(request, network_delegate); |
| 1408 } | 1410 } |
| 1409 if (!intercept_final_response_) | 1411 if (!intercept_final_response_) |
| 1410 return nullptr; | 1412 return nullptr; |
| 1411 intercept_final_response_ = false; | 1413 intercept_final_response_ = false; |
| 1412 did_intercept_final_ = true; | 1414 did_intercept_final_ = true; |
| 1413 if (use_url_request_http_job_) { | 1415 if (use_url_request_http_job_) { |
| 1414 return URLRequestHttpJob::Factory(request, network_delegate, "http"); | 1416 return new URLRequestHttpJob( |
| 1417 request, network_delegate, |
| 1418 request->context()->http_user_agent_settings()); |
| 1415 } | 1419 } |
| 1416 return new URLRequestTestJob(request, | 1420 return new URLRequestTestJob(request, |
| 1417 network_delegate, | 1421 network_delegate, |
| 1418 final_headers_, | 1422 final_headers_, |
| 1419 final_data_, | 1423 final_data_, |
| 1420 true); | 1424 true); |
| 1421 } | 1425 } |
| 1422 | 1426 |
| 1423 void set_intercept_main_request(bool intercept_main_request) { | 1427 void set_intercept_main_request(bool intercept_main_request) { |
| 1424 intercept_main_request_ = intercept_main_request; | 1428 intercept_main_request_ = intercept_main_request; |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2204 // Start on it. | 2208 // Start on it. |
| 2205 TEST_F(URLRequestTest, SetJobPriorityBeforeJobStart) { | 2209 TEST_F(URLRequestTest, SetJobPriorityBeforeJobStart) { |
| 2206 TestDelegate d; | 2210 TestDelegate d; |
| 2207 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 2211 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 2208 GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d)); | 2212 GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d)); |
| 2209 EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); | 2213 EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); |
| 2210 | 2214 |
| 2211 RequestPriority job_priority; | 2215 RequestPriority job_priority; |
| 2212 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( | 2216 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( |
| 2213 req.get(), &default_network_delegate_, &job_priority)); | 2217 req.get(), &default_network_delegate_, &job_priority)); |
| 2214 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 2218 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 2215 EXPECT_EQ(DEFAULT_PRIORITY, job_priority); | 2219 EXPECT_EQ(DEFAULT_PRIORITY, job_priority); |
| 2216 | 2220 |
| 2217 req->SetPriority(LOW); | 2221 req->SetPriority(LOW); |
| 2218 | 2222 |
| 2219 req->Start(); | 2223 req->Start(); |
| 2220 EXPECT_EQ(LOW, job_priority); | 2224 EXPECT_EQ(LOW, job_priority); |
| 2221 } | 2225 } |
| 2222 | 2226 |
| 2223 // Make sure that URLRequest passes on its priority updates to its | 2227 // Make sure that URLRequest passes on its priority updates to its |
| 2224 // job. | 2228 // job. |
| 2225 TEST_F(URLRequestTest, SetJobPriority) { | 2229 TEST_F(URLRequestTest, SetJobPriority) { |
| 2226 TestDelegate d; | 2230 TestDelegate d; |
| 2227 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 2231 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 2228 GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d)); | 2232 GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d)); |
| 2229 | 2233 |
| 2230 RequestPriority job_priority; | 2234 RequestPriority job_priority; |
| 2231 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( | 2235 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( |
| 2232 req.get(), &default_network_delegate_, &job_priority)); | 2236 req.get(), &default_network_delegate_, &job_priority)); |
| 2233 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 2237 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 2234 | 2238 |
| 2235 req->SetPriority(LOW); | 2239 req->SetPriority(LOW); |
| 2236 req->Start(); | 2240 req->Start(); |
| 2237 EXPECT_EQ(LOW, job_priority); | 2241 EXPECT_EQ(LOW, job_priority); |
| 2238 | 2242 |
| 2239 req->SetPriority(MEDIUM); | 2243 req->SetPriority(MEDIUM); |
| 2240 EXPECT_EQ(MEDIUM, req->priority()); | 2244 EXPECT_EQ(MEDIUM, req->priority()); |
| 2241 EXPECT_EQ(MEDIUM, job_priority); | 2245 EXPECT_EQ(MEDIUM, job_priority); |
| 2242 } | 2246 } |
| 2243 | 2247 |
| 2244 // Setting the IGNORE_LIMITS load flag should be okay if the priority | 2248 // Setting the IGNORE_LIMITS load flag should be okay if the priority |
| 2245 // is MAXIMUM_PRIORITY. | 2249 // is MAXIMUM_PRIORITY. |
| 2246 TEST_F(URLRequestTest, PriorityIgnoreLimits) { | 2250 TEST_F(URLRequestTest, PriorityIgnoreLimits) { |
| 2247 TestDelegate d; | 2251 TestDelegate d; |
| 2248 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 2252 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 2249 GURL("http://test_intercept/foo"), MAXIMUM_PRIORITY, &d)); | 2253 GURL("http://test_intercept/foo"), MAXIMUM_PRIORITY, &d)); |
| 2250 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); | 2254 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); |
| 2251 | 2255 |
| 2252 RequestPriority job_priority; | 2256 RequestPriority job_priority; |
| 2253 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( | 2257 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( |
| 2254 req.get(), &default_network_delegate_, &job_priority)); | 2258 req.get(), &default_network_delegate_, &job_priority)); |
| 2255 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 2259 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 2256 | 2260 |
| 2257 req->SetLoadFlags(LOAD_IGNORE_LIMITS); | 2261 req->SetLoadFlags(LOAD_IGNORE_LIMITS); |
| 2258 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); | 2262 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); |
| 2259 | 2263 |
| 2260 req->SetPriority(MAXIMUM_PRIORITY); | 2264 req->SetPriority(MAXIMUM_PRIORITY); |
| 2261 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); | 2265 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); |
| 2262 | 2266 |
| 2263 req->Start(); | 2267 req->Start(); |
| 2264 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); | 2268 EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); |
| 2265 EXPECT_EQ(MAXIMUM_PRIORITY, job_priority); | 2269 EXPECT_EQ(MAXIMUM_PRIORITY, job_priority); |
| (...skipping 4501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6767 http_test_server()->GetURL("/original#should-not-be-appended")); | 6771 http_test_server()->GetURL("/original#should-not-be-appended")); |
| 6768 GURL redirect_url(http_test_server()->GetURL("/echo")); | 6772 GURL redirect_url(http_test_server()->GetURL("/echo")); |
| 6769 | 6773 |
| 6770 TestDelegate d; | 6774 TestDelegate d; |
| 6771 std::unique_ptr<URLRequest> r( | 6775 std::unique_ptr<URLRequest> r( |
| 6772 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 6776 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
| 6773 | 6777 |
| 6774 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( | 6778 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( |
| 6775 r.get(), &default_network_delegate_, redirect_url, | 6779 r.get(), &default_network_delegate_, redirect_url, |
| 6776 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); | 6780 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); |
| 6777 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 6781 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 6778 | 6782 |
| 6779 r->Start(); | 6783 r->Start(); |
| 6780 base::RunLoop().Run(); | 6784 base::RunLoop().Run(); |
| 6781 | 6785 |
| 6782 EXPECT_EQ(OK, d.request_status()); | 6786 EXPECT_EQ(OK, d.request_status()); |
| 6783 EXPECT_EQ(original_url, r->original_url()); | 6787 EXPECT_EQ(original_url, r->original_url()); |
| 6784 EXPECT_EQ(redirect_url, r->url()); | 6788 EXPECT_EQ(redirect_url, r->url()); |
| 6785 } | 6789 } |
| 6786 | 6790 |
| 6787 TEST_F(URLRequestTestHTTP, UnsupportedReferrerScheme) { | 6791 TEST_F(URLRequestTestHTTP, UnsupportedReferrerScheme) { |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7414 req->set_upload(CreateSimpleUploadData(kData)); | 7418 req->set_upload(CreateSimpleUploadData(kData)); |
| 7415 HttpRequestHeaders headers; | 7419 HttpRequestHeaders headers; |
| 7416 headers.SetHeader(HttpRequestHeaders::kContentLength, | 7420 headers.SetHeader(HttpRequestHeaders::kContentLength, |
| 7417 base::SizeTToString(arraysize(kData) - 1)); | 7421 base::SizeTToString(arraysize(kData) - 1)); |
| 7418 req->SetExtraRequestHeaders(headers); | 7422 req->SetExtraRequestHeaders(headers); |
| 7419 | 7423 |
| 7420 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( | 7424 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( |
| 7421 req.get(), &default_network_delegate_, | 7425 req.get(), &default_network_delegate_, |
| 7422 http_test_server()->GetURL("/echo"), | 7426 http_test_server()->GetURL("/echo"), |
| 7423 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); | 7427 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); |
| 7424 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 7428 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 7425 | 7429 |
| 7426 req->Start(); | 7430 req->Start(); |
| 7427 base::RunLoop().Run(); | 7431 base::RunLoop().Run(); |
| 7428 EXPECT_EQ("GET", req->method()); | 7432 EXPECT_EQ("GET", req->method()); |
| 7429 } | 7433 } |
| 7430 | 7434 |
| 7431 TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { | 7435 TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { |
| 7432 ASSERT_TRUE(http_test_server()->Start()); | 7436 ASSERT_TRUE(http_test_server()->Start()); |
| 7433 | 7437 |
| 7434 const char kData[] = "hello world"; | 7438 const char kData[] = "hello world"; |
| 7435 | 7439 |
| 7436 TestDelegate d; | 7440 TestDelegate d; |
| 7437 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 7441 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 7438 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); | 7442 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); |
| 7439 req->set_method("POST"); | 7443 req->set_method("POST"); |
| 7440 req->set_upload(CreateSimpleUploadData(kData)); | 7444 req->set_upload(CreateSimpleUploadData(kData)); |
| 7441 HttpRequestHeaders headers; | 7445 HttpRequestHeaders headers; |
| 7442 headers.SetHeader(HttpRequestHeaders::kContentLength, | 7446 headers.SetHeader(HttpRequestHeaders::kContentLength, |
| 7443 base::SizeTToString(arraysize(kData) - 1)); | 7447 base::SizeTToString(arraysize(kData) - 1)); |
| 7444 req->SetExtraRequestHeaders(headers); | 7448 req->SetExtraRequestHeaders(headers); |
| 7445 | 7449 |
| 7446 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( | 7450 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( |
| 7447 req.get(), &default_network_delegate_, | 7451 req.get(), &default_network_delegate_, |
| 7448 http_test_server()->GetURL("/echo"), | 7452 http_test_server()->GetURL("/echo"), |
| 7449 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, | 7453 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, |
| 7450 "Very Good Reason")); | 7454 "Very Good Reason")); |
| 7451 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 7455 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 7452 | 7456 |
| 7453 req->Start(); | 7457 req->Start(); |
| 7454 base::RunLoop().Run(); | 7458 base::RunLoop().Run(); |
| 7455 EXPECT_EQ("POST", req->method()); | 7459 EXPECT_EQ("POST", req->method()); |
| 7456 EXPECT_EQ(kData, d.data_received()); | 7460 EXPECT_EQ(kData, d.data_received()); |
| 7457 } | 7461 } |
| 7458 | 7462 |
| 7459 // Check that default A-L header is sent. | 7463 // Check that default A-L header is sent. |
| 7460 TEST_F(URLRequestTestHTTP, DefaultAcceptLanguage) { | 7464 TEST_F(URLRequestTestHTTP, DefaultAcceptLanguage) { |
| 7461 ASSERT_TRUE(http_test_server()->Start()); | 7465 ASSERT_TRUE(http_test_server()->Start()); |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7641 | 7645 |
| 7642 TestDelegate d; | 7646 TestDelegate d; |
| 7643 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 7647 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 7644 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); | 7648 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); |
| 7645 EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); | 7649 EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); |
| 7646 | 7650 |
| 7647 std::unique_ptr<URLRequestRedirectJob> redirect_job(new URLRequestRedirectJob( | 7651 std::unique_ptr<URLRequestRedirectJob> redirect_job(new URLRequestRedirectJob( |
| 7648 req.get(), &default_network_delegate_, | 7652 req.get(), &default_network_delegate_, |
| 7649 http_test_server()->GetURL("/echo"), | 7653 http_test_server()->GetURL("/echo"), |
| 7650 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); | 7654 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); |
| 7651 AddTestInterceptor()->set_main_intercept_job(std::move(redirect_job)); | 7655 test_job_interceptor_->set_main_intercept_job(std::move(redirect_job)); |
| 7652 | 7656 |
| 7653 req->SetPriority(LOW); | 7657 req->SetPriority(LOW); |
| 7654 req->Start(); | 7658 req->Start(); |
| 7655 EXPECT_TRUE(req->is_pending()); | 7659 EXPECT_TRUE(req->is_pending()); |
| 7656 | 7660 |
| 7657 RequestPriority job_priority; | 7661 RequestPriority job_priority; |
| 7658 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( | 7662 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( |
| 7659 req.get(), &default_network_delegate_, &job_priority)); | 7663 req.get(), &default_network_delegate_, &job_priority)); |
| 7660 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 7664 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 7661 | 7665 |
| 7662 // Should trigger |job| to be started. | 7666 // Should trigger |job| to be started. |
| 7663 base::RunLoop().Run(); | 7667 base::RunLoop().Run(); |
| 7664 EXPECT_EQ(LOW, job_priority); | 7668 EXPECT_EQ(LOW, job_priority); |
| 7665 } | 7669 } |
| 7666 | 7670 |
| 7667 // Check that creating a network request while entering/exiting suspend mode | 7671 // Check that creating a network request while entering/exiting suspend mode |
| 7668 // fails as it should. This is the only case where an HttpTransactionFactory | 7672 // fails as it should. This is the only case where an HttpTransactionFactory |
| 7669 // does not return an HttpTransaction. | 7673 // does not return an HttpTransaction. |
| 7670 TEST_F(URLRequestTestHTTP, NetworkSuspendTest) { | 7674 TEST_F(URLRequestTestHTTP, NetworkSuspendTest) { |
| (...skipping 2536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10207 // See http://crbug.com/508900 | 10211 // See http://crbug.com/508900 |
| 10208 TEST_F(URLRequestTest, URLRequestRedirectJobCancelRequest) { | 10212 TEST_F(URLRequestTest, URLRequestRedirectJobCancelRequest) { |
| 10209 TestDelegate d; | 10213 TestDelegate d; |
| 10210 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 10214 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
| 10211 GURL("http://not-a-real-domain/"), DEFAULT_PRIORITY, &d)); | 10215 GURL("http://not-a-real-domain/"), DEFAULT_PRIORITY, &d)); |
| 10212 | 10216 |
| 10213 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( | 10217 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( |
| 10214 req.get(), &default_network_delegate_, | 10218 req.get(), &default_network_delegate_, |
| 10215 GURL("http://this-should-never-be-navigated-to/"), | 10219 GURL("http://this-should-never-be-navigated-to/"), |
| 10216 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Jumbo shrimp")); | 10220 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Jumbo shrimp")); |
| 10217 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 10221 test_job_interceptor_->set_main_intercept_job(std::move(job)); |
| 10218 | 10222 |
| 10219 req->Start(); | 10223 req->Start(); |
| 10220 req->Cancel(); | 10224 req->Cancel(); |
| 10221 base::RunLoop().RunUntilIdle(); | 10225 base::RunLoop().RunUntilIdle(); |
| 10222 EXPECT_EQ(ERR_ABORTED, d.request_status()); | 10226 EXPECT_EQ(ERR_ABORTED, d.request_status()); |
| 10223 EXPECT_EQ(0, d.received_redirect_count()); | 10227 EXPECT_EQ(0, d.received_redirect_count()); |
| 10224 } | 10228 } |
| 10225 | 10229 |
| 10226 } // namespace net | 10230 } // namespace net |
| OLD | NEW |