diff options
35 files changed, 1842 insertions, 1963 deletions
diff --git a/chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc b/chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc index cc99b38..44a3e19 100644 --- a/chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc +++ b/chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc @@ -25,6 +25,8 @@ #include "net/base/test_completion_callback.h" #include "net/http/http_byte_range.h" #include "net/url_request/redirect_info.h" +#include "net/url_request/url_request.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" @@ -184,17 +186,18 @@ class DriveURLRequestJobTest : public testing::Test { }; TEST_F(DriveURLRequestJobTest, NonGetMethod) { - net::URLRequest request(GURL("drive:drive/root/File 1.txt"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.set_method("POST"); // Set non "GET" method. - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root/File 1.txt"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->set_method("POST"); // Set non "GET" method. + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request->status().error()); } TEST_F(DriveURLRequestJobTest, RegularFile) { @@ -203,19 +206,20 @@ TEST_F(DriveURLRequestJobTest, RegularFile) { // For the first time, the file should be fetched from the server. { - net::URLRequest request(kTestUrl, - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + kTestUrl, + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); // It looks weird, but the mime type for the "File 1.txt" is "audio/mpeg" // on the server. std::string mime_type; - request.GetMimeType(&mime_type); + request->GetMimeType(&mime_type); EXPECT_EQ("audio/mpeg", mime_type); // Reading file must be done after |request| runs, otherwise @@ -229,17 +233,18 @@ TEST_F(DriveURLRequestJobTest, RegularFile) { // The caching emulation is done by FakeFileSystem. { test_delegate_.reset(new TestDelegate); - net::URLRequest request(GURL("drive:drive/root/File 1.txt"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root/File 1.txt"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); std::string mime_type; - request.GetMimeType(&mime_type); + request->GetMimeType(&mime_type); EXPECT_EQ("audio/mpeg", mime_type); std::string expected_data; @@ -251,105 +256,111 @@ TEST_F(DriveURLRequestJobTest, RegularFile) { TEST_F(DriveURLRequestJobTest, HostedDocument) { // Open a gdoc file. test_delegate_->set_quit_on_redirect(true); - net::URLRequest request( + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( GURL("drive:drive/root/Document 1 excludeDir-test.gdoc"), net::DEFAULT_PRIORITY, test_delegate_.get(), - url_request_context_.get()); - request.Start(); + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); // Make sure that a hosted document triggers redirection. - EXPECT_TRUE(request.is_redirecting()); + EXPECT_TRUE(request->is_redirecting()); EXPECT_TRUE(test_delegate_->redirect_url().is_valid()); } TEST_F(DriveURLRequestJobTest, RootDirectory) { - net::URLRequest request(GURL("drive:drive/root"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_FAILED, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_FAILED, request->status().error()); } TEST_F(DriveURLRequestJobTest, Directory) { - net::URLRequest request(GURL("drive:drive/root/Directory 1"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root/Directory 1"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_FAILED, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_FAILED, request->status().error()); } TEST_F(DriveURLRequestJobTest, NonExistingFile) { - net::URLRequest request(GURL("drive:drive/root/non-existing-file.txt"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root/non-existing-file.txt"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()); } TEST_F(DriveURLRequestJobTest, WrongFormat) { - net::URLRequest request(GURL("drive:"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); - request.Start(); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_INVALID_URL, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_INVALID_URL, request->status().error()); } TEST_F(DriveURLRequestJobTest, Cancel) { - net::URLRequest request(GURL("drive:drive/root/File 1.txt"), - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + GURL("drive:drive/root/File 1.txt"), + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); // Start the request, and cancel it immediately after it. - request.Start(); - request.Cancel(); + request->Start(); + request->Cancel(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::CANCELED, request.status().status()); + EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status()); } TEST_F(DriveURLRequestJobTest, RangeHeader) { const GURL kTestUrl("drive:drive/root/File 1.txt"); const base::FilePath kTestFilePath("drive/root/File 1.txt"); - net::URLRequest request(kTestUrl, - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + kTestUrl, + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); // Set range header. - request.SetExtraRequestHeaderByName( + request->SetExtraRequestHeaderByName( "Range", "bytes=3-5", false /* overwrite */); - request.Start(); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); // Reading file must be done after |request| runs, otherwise // it'll create a local cache file, and we cannot test correctly. @@ -361,20 +372,21 @@ TEST_F(DriveURLRequestJobTest, RangeHeader) { TEST_F(DriveURLRequestJobTest, WrongRangeHeader) { const GURL kTestUrl("drive:drive/root/File 1.txt"); - net::URLRequest request(kTestUrl, - net::DEFAULT_PRIORITY, - test_delegate_.get(), - url_request_context_.get()); + scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( + kTestUrl, + net::DEFAULT_PRIORITY, + test_delegate_.get(), + NULL)); // Set range header. - request.SetExtraRequestHeaderByName( + request->SetExtraRequestHeaderByName( "Range", "Wrong Range Header Value", false /* overwrite */); - request.Start(); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request.status().error()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request->status().error()); } } // namespace drive diff --git a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc index c3a9a1f..d6b85a8 100644 --- a/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc +++ b/chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc @@ -36,10 +36,11 @@ void AssertInterceptedIO( net::URLRequestJobFactory* interceptor) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); net::URLRequestContext context; - net::URLRequest request(url, net::DEFAULT_PRIORITY, NULL, &context); + scoped_ptr<net::URLRequest> request(context.CreateRequest( + url, net::DEFAULT_PRIORITY, NULL, NULL)); scoped_refptr<net::URLRequestJob> job = interceptor->MaybeCreateJobWithProtocolHandler( - url.scheme(), &request, context.network_delegate()); + url.scheme(), request.get(), context.network_delegate()); ASSERT_TRUE(job.get() != NULL); } diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc index 661b880..fb1d05f 100644 --- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc @@ -11,6 +11,7 @@ #include "base/files/file_path.h" #include "base/json/json_reader.h" #include "base/json/json_string_value_serializer.h" +#include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/message_loop/message_loop.h" #include "base/path_service.h" @@ -238,8 +239,8 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { GURL redirect_url("about:redirected"); GURL not_chosen_redirect_url("about:not_chosen"); - net::URLRequest request( - GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get()); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, NULL)); { // onBeforeRequest will be dispatched twice initially. The second response - // the redirect - should win, since it has a later |install_time|. The @@ -254,7 +255,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension1_id, kEventName, kEventName + "/1", - request.identifier(), response)); + request->identifier(), response)); // Extension2 response. Arrives second, and chosen because of install_time. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -263,7 +264,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension2_id, kEventName, kEventName + "/2", - request.identifier(), response)); + request->identifier(), response)); // Extension2 response to the redirected URL. Arrives first, and chosen. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -271,7 +272,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension2_id, kEventName, kEventName + "/2", - request.identifier(), response)); + request->identifier(), response)); // Extension1 response to the redirected URL. Arrives second, and ignored. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -279,22 +280,22 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension1_id, kEventName, kEventName + "/1", - request.identifier(), response)); + request->identifier(), response)); - request.Start(); + request->Start(); base::MessageLoop::current()->Run(); - EXPECT_TRUE(!request.is_pending()); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); - EXPECT_EQ(0, request.status().error()); - EXPECT_EQ(redirect_url, request.url()); - EXPECT_EQ(2U, request.url_chain().size()); + EXPECT_TRUE(!request->is_pending()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); + EXPECT_EQ(0, request->status().error()); + EXPECT_EQ(redirect_url, request->url()); + EXPECT_EQ(2U, request->url_chain().size()); EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); } // Now test the same thing but the extensions answer in reverse order. - net::URLRequest request2( - GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, context_.get()); + scoped_ptr<net::URLRequest> request2(context_->CreateRequest( + GURL("about:blank"), net::DEFAULT_PRIORITY, &delegate_, NULL)); { ExtensionWebRequestEventRouter::EventResponse* response = NULL; @@ -305,7 +306,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension2_id, kEventName, kEventName + "/2", - request2.identifier(), response)); + request2->identifier(), response)); // Extension1 response. Arrives second, but ignored due to install_time. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -314,7 +315,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension1_id, kEventName, kEventName + "/1", - request2.identifier(), response)); + request2->identifier(), response)); // Extension2 response to the redirected URL. Arrives first, and chosen. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -322,7 +323,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension2_id, kEventName, kEventName + "/2", - request2.identifier(), response)); + request2->identifier(), response)); // Extension1 response to the redirected URL. Arrives second, and ignored. response = new ExtensionWebRequestEventRouter::EventResponse( @@ -330,16 +331,16 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension1_id, kEventName, kEventName + "/1", - request2.identifier(), response)); + request2->identifier(), response)); - request2.Start(); + request2->Start(); base::MessageLoop::current()->Run(); - EXPECT_TRUE(!request2.is_pending()); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request2.status().status()); - EXPECT_EQ(0, request2.status().error()); - EXPECT_EQ(redirect_url, request2.url()); - EXPECT_EQ(2U, request2.url_chain().size()); + EXPECT_TRUE(!request2->is_pending()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request2->status().status()); + EXPECT_EQ(0, request2->status().error()); + EXPECT_EQ(redirect_url, request2->url()); + EXPECT_EQ(2U, request2->url_chain().size()); EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); } @@ -367,8 +368,8 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { ipc_sender_factory.GetWeakPtr()); GURL request_url("about:blank"); - net::URLRequest request( - request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get()); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); // onBeforeRequest will be dispatched twice. The second response - // the redirect - would win, since it has a later |install_time|, but @@ -384,7 +385,7 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension1_id, kEventName, kEventName + "/1", - request.identifier(), response)); + request->identifier(), response)); // Extension2 response. Arrives second, but has higher precedence // due to its later install_time. @@ -394,17 +395,17 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension2_id, kEventName, kEventName + "/2", - request.identifier(), response)); + request->identifier(), response)); - request.Start(); + request->Start(); base::MessageLoop::current()->Run(); - EXPECT_TRUE(!request.is_pending()); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, request.status().error()); - EXPECT_EQ(request_url, request.url()); - EXPECT_EQ(1U, request.url_chain().size()); + EXPECT_TRUE(!request->is_pending()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, request->status().error()); + EXPECT_EQ(request_url, request->url()); + EXPECT_EQ(1U, request->url_chain().size()); EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( @@ -435,8 +436,8 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) { filter, 0, -1, -1, ipc_sender_factory.GetWeakPtr()); GURL request_url("about:blank"); - net::URLRequest request( - request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get()); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); ExtensionWebRequestEventRouter::EventResponse* response = NULL; @@ -449,7 +450,7 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) { ipc_sender_.PushTask( base::Bind(&EventHandledOnIOThread, &profile_, extension_id, kEventName, kEventName + "/1", - request.identifier(), response)); + request->identifier(), response)); // Extension response for OnErrorOccurred: Terminate the message loop. ipc_sender_.PushTask( @@ -457,16 +458,16 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) { base::Unretained(base::MessageLoop::current()), FROM_HERE, base::MessageLoop::QuitClosure())); - request.Start(); - // request.Start() will have submitted OnBeforeRequest by the time we cancel. - request.Cancel(); + request->Start(); + // request->Start() will have submitted OnBeforeRequest by the time we cancel. + request->Cancel(); base::MessageLoop::current()->Run(); - EXPECT_TRUE(!request.is_pending()); - EXPECT_EQ(net::URLRequestStatus::CANCELED, request.status().status()); - EXPECT_EQ(net::ERR_ABORTED, request.status().error()); - EXPECT_EQ(request_url, request.url()); - EXPECT_EQ(1U, request.url_chain().size()); + EXPECT_TRUE(!request->is_pending()); + EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status()); + EXPECT_EQ(net::ERR_ABORTED, request->status().error()); + EXPECT_EQ(request_url, request->url()); + EXPECT_EQ(1U, request->url_chain().size()); EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( @@ -499,13 +500,14 @@ void ExtensionWebRequestTest::FireURLRequestWithData( const std::vector<char>& bytes_2) { // The request URL can be arbitrary but must have an HTTP or HTTPS scheme. GURL request_url("http://www.example.com"); - net::URLRequest request( - request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get()); - request.set_method(method); - if (content_type != NULL) - request.SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType, - content_type, - true /* overwrite */); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); + request->set_method(method); + if (content_type != NULL) { + request->SetExtraRequestHeaderByName(net::HttpRequestHeaders::kContentType, + content_type, + true /* overwrite */); + } ScopedVector<net::UploadElementReader> element_readers; element_readers.push_back(new net::UploadBytesElementReader( &(bytes_1[0]), bytes_1.size())); @@ -517,10 +519,10 @@ void ExtensionWebRequestTest::FireURLRequestWithData( base::Time())); element_readers.push_back( new net::UploadBytesElementReader(&(bytes_2[0]), bytes_2.size())); - request.set_upload(make_scoped_ptr( + request->set_upload(make_scoped_ptr( new net::UploadDataStream(element_readers.Pass(), 0))); ipc_sender_.PushTask(base::Bind(&base::DoNothing)); - request.Start(); + request->Start(); } TEST_F(ExtensionWebRequestTest, AccessRequestBodyData) { @@ -713,11 +715,11 @@ TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) { const GURL request_url("http://www.example.com"); for (size_t i = 0; i < arraysize(kMethods); ++i) { - net::URLRequest request( - request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get()); - request.set_method(kMethods[i]); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); + request->set_method(kMethods[i]); ipc_sender_.PushTask(base::Bind(&base::DoNothing)); - request.Start(); + request->Start(); } // We inspect the result in the message list of |ipc_sender_| later. @@ -833,8 +835,8 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { ipc_sender_factory.GetWeakPtr()); GURL request_url("http://doesnotexist/does_not_exist.html"); - net::URLRequest request( - request_url, net::DEFAULT_PRIORITY, &delegate_, context_.get()); + scoped_ptr<net::URLRequest> request(context_->CreateRequest( + request_url, net::DEFAULT_PRIORITY, &delegate_, NULL)); // Initialize headers available before extensions are notified of the // onBeforeSendHeaders event. @@ -842,7 +844,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { net::HttpRequestHeaders before_headers; for (int i = 0; i < test.before_size; ++i) before_headers.SetHeader(test.before[i].name, test.before[i].value); - request.SetExtraRequestHeaders(before_headers); + request->SetExtraRequestHeaders(before_headers); // Gather the modifications to the headers for the respective extensions. // We assume here that all modifications of one extension are listed @@ -855,7 +857,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { mod.extension_id == 1 ? extension1_id : extension2_id, base::Time::FromDoubleT(mod.extension_id)); response->request_headers.reset(new net::HttpRequestHeaders()); - response->request_headers->MergeFrom(request.extra_request_headers()); + response->request_headers->MergeFrom(request->extra_request_headers()); } switch (mod.type) { @@ -875,7 +877,7 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { base::Bind(&EventHandledOnIOThread, &profile_, mod.extension_id == 1 ? extension1_id : extension2_id, kEventName, kEventName + (mod.extension_id == 1 ? "/1" : "/2"), - request.identifier(), response)); + request->identifier(), response)); response = NULL; } } @@ -884,19 +886,19 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) { ipc_sender_.PushTask(base::Bind(&base::DoNothing)); // Note that we mess up the headers slightly: - // request.Start() will first add additional headers (e.g. the User-Agent) + // request->Start() will first add additional headers (e.g. the User-Agent) // and then send an event to the extension. When we have prepared our // answers to the onBeforeSendHeaders events above, these headers did not // exists and are therefore not listed in the responses. This makes // them seem deleted. - request.Start(); + request->Start(); base::MessageLoop::current()->Run(); - EXPECT_TRUE(!request.is_pending()); + EXPECT_TRUE(!request->is_pending()); // This cannot succeed as we send the request to a server that does not exist. - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); - EXPECT_EQ(request_url, request.url()); - EXPECT_EQ(1U, request.url_chain().size()); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); + EXPECT_EQ(request_url, request->url()); + EXPECT_EQ(1U, request->url_chain().size()); EXPECT_EQ(0U, ipc_sender_.GetNumTasks()); // Calculate the expected headers. diff --git a/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc b/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc index 69a46e7..f4134d1 100644 --- a/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc +++ b/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc @@ -21,6 +21,7 @@ #include "net/test/cert_test_util.h" #include "net/url_request/fraudulent_certificate_reporter.h" #include "net/url_request/url_request.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" @@ -115,23 +116,6 @@ class NotSendingTestReporter : public TestReporter { } }; -// For the first version of the feature, sending reports is "fire and forget". -// Therefore, we test only that the Reporter tried to send a request at all. -// In the future, when we have more sophisticated (i.e., any) error handling -// and re-tries, we will need more sopisticated tests as well. -// -// This class doesn't do anything now, but in near future versions it will. -class MockURLRequest : public net::URLRequest { - public: - explicit MockURLRequest(net::URLRequestContext* context) - : net::URLRequest(GURL(std::string()), - net::DEFAULT_PRIORITY, - NULL, - context) {} - - private: -}; - // A ChromeFraudulentCertificateReporter that uses a MockURLRequest, but is // otherwise normal: reports are constructed and sent in the usual way. class MockReporter : public ChromeFraudulentCertificateReporter { @@ -141,7 +125,10 @@ class MockReporter : public ChromeFraudulentCertificateReporter { virtual scoped_ptr<net::URLRequest> CreateURLRequest( net::URLRequestContext* context) OVERRIDE { - return scoped_ptr<net::URLRequest>(new MockURLRequest(context)); + return context->CreateRequest(GURL(std::string()), + net::DEFAULT_PRIORITY, + NULL, + NULL); } virtual void SendReport( diff --git a/chrome/browser/policy/url_blacklist_manager_unittest.cc b/chrome/browser/policy/url_blacklist_manager_unittest.cc index bc0fd5c..5bfed61 100644 --- a/chrome/browser/policy/url_blacklist_manager_unittest.cc +++ b/chrome/browser/policy/url_blacklist_manager_unittest.cc @@ -20,6 +20,7 @@ #include "net/base/net_errors.h" #include "net/base/request_priority.h" #include "net/url_request/url_request.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" @@ -643,16 +644,16 @@ TEST_F(URLBlacklistManagerTest, DontBlockResources) { EXPECT_TRUE(blacklist_manager_->IsURLBlocked(GURL("http://google.com"))); net::TestURLRequestContext context; - net::URLRequest request( - GURL("http://google.com"), net::DEFAULT_PRIORITY, NULL, &context); + scoped_ptr<net::URLRequest> request(context.CreateRequest( + GURL("http://google.com"), net::DEFAULT_PRIORITY, NULL, NULL)); int reason = net::ERR_UNEXPECTED; // Background requests aren't filtered. - EXPECT_FALSE(blacklist_manager_->IsRequestBlocked(request, &reason)); + EXPECT_FALSE(blacklist_manager_->IsRequestBlocked(*request.get(), &reason)); // Main frames are filtered. - request.SetLoadFlags(net::LOAD_MAIN_FRAME); - EXPECT_TRUE(blacklist_manager_->IsRequestBlocked(request, &reason)); + request->SetLoadFlags(net::LOAD_MAIN_FRAME); + EXPECT_TRUE(blacklist_manager_->IsRequestBlocked(*request.get(), &reason)); EXPECT_EQ(net::ERR_BLOCKED_BY_ADMINISTRATOR, reason); // On most platforms, sync gets a free pass due to signin flows. @@ -665,10 +666,11 @@ TEST_F(URLBlacklistManagerTest, DontBlockResources) { GURL sync_url(GaiaUrls::GetInstance()->service_login_url().Resolve( "?service=chromiumsync")); - net::URLRequest sync_request(sync_url, net::DEFAULT_PRIORITY, NULL, &context); - sync_request.SetLoadFlags(net::LOAD_MAIN_FRAME); + scoped_ptr<net::URLRequest> sync_request(context.CreateRequest( + sync_url, net::DEFAULT_PRIORITY, NULL, NULL)); + sync_request->SetLoadFlags(net::LOAD_MAIN_FRAME); EXPECT_EQ(block_signin_urls, - blacklist_manager_->IsRequestBlocked(sync_request, &reason)); + blacklist_manager_->IsRequestBlocked(*sync_request.get(), &reason)); } TEST_F(URLBlacklistManagerTest, DefaultBlacklistExceptions) { diff --git a/chrome/browser/prerender/prerender_tracker_unittest.cc b/chrome/browser/prerender/prerender_tracker_unittest.cc index 54b77a9..2d20c45 100644 --- a/chrome/browser/prerender/prerender_tracker_unittest.cc +++ b/chrome/browser/prerender/prerender_tracker_unittest.cc @@ -224,12 +224,12 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectResume) { // Fake a request. net::TestURLRequestContext url_request_context; DeferredRedirectDelegate delegate; - net::URLRequest request( + scoped_ptr<net::URLRequest> request(url_request_context.CreateRequest( content::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(kRedirectPath)), net::DEFAULT_PRIORITY, &delegate, - &url_request_context); - content::ResourceRequestInfo::AllocateForTesting(&request, + NULL)); + content::ResourceRequestInfo::AllocateForTesting(request.get(), content::RESOURCE_TYPE_IMAGE, NULL, kDefaultChildId, @@ -238,11 +238,11 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectResume) { true); // Install a prerender throttle. - PrerenderResourceThrottle throttle(&request); + PrerenderResourceThrottle throttle(request.get()); delegate.SetThrottle(&throttle); // Start the request and wait for a redirect. - request.Start(); + request->Start(); delegate.Run(); EXPECT_TRUE(delegate.was_deferred()); // This calls WillRedirectRequestOnUI(). @@ -267,13 +267,13 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectMainFrame) { // Fake a request. net::TestURLRequestContext url_request_context; DeferredRedirectDelegate delegate; - net::URLRequest request( + scoped_ptr<net::URLRequest> request(url_request_context.CreateRequest( content::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(kRedirectPath)), net::DEFAULT_PRIORITY, &delegate, - &url_request_context); + NULL)); content::ResourceRequestInfo::AllocateForTesting( - &request, + request.get(), content::RESOURCE_TYPE_MAIN_FRAME, NULL, kDefaultChildId, @@ -282,12 +282,12 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectMainFrame) { true); // Install a prerender throttle. - PrerenderResourceThrottle throttle(&request); + PrerenderResourceThrottle throttle(request.get()); delegate.SetThrottle(&throttle); // Start the request and wait for a redirect. This time, it should // not be deferred. - request.Start(); + request->Start(); delegate.Run(); // This calls WillRedirectRequestOnUI(). RunEvents(); @@ -309,12 +309,12 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectSyncXHR) { // Fake a request. net::TestURLRequestContext url_request_context; DeferredRedirectDelegate delegate; - net::URLRequest request( + scoped_ptr<net::URLRequest> request(url_request_context.CreateRequest( content::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(kRedirectPath)), net::DEFAULT_PRIORITY, &delegate, - &url_request_context); - content::ResourceRequestInfo::AllocateForTesting(&request, + NULL)); + content::ResourceRequestInfo::AllocateForTesting(request.get(), content::RESOURCE_TYPE_XHR, NULL, kDefaultChildId, @@ -323,11 +323,11 @@ TEST_F(PrerenderTrackerTest, PrerenderThrottledRedirectSyncXHR) { false); // Install a prerender throttle. - PrerenderResourceThrottle throttle(&request); + PrerenderResourceThrottle throttle(request.get()); delegate.SetThrottle(&throttle); // Start the request and wait for a redirect. - request.Start(); + request->Start(); delegate.Run(); // This calls WillRedirectRequestOnUI(). RunEvents(); diff --git a/chrome/browser/search/iframe_source_unittest.cc b/chrome/browser/search/iframe_source_unittest.cc index 8baf16f..801cb87 100644 --- a/chrome/browser/search/iframe_source_unittest.cc +++ b/chrome/browser/search/iframe_source_unittest.cc @@ -93,19 +93,20 @@ class IframeSourceTest : public testing::Test { return ""; } - net::URLRequest* MockRequest( + scoped_ptr<net::URLRequest> MockRequest( const std::string& url, bool allocate_info, int render_process_id, int render_frame_id) { - net::URLRequest* request = - new net::URLRequest(GURL(url), - net::DEFAULT_PRIORITY, - NULL, - resource_context_.GetRequestContext()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + GURL(url), + net::DEFAULT_PRIORITY, + NULL, + NULL)); if (allocate_info) { content::ResourceRequestInfo::AllocateForTesting( - request, + request.get(), content::RESOURCE_TYPE_SUB_FRAME, &resource_context_, render_process_id, @@ -113,7 +114,7 @@ class IframeSourceTest : public testing::Test { MSG_ROUTING_NONE, false); } - return request; + return request.Pass(); } void SendResource(int resource_id) { @@ -160,23 +161,23 @@ class IframeSourceTest : public testing::Test { TEST_F(IframeSourceTest, ShouldServiceRequest) { scoped_ptr<net::URLRequest> request; - request.reset(MockRequest("http://test/loader.js", true, - kNonInstantRendererPID, 0)); + request = MockRequest("http://test/loader.js", true, + kNonInstantRendererPID, 0); EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); - request.reset(MockRequest("chrome-search://bogus/valid.js", true, - kInstantRendererPID, 0)); + request = MockRequest("chrome-search://bogus/valid.js", true, + kInstantRendererPID, 0); EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); - request.reset(MockRequest("chrome-search://test/bogus.js", true, - kInstantRendererPID, 0)); + request = MockRequest("chrome-search://test/bogus.js", true, + kInstantRendererPID, 0); EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); - request.reset(MockRequest("chrome-search://test/valid.js", true, - kInstantRendererPID, 0)); + request = MockRequest("chrome-search://test/valid.js", true, + kInstantRendererPID, 0); EXPECT_TRUE(source()->ShouldServiceRequest(request.get())); - request.reset(MockRequest("chrome-search://test/valid.js", true, - kNonInstantRendererPID, 0)); + request = MockRequest("chrome-search://test/valid.js", true, + kNonInstantRendererPID, 0); EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); - request.reset(MockRequest("chrome-search://test/valid.js", true, - kInvalidRendererPID, 0)); + request = MockRequest("chrome-search://test/valid.js", true, + kInvalidRendererPID, 0); EXPECT_FALSE(source()->ShouldServiceRequest(request.get())); } diff --git a/cloud_print/service/service_state.cc b/cloud_print/service/service_state.cc index 0894e20..811c2c1 100644 --- a/cloud_print/service/service_state.cc +++ b/cloud_print/service/service_state.cc @@ -175,21 +175,21 @@ std::string ServiceState::LoginToGoogle(const std::string& service, post_body += "&source=" + net::EscapeUrlEncodedData("CP-Service", true); post_body += "&service=" + net::EscapeUrlEncodedData(service, true); - net::URLRequest request( - url, net::DEFAULT_PRIORITY, &fetcher_delegate, context.get()); - int load_flags = request.load_flags(); + scoped_ptr<net::URLRequest> request(context->CreateRequest( + url, net::DEFAULT_PRIORITY, &fetcher_delegate, NULL)); + int load_flags = request->load_flags(); load_flags = load_flags | net::LOAD_DO_NOT_SEND_COOKIES; load_flags = load_flags | net::LOAD_DO_NOT_SAVE_COOKIES; - request.SetLoadFlags(load_flags); + request->SetLoadFlags(load_flags); scoped_ptr<net::UploadElementReader> reader( net::UploadOwnedBytesElementReader::CreateWithString(post_body)); - request.set_upload(make_scoped_ptr( + request->set_upload(make_scoped_ptr( net::UploadDataStream::CreateWithReader(reader.Pass(), 0))); - request.SetExtraRequestHeaderByName( + request->SetExtraRequestHeaderByName( "Content-Type", "application/x-www-form-urlencoded", true); - request.set_method("POST"); - request.Start(); + request->set_method("POST"); + request->Start(); base::MessageLoop::current()->PostDelayedTask( FROM_HERE, diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc index 60e663b..999e14f 100644 --- a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc @@ -197,26 +197,27 @@ class DataReductionProxyProtocolTest : public testing::Test { const std::string& value, bool expected_retry) { TestDelegate d; - URLRequest r(GURL("http://www.google.com/"), - net::DEFAULT_PRIORITY, - &d, - context_.get()); - r.set_method(method); - r.SetLoadFlags(net::LOAD_NORMAL); - - r.Start(); + scoped_ptr<URLRequest> r(context_->CreateRequest( + GURL("http://www.google.com/"), + net::DEFAULT_PRIORITY, + &d, + NULL)); + r->set_method(method); + r->SetLoadFlags(net::LOAD_NORMAL); + + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(net::OK, r.status().error()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(net::OK, r->status().error()); if (expected_retry) - EXPECT_EQ(2U, r.url_chain().size()); + EXPECT_EQ(2U, r->url_chain().size()); else - EXPECT_EQ(1U, r.url_chain().size()); + EXPECT_EQ(1U, r->url_chain().size()); if (!header.empty()) { // We also have a server header here that isn't set by the proxy. - EXPECT_TRUE(r.response_headers()->HasHeaderValue(header, value)); + EXPECT_TRUE(r->response_headers()->HasHeaderValue(header, value)); } EXPECT_EQ(content, d.data_received()); @@ -247,8 +248,7 @@ class DataReductionProxyProtocolTest : public testing::Test { if (duration_seconds == 0) { expected_min_duration = base::TimeDelta::FromMinutes(1); expected_max_duration = base::TimeDelta::FromMinutes(5); - } - else { + } else { expected_min_duration = base::TimeDelta::FromSeconds(duration_seconds); expected_max_duration = base::TimeDelta::FromSeconds(duration_seconds); } @@ -753,18 +753,19 @@ TEST_F(DataReductionProxyProtocolTest, mock_socket_factory_.AddSocketDataProvider(&data1); TestDelegate d; - URLRequest r(GURL("http://www.google.com/"), - net::DEFAULT_PRIORITY, - &d, - context_.get()); - r.set_method("GET"); - r.SetLoadFlags(net::LOAD_NORMAL); - - r.Start(); - base::RunLoop().Run(); - - EXPECT_EQ(net::URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(net::OK, r.status().error()); + scoped_ptr<URLRequest> r(context_->CreateRequest( + GURL("http://www.google.com/"), + net::DEFAULT_PRIORITY, + &d, + NULL)); + r->set_method("GET"); + r->SetLoadFlags(net::LOAD_NORMAL); + + r->Start(); + base::RunLoop().Run(); + + EXPECT_EQ(net::URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(net::OK, r->status().error()); EXPECT_EQ("Bypass message", d.data_received()); diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats_unittest.cc index a3f02d3..e522a95 100644 --- a/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats_unittest.cc +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_usage_stats_unittest.cc @@ -48,9 +48,10 @@ class DataReductionProxyUsageStatsTest : public testing::Test { DataReductionProxyUsageStatsTest() : loop_proxy_(MessageLoopProxy::current().get()), context_(true), - mock_url_request_(GURL(), net::IDLE, &delegate_, &context_), unavailable_(false) { context_.Init(); + mock_url_request_ = context_.CreateRequest(GURL(), net::IDLE, &delegate_, + NULL); } void NotifyUnavailable(bool unavailable) { @@ -65,7 +66,7 @@ class DataReductionProxyUsageStatsTest : public testing::Test { TestURLRequestContext context_; TestDelegate delegate_; DataReductionProxyParamsMock mock_params_; - URLRequest mock_url_request_; + scoped_ptr<URLRequest> mock_url_request_; bool unavailable_; }; @@ -95,10 +96,11 @@ TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) { for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { TestCase test_case = test_cases[i]; - EXPECT_CALL(mock_params_, IsDataReductionProxyEligible(&mock_url_request_)) - .WillRepeatedly(Return(test_case.is_proxy_eligible)); EXPECT_CALL(mock_params_, - WasDataReductionProxyUsed(&mock_url_request_, NULL)) + IsDataReductionProxyEligible(mock_url_request_.get())) + .WillRepeatedly(Return(test_case.is_proxy_eligible)); + EXPECT_CALL(mock_params_, + WasDataReductionProxyUsed(mock_url_request_.get(), NULL)) .WillRepeatedly(Return(test_case.was_proxy_used)); scoped_ptr<DataReductionProxyUsageStats> usage_stats( @@ -108,7 +110,7 @@ TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) { base::Bind(&DataReductionProxyUsageStatsTest::NotifyUnavailable, base::Unretained(this))); - usage_stats->OnUrlRequestCompleted(&mock_url_request_, false); + usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false); MessageLoop::current()->RunUntilIdle(); EXPECT_EQ(test_case.is_unreachable, unavailable_); diff --git a/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc b/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc index 1959a86..9715630 100644 --- a/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc +++ b/components/navigation_interception/intercept_navigation_resource_throttle_unittest.cc @@ -121,15 +121,16 @@ class TestIOThreadState { RedirectMode redirect_mode, MockInterceptCallbackReceiver* callback_receiver) : resource_context_(&test_url_request_context_), - request_(url, - net::DEFAULT_PRIORITY, - NULL, - resource_context_.GetRequestContext()) { + request_(resource_context_.GetRequestContext()->CreateRequest( + url, + net::DEFAULT_PRIORITY, + NULL /* delegate */, + NULL /* cookie_store */)) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); if (render_process_id != MSG_ROUTING_NONE && render_frame_id != MSG_ROUTING_NONE) { content::ResourceRequestInfo::AllocateForTesting( - &request_, + request_.get(), content::RESOURCE_TYPE_MAIN_FRAME, &resource_context_, render_process_id, @@ -138,15 +139,15 @@ class TestIOThreadState { false); } throttle_.reset(new InterceptNavigationResourceThrottle( - &request_, + request_.get(), base::Bind(&MockInterceptCallbackReceiver::ShouldIgnoreNavigation, base::Unretained(callback_receiver)))); throttle_->set_controller_for_testing(&throttle_controller_); - request_.set_method(request_method); + request_->set_method(request_method); if (redirect_mode == REDIRECT_MODE_302) { net::HttpResponseInfo& response_info = - const_cast<net::HttpResponseInfo&>(request_.response_info()); + const_cast<net::HttpResponseInfo&>(request_->response_info()); response_info.headers = new net::HttpResponseHeaders( "Status: 302 Found\0\0"); } @@ -175,7 +176,7 @@ class TestIOThreadState { private: net::TestURLRequestContext test_url_request_context_; content::MockResourceContext resource_context_; - net::URLRequest request_; + scoped_ptr<net::URLRequest> request_; scoped_ptr<InterceptNavigationResourceThrottle> throttle_; MockResourceController throttle_controller_; }; diff --git a/content/browser/appcache/appcache_request_handler_unittest.cc b/content/browser/appcache/appcache_request_handler_unittest.cc index 6376a0f..2491c1d 100644 --- a/content/browser/appcache/appcache_request_handler_unittest.cc +++ b/content/browser/appcache/appcache_request_handler_unittest.cc @@ -97,7 +97,7 @@ class AppCacheRequestHandlerTest : public testing::Test { has_response_info_(true), response_info_(info) {} - protected: + protected: virtual ~MockURLRequestJob() {} virtual void Start() OVERRIDE { NotifyHeadersComplete(); @@ -112,7 +112,7 @@ class AppCacheRequestHandlerTest : public testing::Test { *info = response_info_; } - private: + private: int response_code_; bool has_response_info_; net::HttpResponseInfo response_info_; @@ -164,15 +164,6 @@ class AppCacheRequestHandlerTest : public testing::Test { mutable net::URLRequestJob* job_; }; - class MockURLRequest : public net::URLRequest { - public: - MockURLRequest(const GURL& url, net::URLRequestContext* context) - : net::URLRequest(url, net::DEFAULT_PRIORITY, NULL, context) {} - - - MockURLRequestDelegate delegate_; - }; - static void SetUpTestCase() { io_thread_.reset(new base::Thread("AppCacheRequestHandlerTest Thread")); base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); @@ -263,7 +254,8 @@ class AppCacheRequestHandlerTest : public testing::Test { base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Miss, base::Unretained(this))); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -310,7 +302,8 @@ class AppCacheRequestHandlerTest : public testing::Test { base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Hit, base::Unretained(this))); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -358,7 +351,8 @@ class AppCacheRequestHandlerTest : public testing::Test { base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Fallback, base::Unretained(this))); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -395,7 +389,6 @@ class AppCacheRequestHandlerTest : public testing::Test { new MockURLRequestJob( request_.get(), request_->context()->network_delegate(), info)); - request_->set_delegate(&request_->delegate_); request_->Start(); } @@ -439,8 +432,9 @@ class AppCacheRequestHandlerTest : public testing::Test { &AppCacheRequestHandlerTest::Verify_MainResource_FallbackOverride, base::Unretained(this))); - request_.reset(new MockURLRequest(GURL("http://blah/fallback-override"), - &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/fallback-override"), net::DEFAULT_PRIORITY, + &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -492,7 +486,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // SubResource_Miss_WithNoCacheSelected ---------------------------------- void SubResource_Miss_WithNoCacheSelected() { - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); @@ -510,7 +505,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // in a network or fallback namespace, should result in a failed request. host_->AssociateCompleteCache(MakeNewCache()); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -541,7 +537,8 @@ class AppCacheRequestHandlerTest : public testing::Test { host_->pending_selected_cache_id_ = cache->cache_id(); host_->set_preferred_manifest_url(cache->owning_group()->manifest_url()); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -575,7 +572,8 @@ class AppCacheRequestHandlerTest : public testing::Test { mock_storage()->SimulateFindSubResource( AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -607,7 +605,8 @@ class AppCacheRequestHandlerTest : public testing::Test { mock_storage()->SimulateFindSubResource( AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -640,7 +639,8 @@ class AppCacheRequestHandlerTest : public testing::Test { mock_storage()->SimulateFindSubResource( AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -674,7 +674,8 @@ class AppCacheRequestHandlerTest : public testing::Test { mock_storage()->SimulateFindSubResource( AppCacheEntry(), AppCacheEntry(), true); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -703,7 +704,8 @@ class AppCacheRequestHandlerTest : public testing::Test { mock_storage()->SimulateFindSubResource( AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -729,7 +731,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // Precondition, the host is waiting on cache selection. host_->pending_selected_cache_id_ = 1; - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); @@ -761,7 +764,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // Precondition, the host is waiting on cache selection. host_->pending_selected_cache_id_ = 1; - request_.reset(new MockURLRequest(GURL("ftp://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("ftp://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_SUB_RESOURCE)); EXPECT_TRUE(handler_.get()); // we could redirect to http (conceivably) @@ -781,7 +785,8 @@ class AppCacheRequestHandlerTest : public testing::Test { // CanceledRequest ----------------------------- void CanceledRequest() { - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -817,7 +822,8 @@ class AppCacheRequestHandlerTest : public testing::Test { EXPECT_FALSE(AppCacheRequestHandler::IsMainResourceType( RESOURCE_TYPE_WORKER)); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); const int kParentHostId = host_->host_id(); const int kWorkerHostId = 2; @@ -854,7 +860,8 @@ class AppCacheRequestHandlerTest : public testing::Test { base::Bind(&AppCacheRequestHandlerTest::Verify_MainResource_Blocked, base::Unretained(this))); - request_.reset(new MockURLRequest(GURL("http://blah/"), &empty_context_)); + request_ = empty_context_.CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, &delegate_, NULL); handler_.reset(host_->CreateRequestHandler(request_.get(), RESOURCE_TYPE_MAIN_FRAME)); EXPECT_TRUE(handler_.get()); @@ -916,7 +923,8 @@ class AppCacheRequestHandlerTest : public testing::Test { AppCacheHost* host_; net::URLRequestContext empty_context_; scoped_ptr<MockURLRequestJobFactory> job_factory_; - scoped_ptr<MockURLRequest> request_; + MockURLRequestDelegate delegate_; + scoped_ptr<net::URLRequest> request_; scoped_ptr<AppCacheRequestHandler> handler_; scoped_refptr<AppCacheURLRequestJob> job_; diff --git a/content/browser/appcache/appcache_url_request_job_unittest.cc b/content/browser/appcache/appcache_url_request_job_unittest.cc index 7c70eed..31518fb 100644 --- a/content/browser/appcache/appcache_url_request_job_unittest.cc +++ b/content/browser/appcache/appcache_url_request_job_unittest.cc @@ -9,6 +9,8 @@ #include "base/bind_helpers.h" #include "base/callback.h" #include "base/compiler_specific.h" +#include "base/logging.h" +#include "base/memory/scoped_ptr.h" #include "base/pickle.h" #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" @@ -24,6 +26,7 @@ #include "net/url_request/url_request_error_job.h" #include "net/url_request/url_request_job_factory.h" #include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" using net::IOBuffer; using net::WrappedIOBuffer; @@ -83,8 +86,8 @@ class MockURLRequestJobFactory : public net::URLRequestJobFactory { return false; } - private: - mutable net::URLRequestJob* job_; + private: + mutable net::URLRequestJob* job_; }; class AppCacheURLRequestJobTest : public testing::Test { @@ -416,14 +419,13 @@ class AppCacheURLRequestJobTest : public testing::Test { // Basic ------------------------------------------------------------------- void Basic() { AppCacheStorage* storage = service_->storage(); - net::URLRequest request(GURL("http://blah/"), net::DEFAULT_PRIORITY, NULL, - empty_context_.get()); + scoped_ptr<net::URLRequest> request(empty_context_->CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, NULL, NULL)); scoped_refptr<AppCacheURLRequestJob> job; // Create an instance and see that it looks as expected. - job = new AppCacheURLRequestJob( - &request, NULL, storage, NULL, false); + job = new AppCacheURLRequestJob(request.get(), NULL, storage, NULL, false); EXPECT_TRUE(job->is_waiting()); EXPECT_FALSE(job->is_delivering_appcache_response()); EXPECT_FALSE(job->is_delivering_network_response()); @@ -440,24 +442,24 @@ class AppCacheURLRequestJobTest : public testing::Test { // DeliveryOrders ----------------------------------------------------- void DeliveryOrders() { AppCacheStorage* storage = service_->storage(); - net::URLRequest request(GURL("http://blah/"), net::DEFAULT_PRIORITY, NULL, - empty_context_.get()); + scoped_ptr<net::URLRequest> request(empty_context_->CreateRequest( + GURL("http://blah/"), net::DEFAULT_PRIORITY, NULL, NULL)); scoped_refptr<AppCacheURLRequestJob> job; // Create an instance, give it a delivery order and see that // it looks as expected. - job = new AppCacheURLRequestJob(&request, NULL, storage, NULL, false); + job = new AppCacheURLRequestJob(request.get(), NULL, storage, NULL, false); job->DeliverErrorResponse(); EXPECT_TRUE(job->is_delivering_error_response()); EXPECT_FALSE(job->has_been_started()); - job = new AppCacheURLRequestJob(&request, NULL, storage, NULL, false); + job = new AppCacheURLRequestJob(request.get(), NULL, storage, NULL, false); job->DeliverNetworkResponse(); EXPECT_TRUE(job->is_delivering_network_response()); EXPECT_FALSE(job->has_been_started()); - job = new AppCacheURLRequestJob(&request, NULL, storage, NULL, false); + job = new AppCacheURLRequestJob(request.get(), NULL, storage, NULL, false); const GURL kManifestUrl("http://blah/"); const int64 kCacheId(1); const int64 kGroupId(1); diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc index c798b19..3cbce6f 100644 --- a/content/browser/loader/resource_dispatcher_host_unittest.cc +++ b/content/browser/loader/resource_dispatcher_host_unittest.cc @@ -1763,15 +1763,17 @@ TEST_F(ResourceDispatcherHostTest, TestBlockedRequestsDontLeak) { // Test the private helper method "CalculateApproximateMemoryCost()". TEST_F(ResourceDispatcherHostTest, CalculateApproximateMemoryCost) { net::URLRequestContext context; - net::URLRequest req( - GURL("http://www.google.com"), net::DEFAULT_PRIORITY, NULL, &context); - EXPECT_EQ(4427, - ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(&req)); + scoped_ptr<net::URLRequest> req(context.CreateRequest( + GURL("http://www.google.com"), net::DEFAULT_PRIORITY, NULL, NULL)); + EXPECT_EQ( + 4427, + ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(req.get())); // Add 9 bytes of referrer. - req.SetReferrer("123456789"); - EXPECT_EQ(4436, - ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(&req)); + req->SetReferrer("123456789"); + EXPECT_EQ( + 4436, + ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(req.get())); // Add 33 bytes of upload content. std::string upload_content; @@ -1779,12 +1781,13 @@ TEST_F(ResourceDispatcherHostTest, CalculateApproximateMemoryCost) { std::fill(upload_content.begin(), upload_content.end(), 'x'); scoped_ptr<net::UploadElementReader> reader(new net::UploadBytesElementReader( upload_content.data(), upload_content.size())); - req.set_upload(make_scoped_ptr( + req->set_upload(make_scoped_ptr( net::UploadDataStream::CreateWithReader(reader.Pass(), 0))); // Since the upload throttling is disabled, this has no effect on the cost. - EXPECT_EQ(4436, - ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(&req)); + EXPECT_EQ( + 4436, + ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(req.get())); } // Test that too much memory for outstanding requests for a particular diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc index 1e489e8..23beced 100644 --- a/content/browser/loader/resource_loader_unittest.cc +++ b/content/browser/loader/resource_loader_unittest.cc @@ -313,10 +313,11 @@ class ResourceLoaderTest : public testing::Test, const int kRenderViewId = 2; scoped_ptr<net::URLRequest> request( - new net::URLRequest(test_url(), - net::DEFAULT_PRIORITY, - NULL, - resource_context_.GetRequestContext())); + resource_context_.GetRequestContext()->CreateRequest( + test_url(), + net::DEFAULT_PRIORITY, + NULL /* delegate */, + NULL /* cookie_store */)); raw_ptr_to_request_ = request.get(); ResourceRequestInfo::AllocateForTesting(request.get(), RESOURCE_TYPE_MAIN_FRAME, diff --git a/extensions/browser/extension_protocols_unittest.cc b/extensions/browser/extension_protocols_unittest.cc index e2f0607..e9aea85 100644 --- a/extensions/browser/extension_protocols_unittest.cc +++ b/extensions/browser/extension_protocols_unittest.cc @@ -5,6 +5,7 @@ #include <string> #include "base/file_util.h" +#include "base/memory/scoped_ptr.h" #include "base/message_loop/message_loop.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" @@ -177,36 +178,40 @@ TEST_F(ExtensionProtocolTest, IncognitoRequest) { // It doesn't matter that the resource doesn't exist. If the resource // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request // should just fail because the file doesn't exist. - net::URLRequest request(extension->GetResourceURL("404.html"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MAIN_FRAME); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("404.html"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); if (cases[i].should_allow_main_frame_load) { - EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << + EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << cases[i].name; } else { - EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << + EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << cases[i].name; } } // Now do a subframe request. { - net::URLRequest request(extension->GetResourceURL("404.html"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_SUB_FRAME); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("404.html"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); if (cases[i].should_allow_sub_frame_load) { - EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request.status().error()) << + EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << cases[i].name; } else { - EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request.status().error()) << + EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << cases[i].name; } } @@ -237,26 +242,30 @@ TEST_F(ExtensionProtocolTest, ComponentResourceRequest) { // First test it with the extension enabled. { - net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MEDIA); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); - CheckForContentLengthHeader(&request); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("webstore_icon_16.png"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); + CheckForContentLengthHeader(request.get()); } // And then test it with the extension disabled. extension_info_map_->RemoveExtension(extension->id(), UnloadedExtensionInfo::REASON_DISABLE); { - net::URLRequest request(extension->GetResourceURL("webstore_icon_16.png"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MEDIA); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); - CheckForContentLengthHeader(&request); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("webstore_icon_16.png"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); + CheckForContentLengthHeader(request.get()); } } @@ -273,26 +282,28 @@ TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { false); { - net::URLRequest request(extension->GetResourceURL("test.dat"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MEDIA); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("test.dat"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); // Check that cache-related headers are set. std::string etag; - request.GetResponseHeaderByName("ETag", &etag); + request->GetResponseHeaderByName("ETag", &etag); EXPECT_TRUE(StartsWithASCII(etag, "\"", false)); EXPECT_TRUE(EndsWith(etag, "\"", false)); std::string revalidation_header; - request.GetResponseHeaderByName("cache-control", &revalidation_header); + request->GetResponseHeaderByName("cache-control", &revalidation_header); EXPECT_EQ("no-cache", revalidation_header); // We set test.dat as web-accessible, so it should have a CORS header. std::string access_control; - request.GetResponseHeaderByName("Access-Control-Allow-Origin", + request->GetResponseHeaderByName("Access-Control-Allow-Origin", &access_control); EXPECT_EQ("*", access_control); } @@ -312,30 +323,36 @@ TEST_F(ExtensionProtocolTest, AllowFrameRequests) { // All MAIN_FRAME and SUB_FRAME requests should succeed. { - net::URLRequest request(extension->GetResourceURL("test.dat"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MAIN_FRAME); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("test.dat"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); } { - net::URLRequest request(extension->GetResourceURL("test.dat"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_SUB_FRAME); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("test.dat"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); } // And subresource types, such as media, should fail. { - net::URLRequest request(extension->GetResourceURL("test.dat"), - net::DEFAULT_PRIORITY, - &test_delegate_, - resource_context_.GetRequestContext()); - StartRequest(&request, content::RESOURCE_TYPE_MEDIA); - EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); + scoped_ptr<net::URLRequest> request( + resource_context_.GetRequestContext()->CreateRequest( + extension->GetResourceURL("test.dat"), + net::DEFAULT_PRIORITY, + &test_delegate_, + NULL)); + StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); + EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); } } diff --git a/mojo/services/network/url_loader_impl.cc b/mojo/services/network/url_loader_impl.cc index 52f6148..bbdfcb2 100644 --- a/mojo/services/network/url_loader_impl.cc +++ b/mojo/services/network/url_loader_impl.cc @@ -14,6 +14,7 @@ #include "net/base/upload_data_stream.h" #include "net/http/http_response_headers.h" #include "net/url_request/redirect_info.h" +#include "net/url_request/url_request_context.h" namespace mojo { namespace { @@ -83,7 +84,8 @@ class UploadDataPipeElementReader : public net::UploadElementReader { int buf_length, const net::CompletionCallback& callback) OVERRIDE { uint32_t bytes_read = - std::min(BytesRemaining(), static_cast<uint64>(buf_length)); + std::min(static_cast<uint32_t>(BytesRemaining()), + static_cast<uint32_t>(buf_length)); if (bytes_read > 0) { ReadDataRaw(pipe_.get(), buf->data(), &bytes_read, MOJO_READ_DATA_FLAG_NONE); @@ -178,11 +180,11 @@ void URLLoaderImpl::Start(URLRequestPtr request, return; } - url_request_.reset( - new net::URLRequest(GURL(request->url), - net::DEFAULT_PRIORITY, - this, - context_->url_request_context())); + url_request_ = context_->url_request_context()->CreateRequest( + GURL(request->url), + net::DEFAULT_PRIORITY, + this, + NULL); url_request_->set_method(request->method); if (request->headers) { net::HttpRequestHeaders headers; diff --git a/net/ocsp/nss_ocsp.cc b/net/ocsp/nss_ocsp.cc index 7c71948..1d7fa9d 100644 --- a/net/ocsp/nss_ocsp.cc +++ b/net/ocsp/nss_ocsp.cc @@ -20,6 +20,7 @@ #include "base/compiler_specific.h" #include "base/lazy_instance.h" #include "base/logging.h" +#include "base/memory/scoped_ptr.h" #include "base/message_loop/message_loop.h" #include "base/metrics/histogram.h" #include "base/stl_util.h" @@ -187,7 +188,6 @@ class OCSPRequestSession : url_(url), http_request_method_(http_request_method), timeout_(timeout), - request_(NULL), buffer_(new IOBuffer(kRecvBufferSize)), response_code_(-1), cv_(&lock_), @@ -218,7 +218,7 @@ class OCSPRequestSession } bool Started() const { - return request_ != NULL; + return request_.get() != NULL; } void Cancel() { @@ -286,7 +286,7 @@ class OCSPRequestSession virtual void OnReceivedRedirect(URLRequest* request, const RedirectInfo& redirect_info, bool* defer_redirect) OVERRIDE { - DCHECK_EQ(request, request_); + DCHECK_EQ(request_.get(), request); DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); if (!redirect_info.new_url.SchemeIs("http")) { @@ -297,7 +297,7 @@ class OCSPRequestSession } virtual void OnResponseStarted(URLRequest* request) OVERRIDE { - DCHECK_EQ(request, request_); + DCHECK_EQ(request_.get(), request); DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); int bytes_read = 0; @@ -307,12 +307,12 @@ class OCSPRequestSession response_headers_->GetMimeType(&response_content_type_); request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read); } - OnReadCompleted(request_, bytes_read); + OnReadCompleted(request_.get(), bytes_read); } virtual void OnReadCompleted(URLRequest* request, int bytes_read) OVERRIDE { - DCHECK_EQ(request, request_); + DCHECK_EQ(request_.get(), request); DCHECK_EQ(base::MessageLoopForIO::current(), io_loop_); do { @@ -322,8 +322,7 @@ class OCSPRequestSession } while (request_->Read(buffer_.get(), kRecvBufferSize, &bytes_read)); if (!request_->status().is_io_pending()) { - delete request_; - request_ = NULL; + request_.reset(); g_ocsp_io_loop.Get().RemoveRequest(this); { base::AutoLock autolock(lock_); @@ -345,9 +344,7 @@ class OCSPRequestSession } #endif if (request_) { - request_->Cancel(); - delete request_; - request_ = NULL; + request_.reset(); g_ocsp_io_loop.Get().RemoveRequest(this); { base::AutoLock autolock(lock_); @@ -398,8 +395,8 @@ class OCSPRequestSession g_ocsp_io_loop.Get().AddRequest(this); } - request_ = - new URLRequest(url_, DEFAULT_PRIORITY, this, url_request_context); + request_ = url_request_context->CreateRequest( + url_, DEFAULT_PRIORITY, this, NULL); // To meet the privacy requirements of incognito mode. request_->SetLoadFlags(LOAD_DISABLE_CACHE | LOAD_DO_NOT_SAVE_COOKIES | LOAD_DO_NOT_SEND_COOKIES); @@ -424,10 +421,10 @@ class OCSPRequestSession AddRef(); // Release after |request_| deleted. } - GURL url_; // The URL we eventually wound up at + GURL url_; // The URL we eventually wound up at std::string http_request_method_; - base::TimeDelta timeout_; // The timeout for OCSP - URLRequest* request_; // The actual request this wraps + base::TimeDelta timeout_; // The timeout for OCSP + scoped_ptr<URLRequest> request_; // The actual request this wraps scoped_refptr<IOBuffer> buffer_; // Read buffer HttpRequestHeaders extra_request_headers_; diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc index 7d301d1..17dee75 100644 --- a/net/spdy/spdy_network_transaction_unittest.cc +++ b/net/spdy/spdy_network_transaction_unittest.cc @@ -2482,26 +2482,27 @@ TEST_P(SpdyNetworkTransactionTest, RedirectGetRequest) { GetParam().protocol, false /* force_spdy_over_ssl*/, true /* force_spdy_always */); - net::URLRequest r(GURL("http://www.google.com/"), - DEFAULT_PRIORITY, - &d, - &spdy_url_request_context); + scoped_ptr<URLRequest> r( + spdy_url_request_context.CreateRequest(GURL("http://www.google.com/"), + DEFAULT_PRIORITY, + &d, + NULL)); spdy_url_request_context.socket_factory(). AddSocketDataProvider(&data); spdy_url_request_context.socket_factory(). AddSocketDataProvider(&data2); d.set_quit_on_redirect(true); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); - r.FollowDeferredRedirect(); + r->FollowDeferredRedirect(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, r->status().status()); std::string contents("hello!"); EXPECT_EQ(contents, d.data_received()); } @@ -2576,37 +2577,40 @@ TEST_P(SpdyNetworkTransactionTest, RedirectServerPush) { false /* force_spdy_over_ssl*/, true /* force_spdy_always */); { - net::URLRequest r(GURL("http://www.google.com/"), - DEFAULT_PRIORITY, - &d, - &spdy_url_request_context); + scoped_ptr<URLRequest> r( + spdy_url_request_context.CreateRequest(GURL("http://www.google.com/"), + DEFAULT_PRIORITY, + &d, + NULL)); spdy_url_request_context.socket_factory(). AddSocketDataProvider(&data); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(0, d.received_redirect_count()); std::string contents("hello!"); EXPECT_EQ(contents, d.data_received()); - net::URLRequest r2(GURL("http://www.google.com/foo.dat"), - DEFAULT_PRIORITY, - &d2, - &spdy_url_request_context); + scoped_ptr<URLRequest> r2( + spdy_url_request_context.CreateRequest( + GURL("http://www.google.com/foo.dat"), + DEFAULT_PRIORITY, + &d2, + NULL)); spdy_url_request_context.socket_factory(). AddSocketDataProvider(&data2); d2.set_quit_on_redirect(true); - r2.Start(); + r2->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d2.received_redirect_count()); - r2.FollowDeferredRedirect(); + r2->FollowDeferredRedirect(); base::RunLoop().Run(); EXPECT_EQ(1, d2.response_started_count()); EXPECT_FALSE(d2.received_data_before_response()); - EXPECT_EQ(net::URLRequestStatus::SUCCESS, r2.status().status()); + EXPECT_EQ(net::URLRequestStatus::SUCCESS, r2->status().status()); std::string contents2("hello!"); EXPECT_EQ(contents2, d2.data_received()); } diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index 6b33aaa..666f2e7 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -201,18 +201,42 @@ void URLRequest::Delegate::OnBeforeNetworkStart(URLRequest* request, URLRequest::URLRequest(const GURL& url, RequestPriority priority, Delegate* delegate, - const URLRequestContext* context) - : identifier_(GenerateURLRequestIdentifier()) { - Init(url, priority, delegate, context, NULL); -} - -URLRequest::URLRequest(const GURL& url, - RequestPriority priority, - Delegate* delegate, const URLRequestContext* context, - CookieStore* cookie_store) - : identifier_(GenerateURLRequestIdentifier()) { - Init(url, priority, delegate, context, cookie_store); + CookieStore* cookie_store, + NetworkDelegate* network_delegate) + : context_(context), + network_delegate_(network_delegate ? network_delegate + : context->network_delegate()), + net_log_(BoundNetLog::Make(context->net_log(), + NetLog::SOURCE_URL_REQUEST)), + url_chain_(1, url), + method_("GET"), + referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE), + first_party_url_policy_(NEVER_CHANGE_FIRST_PARTY_URL), + load_flags_(LOAD_NORMAL), + delegate_(delegate), + is_pending_(false), + is_redirecting_(false), + redirect_limit_(kMaxRedirects), + priority_(priority), + identifier_(GenerateURLRequestIdentifier()), + calling_delegate_(false), + use_blocked_by_as_load_param_(false), + before_request_callback_(base::Bind(&URLRequest::BeforeRequestComplete, + base::Unretained(this))), + has_notified_completion_(false), + received_response_content_length_(0), + creation_time_(base::TimeTicks::Now()), + notified_before_network_start_(false), + cookie_store_(cookie_store ? cookie_store : context->cookie_store()) { + SIMPLE_STATS_COUNTER("URLRequestCount"); + + // Sanity check out environment. + DCHECK(base::MessageLoop::current()) + << "The current base::MessageLoop must exist"; + + context->url_requests()->insert(this); + net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); } URLRequest::~URLRequest() { @@ -249,48 +273,6 @@ void URLRequest::UnregisterRequestInterceptor(Interceptor* interceptor) { interceptor); } -void URLRequest::Init(const GURL& url, - RequestPriority priority, - Delegate* delegate, - const URLRequestContext* context, - CookieStore* cookie_store) { - context_ = context; - network_delegate_ = context->network_delegate(); - net_log_ = BoundNetLog::Make(context->net_log(), NetLog::SOURCE_URL_REQUEST); - url_chain_.push_back(url); - method_ = "GET"; - referrer_policy_ = CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE; - first_party_url_policy_ = NEVER_CHANGE_FIRST_PARTY_URL; - load_flags_ = LOAD_NORMAL; - delegate_ = delegate; - is_pending_ = false; - is_redirecting_ = false; - redirect_limit_ = kMaxRedirects; - priority_ = priority; - calling_delegate_ = false; - use_blocked_by_as_load_param_ =false; - before_request_callback_ = base::Bind(&URLRequest::BeforeRequestComplete, - base::Unretained(this)); - has_notified_completion_ = false; - received_response_content_length_ = 0; - creation_time_ = base::TimeTicks::Now(); - notified_before_network_start_ = false; - - SIMPLE_STATS_COUNTER("URLRequestCount"); - - // Sanity check out environment. - DCHECK(base::MessageLoop::current()) - << "The current base::MessageLoop must exist"; - - CHECK(context); - context->url_requests()->insert(this); - cookie_store_ = cookie_store; - if (cookie_store_ == NULL) - cookie_store_ = context->cookie_store(); - - net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); -} - void URLRequest::EnableChunkedUpload() { DCHECK(!upload_data_stream_ || upload_data_stream_->is_chunked()); if (!upload_data_stream_) { @@ -623,7 +605,6 @@ void URLRequest::Start() { // Some values can be NULL, but the job factory must not be. DCHECK(context_->job_factory()); - DCHECK_EQ(network_delegate_, context_->network_delegate()); // Anything that sets |blocked_by_| before start should have cleaned up after // itself. DCHECK(blocked_by_.empty()); @@ -656,7 +637,6 @@ void URLRequest::Start() { void URLRequest::BeforeRequestComplete(int error) { DCHECK(!job_.get()); DCHECK_NE(ERR_IO_PENDING, error); - DCHECK_EQ(network_delegate_, context_->network_delegate()); // Check that there are no callbacks to already canceled requests. DCHECK_NE(URLRequestStatus::CANCELED, status_.status()); diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h index b4f20795..c649d7c 100644 --- a/net/url_request/url_request.h +++ b/net/url_request/url_request.h @@ -273,19 +273,17 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), virtual ~Delegate() {} }; - // TODO(tburkard): we should get rid of this constructor, and have each - // creator of a URLRequest specifically list the cookie store to be used. - // For now, this constructor will use the cookie store in |context|. - URLRequest(const GURL& url, - RequestPriority priority, - Delegate* delegate, - const URLRequestContext* context); - + // URLRequests should almost always be created by calling + // URLRequestContext::CreateRequest. + // + // If no cookie store or network delegate are passed in, will use the ones + // from the URLRequestContext. URLRequest(const GURL& url, RequestPriority priority, Delegate* delegate, const URLRequestContext* context, - CookieStore* cookie_store); + CookieStore* cookie_store, + NetworkDelegate* network_delegate); // If destroyed after Start() has been called but while IO is pending, // then the request will be effectively canceled and the delegate @@ -721,15 +719,6 @@ class NET_EXPORT URLRequest : NON_EXPORTED_BASE(public base::NonThreadSafe), static void RegisterRequestInterceptor(Interceptor* interceptor); static void UnregisterRequestInterceptor(Interceptor* interceptor); - // Initializes the URLRequest. Code shared between the two constructors. - // TODO(tburkard): This can ultimately be folded into a single constructor - // again. - void Init(const GURL& url, - RequestPriority priotity, - Delegate* delegate, - const URLRequestContext* context, - CookieStore* cookie_store); - // Resumes or blocks a request paused by the NetworkDelegate::OnBeforeRequest // handler. If |blocked| is true, the request is blocked and an error page is // returned indicating so. This should only be called after Start is called diff --git a/net/url_request/url_request_context.cc b/net/url_request/url_request_context.cc index 7f4e799..aa3ec91 100644 --- a/net/url_request/url_request_context.cc +++ b/net/url_request/url_request_context.cc @@ -78,7 +78,8 @@ scoped_ptr<URLRequest> URLRequestContext::CreateRequest( URLRequest::Delegate* delegate, CookieStore* cookie_store) const { return scoped_ptr<URLRequest>( - new URLRequest(url, priority, delegate, this, cookie_store)); + new URLRequest(url, priority, delegate, this, cookie_store, + network_delegate_)); } void URLRequestContext::set_cookie_store(CookieStore* cookie_store) { diff --git a/net/url_request/url_request_context.h b/net/url_request/url_request_context.h index 4e58739..992f985 100644 --- a/net/url_request/url_request_context.h +++ b/net/url_request/url_request_context.h @@ -59,9 +59,8 @@ class NET_EXPORT URLRequestContext // May return NULL if this context doesn't have an associated network session. const HttpNetworkSession::Params* GetNetworkSessionParams() const; - // Creates a URLRequest. |cookie_store| optionally specifies a cookie store - // to be used rather than the one represented by the context, or NULL - // otherwise. + // Creates a URLRequest. If |cookie_store| is non-NULL, it will be used + // instead of the context's cookie store. scoped_ptr<URLRequest> CreateRequest(const GURL& url, RequestPriority priority, URLRequest::Delegate* delegate, diff --git a/net/url_request/url_request_context_builder_unittest.cc b/net/url_request/url_request_context_builder_unittest.cc index a7a0fee..b5a3da2 100644 --- a/net/url_request/url_request_context_builder_unittest.cc +++ b/net/url_request/url_request_context_builder_unittest.cc @@ -4,6 +4,7 @@ #include "net/url_request/url_request_context_builder.h" +#include "base/memory/scoped_ptr.h" #include "build/build_config.h" #include "net/base/request_priority.h" #include "net/http/http_auth_handler.h" @@ -79,13 +80,14 @@ TEST_F(URLRequestContextBuilderTest, DefaultSettings) { scoped_ptr<URLRequestContext> context(builder_.Build()); TestDelegate delegate; - URLRequest request(test_server_.GetURL("echoheader?Foo"), - DEFAULT_PRIORITY, - &delegate, - context.get()); - request.set_method("GET"); - request.SetExtraRequestHeaderByName("Foo", "Bar", false); - request.Start(); + scoped_ptr<URLRequest> request( + context->CreateRequest(test_server_.GetURL("echoheader?Foo"), + DEFAULT_PRIORITY, + &delegate, + context->cookie_store())); + request->set_method("GET"); + request->SetExtraRequestHeaderByName("Foo", "Bar", false); + request->Start(); base::MessageLoop::current()->Run(); EXPECT_EQ("Bar", delegate.data_received()); } @@ -96,12 +98,13 @@ TEST_F(URLRequestContextBuilderTest, UserAgent) { builder_.set_user_agent("Bar"); scoped_ptr<URLRequestContext> context(builder_.Build()); TestDelegate delegate; - URLRequest request(test_server_.GetURL("echoheader?User-Agent"), - DEFAULT_PRIORITY, - &delegate, - context.get()); - request.set_method("GET"); - request.Start(); + scoped_ptr<URLRequest> request( + context->CreateRequest(test_server_.GetURL("echoheader?User-Agent"), + DEFAULT_PRIORITY, + &delegate, + NULL)); + request->set_method("GET"); + request->Start(); base::MessageLoop::current()->Run(); EXPECT_EQ("Bar", delegate.data_received()); } diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc index 8797a35..e672413 100644 --- a/net/url_request/url_request_ftp_job_unittest.cc +++ b/net/url_request/url_request_ftp_job_unittest.cc @@ -268,16 +268,15 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequest) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, + &request_delegate, NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(4); - EXPECT_TRUE(url_request.status().is_success()); - EXPECT_TRUE(url_request.proxy_server().Equals( + EXPECT_TRUE(url_request->status().is_success()); + EXPECT_TRUE(url_request->proxy_server().Equals( net::HostPortPair::FromString("localhost:80"))); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); @@ -295,11 +294,10 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestOrphanJob) { new MockAsyncProxyResolver, NULL)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); // Now |url_request| will be deleted before its completion, // resulting in it being orphaned. It should not crash. @@ -323,16 +321,15 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthNoCredentials) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(5); - EXPECT_TRUE(url_request.status().is_success()); - EXPECT_TRUE(url_request.proxy_server().Equals( + EXPECT_TRUE(url_request->status().is_success()); + EXPECT_TRUE(url_request->proxy_server().Equals( net::HostPortPair::FromString("localhost:80"))); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); @@ -369,15 +366,14 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthWithCredentials) { TestDelegate request_delegate; request_delegate.set_credentials( AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(9); - EXPECT_TRUE(url_request.status().is_success()); + EXPECT_TRUE(url_request->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_TRUE(request_delegate.auth_required_called()); @@ -402,15 +398,14 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthNoCredentials) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(5); - EXPECT_TRUE(url_request.status().is_success()); + EXPECT_TRUE(url_request->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_TRUE(request_delegate.auth_required_called()); @@ -446,15 +441,14 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthWithCredentials) { TestDelegate request_delegate; request_delegate.set_credentials( AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(9); - EXPECT_TRUE(url_request.status().is_success()); + EXPECT_TRUE(url_request->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_TRUE(request_delegate.auth_required_called()); @@ -512,17 +506,17 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAndServerAuth) { TestDelegate request_delegate; request_delegate.set_credentials( AuthCredentials(ASCIIToUTF16("proxyuser"), ASCIIToUTF16("proxypass"))); - URLRequest url_request( - url, DEFAULT_PRIORITY, &request_delegate, request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + url, DEFAULT_PRIORITY, &request_delegate, NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(5); request_delegate.set_credentials( AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); socket_data(0)->RunFor(9); - EXPECT_TRUE(url_request.status().is_success()); + EXPECT_TRUE(url_request->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_TRUE(request_delegate.auth_required_called()); @@ -545,16 +539,15 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotSaveCookies) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - ASSERT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + ASSERT_TRUE(url_request->is_pending()); socket_data(0)->RunFor(5); - EXPECT_TRUE(url_request.status().is_success()); + EXPECT_TRUE(url_request->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); @@ -579,26 +572,25 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotFollowRedirects) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate; - URLRequest url_request(GURL("ftp://ftp.example.com/"), - DEFAULT_PRIORITY, - &request_delegate, - request_context()); - url_request.Start(); - EXPECT_TRUE(url_request.is_pending()); + scoped_ptr<URLRequest> url_request(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + url_request->Start(); + EXPECT_TRUE(url_request->is_pending()); base::MessageLoop::current()->RunUntilIdle(); - EXPECT_TRUE(url_request.is_pending()); + EXPECT_TRUE(url_request->is_pending()); EXPECT_EQ(0, request_delegate.response_started_count()); EXPECT_EQ(0, network_delegate()->error_count()); - ASSERT_TRUE(url_request.status().is_success()); + ASSERT_TRUE(url_request->status().is_success()); socket_data(0)->RunFor(1); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(1, network_delegate()->error_count()); - EXPECT_FALSE(url_request.status().is_success()); - EXPECT_EQ(ERR_UNSAFE_REDIRECT, url_request.status().error()); + EXPECT_FALSE(url_request->status().is_success()); + EXPECT_EQ(ERR_UNSAFE_REDIRECT, url_request->status().error()); } // We should re-use socket for requests using the same scheme, host, and port. @@ -623,16 +615,16 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestReuseSocket) { AddSocket(reads, arraysize(reads), writes, arraysize(writes)); TestDelegate request_delegate1; - URLRequest url_request1(GURL("ftp://ftp.example.com/first"), - DEFAULT_PRIORITY, - &request_delegate1, - request_context()); - url_request1.Start(); - ASSERT_TRUE(url_request1.is_pending()); + + scoped_ptr<URLRequest> url_request1(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/first"), DEFAULT_PRIORITY, &request_delegate1, + NULL)); + url_request1->Start(); + ASSERT_TRUE(url_request1->is_pending()); socket_data(0)->RunFor(4); - EXPECT_TRUE(url_request1.status().is_success()); - EXPECT_TRUE(url_request1.proxy_server().Equals( + EXPECT_TRUE(url_request1->status().is_success()); + EXPECT_TRUE(url_request1->proxy_server().Equals( net::HostPortPair::FromString("localhost:80"))); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); @@ -640,15 +632,14 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestReuseSocket) { EXPECT_EQ("test1.html", request_delegate1.data_received()); TestDelegate request_delegate2; - URLRequest url_request2(GURL("ftp://ftp.example.com/second"), - DEFAULT_PRIORITY, - &request_delegate2, - request_context()); - url_request2.Start(); - ASSERT_TRUE(url_request2.is_pending()); + scoped_ptr<URLRequest> url_request2(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/second"), DEFAULT_PRIORITY, + &request_delegate2, NULL)); + url_request2->Start(); + ASSERT_TRUE(url_request2->is_pending()); socket_data(0)->RunFor(4); - EXPECT_TRUE(url_request2.status().is_success()); + EXPECT_TRUE(url_request2->status().is_success()); EXPECT_EQ(2, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_FALSE(request_delegate2.auth_required_called()); @@ -686,30 +677,28 @@ TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotReuseSocket) { AddSocket(reads2, arraysize(reads2), writes2, arraysize(writes2)); TestDelegate request_delegate1; - URLRequest url_request1(GURL("ftp://ftp.example.com/first"), - DEFAULT_PRIORITY, - &request_delegate1, - request_context()); - url_request1.Start(); - ASSERT_TRUE(url_request1.is_pending()); + scoped_ptr<URLRequest> url_request1(request_context()->CreateRequest( + GURL("ftp://ftp.example.com/first"), DEFAULT_PRIORITY, + &request_delegate1, NULL)); + url_request1->Start(); + ASSERT_TRUE(url_request1->is_pending()); socket_data(0)->RunFor(4); - EXPECT_TRUE(url_request1.status().is_success()); + EXPECT_TRUE(url_request1->status().is_success()); EXPECT_EQ(1, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_FALSE(request_delegate1.auth_required_called()); EXPECT_EQ("test1.html", request_delegate1.data_received()); TestDelegate request_delegate2; - URLRequest url_request2(GURL("http://ftp.example.com/second"), - DEFAULT_PRIORITY, - &request_delegate2, - request_context()); - url_request2.Start(); - ASSERT_TRUE(url_request2.is_pending()); + scoped_ptr<URLRequest> url_request2(request_context()->CreateRequest( + GURL("http://ftp.example.com/second"), DEFAULT_PRIORITY, + &request_delegate2, NULL)); + url_request2->Start(); + ASSERT_TRUE(url_request2->is_pending()); socket_data(1)->RunFor(4); - EXPECT_TRUE(url_request2.status().is_success()); + EXPECT_TRUE(url_request2->status().is_success()); EXPECT_EQ(2, network_delegate()->completed_requests()); EXPECT_EQ(0, network_delegate()->error_count()); EXPECT_FALSE(request_delegate2.auth_required_called()); diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 38950c2..a870a2c 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -446,8 +446,9 @@ void URLRequestHttpJob::StartTransactionInternal() { base::Bind(&URLRequestHttpJob::NotifyBeforeSendProxyHeadersCallback, base::Unretained(this))); - if (!throttling_entry_.get() || - !throttling_entry_->ShouldRejectRequest(*request_)) { + if (!throttling_entry_ || + !throttling_entry_->ShouldRejectRequest( + *request_, network_delegate())) { rv = transaction_->Start( &request_info_, start_callback_, request_->net_log()); start_time_ = base::TimeTicks::Now(); diff --git a/net/url_request/url_request_simple_job_unittest.cc b/net/url_request/url_request_simple_job_unittest.cc index dfd985a..512833f 100644 --- a/net/url_request/url_request_simple_job_unittest.cc +++ b/net/url_request/url_request_simple_job_unittest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/scoped_ptr.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "net/base/request_priority.h" @@ -66,8 +67,8 @@ class URLRequestSimpleJobTest : public ::testing::Test { context_.set_job_factory(&job_factory_); context_.Init(); - request_.reset(new URLRequest( - GURL("data:test"), DEFAULT_PRIORITY, &delegate_, &context_)); + request_ = context_.CreateRequest( + GURL("data:test"), DEFAULT_PRIORITY, &delegate_, NULL); } void StartRequest(const HttpRequestHeaders* headers) { diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc index 3800fec..fcdae3b 100644 --- a/net/url_request/url_request_test_util.cc +++ b/net/url_request/url_request_test_util.cc @@ -134,7 +134,7 @@ TestURLRequest::TestURLRequest(const GURL& url, RequestPriority priority, Delegate* delegate, TestURLRequestContext* context) - : URLRequest(url, priority, delegate, context) {} + : URLRequest(url, priority, delegate, context, NULL, NULL) {} TestURLRequest::~TestURLRequest() { } diff --git a/net/url_request/url_request_throttler_entry.cc b/net/url_request/url_request_throttler_entry.cc index b7c0612..5d0c43a 100644 --- a/net/url_request/url_request_throttler_entry.cc +++ b/net/url_request/url_request_throttler_entry.cc @@ -150,11 +150,11 @@ void URLRequestThrottlerEntry::DetachManager() { } bool URLRequestThrottlerEntry::ShouldRejectRequest( - const URLRequest& request) const { + const URLRequest& request, + NetworkDelegate* network_delegate) const { bool reject_request = false; if (!is_backoff_disabled_ && !ExplicitUserRequest(request.load_flags()) && - (!request.context()->network_delegate() || - request.context()->network_delegate()->CanThrottleRequest(request)) && + (!network_delegate || network_delegate->CanThrottleRequest(request)) && GetBackoffEntry()->ShouldRejectRequest()) { int num_failures = GetBackoffEntry()->failure_count(); int release_after_ms = diff --git a/net/url_request/url_request_throttler_entry.h b/net/url_request/url_request_throttler_entry.h index 88006e7..a7a0524 100644 --- a/net/url_request/url_request_throttler_entry.h +++ b/net/url_request/url_request_throttler_entry.h @@ -16,6 +16,7 @@ namespace net { +class NetworkDelegate; class URLRequestThrottlerManager; // URLRequestThrottlerEntry represents an entry of URLRequestThrottlerManager. @@ -92,7 +93,9 @@ class NET_EXPORT URLRequestThrottlerEntry void DetachManager(); // Implementation of URLRequestThrottlerEntryInterface. - virtual bool ShouldRejectRequest(const URLRequest& request) const OVERRIDE; + virtual bool ShouldRejectRequest( + const URLRequest& request, + NetworkDelegate* network_delegate) const OVERRIDE; virtual int64 ReserveSendingTimeForNextRequest( const base::TimeTicks& earliest_time) OVERRIDE; virtual base::TimeTicks GetExponentialBackoffReleaseTime() const OVERRIDE; diff --git a/net/url_request/url_request_throttler_entry_interface.h b/net/url_request/url_request_throttler_entry_interface.h index 48152e1..47f5ea1 100644 --- a/net/url_request/url_request_throttler_entry_interface.h +++ b/net/url_request/url_request_throttler_entry_interface.h @@ -14,6 +14,7 @@ namespace net { +class NetworkDelegate; class URLRequest; class URLRequestThrottlerHeaderInterface; @@ -30,7 +31,9 @@ class NET_EXPORT URLRequestThrottlerEntryInterface // // URLRequestHttpJob checks this method prior to every request; it // cancels requests if this method returns true. - virtual bool ShouldRejectRequest(const URLRequest& request) const = 0; + virtual bool ShouldRejectRequest( + const URLRequest& request, + NetworkDelegate* network_delegate) const = 0; // Calculates a recommended sending time for the next request and reserves it. // The sending time is not earlier than the current exponential back-off diff --git a/net/url_request/url_request_throttler_simulation_unittest.cc b/net/url_request/url_request_throttler_simulation_unittest.cc index fc9dfde..14b2040 100644 --- a/net/url_request/url_request_throttler_simulation_unittest.cc +++ b/net/url_request/url_request_throttler_simulation_unittest.cc @@ -21,6 +21,7 @@ #include "base/rand_util.h" #include "base/time/time.h" #include "net/base/request_priority.h" +#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" #include "net/url_request/url_request_throttler_manager.h" #include "net/url_request/url_request_throttler_test_support.h" @@ -275,6 +276,8 @@ class Server : public DiscreteTimeSimulation::Actor { return output; } + const URLRequestContext& context() const { return context_; } + private: TimeTicks now_; TimeTicks start_downtime_; // Can be 0 to say "no downtime". @@ -427,7 +430,9 @@ class Requester : public DiscreteTimeSimulation::Actor { if (throttler_entry_->fake_now() - time_of_last_attempt_ > effective_delay) { - if (!throttler_entry_->ShouldRejectRequest(server_->mock_request())) { + if (!throttler_entry_->ShouldRejectRequest( + server_->mock_request(), + server_->context().network_delegate())) { int status_code = server_->HandleRequest(); MockURLRequestThrottlerHeaderAdapter response_headers(status_code); throttler_entry_->UpdateWithResponse(std::string(), &response_headers); diff --git a/net/url_request/url_request_throttler_unittest.cc b/net/url_request/url_request_throttler_unittest.cc index 32f94ff..9ae9c7b 100644 --- a/net/url_request/url_request_throttler_unittest.cc +++ b/net/url_request/url_request_throttler_unittest.cc @@ -33,17 +33,17 @@ const char kRequestThrottledHistogramName[] = "Throttling.RequestThrottled"; class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry { public: explicit MockURLRequestThrottlerEntry( - net::URLRequestThrottlerManager* manager) - : net::URLRequestThrottlerEntry(manager, std::string()), + URLRequestThrottlerManager* manager) + : URLRequestThrottlerEntry(manager, std::string()), mock_backoff_entry_(&backoff_policy_) { InitPolicy(); } MockURLRequestThrottlerEntry( - net::URLRequestThrottlerManager* manager, + URLRequestThrottlerManager* manager, const TimeTicks& exponential_backoff_release_time, const TimeTicks& sliding_window_release_time, const TimeTicks& fake_now) - : net::URLRequestThrottlerEntry(manager, std::string()), + : URLRequestThrottlerEntry(manager, std::string()), fake_time_now_(fake_now), mock_backoff_entry_(&backoff_policy_) { InitPolicy(); @@ -201,20 +201,24 @@ TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) { entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1)); d.set_can_throttle_requests(false); - EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); + EXPECT_FALSE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); d.set_can_throttle_requests(true); - EXPECT_TRUE(entry_->ShouldRejectRequest(request_)); + EXPECT_TRUE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); } TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) { base::StatisticsDeltaReader statistics_delta_reader; entry_->set_exponential_backoff_release_time( entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1)); - EXPECT_TRUE(entry_->ShouldRejectRequest(request_)); + EXPECT_TRUE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); // Also end-to-end test the load flags exceptions. request_.SetLoadFlags(LOAD_MAYBE_USER_GESTURE); - EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); + EXPECT_FALSE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); scoped_ptr<base::HistogramSamples> samples( statistics_delta_reader.GetHistogramSamplesSinceCreation( @@ -226,10 +230,12 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) { TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) { base::StatisticsDeltaReader statistics_delta_reader; entry_->set_exponential_backoff_release_time(entry_->fake_time_now_); - EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); + EXPECT_FALSE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); entry_->set_exponential_backoff_release_time( entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1)); - EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); + EXPECT_FALSE(entry_->ShouldRejectRequest(request_, + context_.network_delegate())); scoped_ptr<base::HistogramSamples> samples( statistics_delta_reader.GetHistogramSamplesSinceCreation( @@ -358,6 +364,34 @@ class URLRequestThrottlerManagerTest : public testing::Test { request_.SetLoadFlags(0); } + void ExpectEntryAllowsAllOnErrorIfOptedOut( + URLRequestThrottlerEntryInterface* entry, + bool opted_out, + const URLRequest& request) { + EXPECT_FALSE(entry->ShouldRejectRequest(request, + context_.network_delegate())); + MockURLRequestThrottlerHeaderAdapter failure_adapter(503); + for (int i = 0; i < 10; ++i) { + // Host doesn't really matter in this scenario so we skip it. + entry->UpdateWithResponse(std::string(), &failure_adapter); + } + EXPECT_NE(opted_out, entry->ShouldRejectRequest( + request, context_.network_delegate())); + + if (opted_out) { + // We're not mocking out GetTimeNow() in this scenario + // so add a 100 ms buffer to avoid flakiness (that should always + // give enough time to get from the TimeTicks::Now() call here + // to the TimeTicks::Now() call in the entry class). + EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100), + entry->GetExponentialBackoffReleaseTime()); + } else { + // As above, add 100 ms. + EXPECT_LT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100), + entry->GetExponentialBackoffReleaseTime()); + } + } + // context_ must be declared before request_. TestURLRequestContext context_; TestURLRequest request_; @@ -427,35 +461,9 @@ TEST_F(URLRequestThrottlerManagerTest, IsHostBeingRegistered) { EXPECT_EQ(3, manager.GetNumberOfEntries()); } -void ExpectEntryAllowsAllOnErrorIfOptedOut( - net::URLRequestThrottlerEntryInterface* entry, - bool opted_out, - const URLRequest& request) { - EXPECT_FALSE(entry->ShouldRejectRequest(request)); - MockURLRequestThrottlerHeaderAdapter failure_adapter(503); - for (int i = 0; i < 10; ++i) { - // Host doesn't really matter in this scenario so we skip it. - entry->UpdateWithResponse(std::string(), &failure_adapter); - } - EXPECT_NE(opted_out, entry->ShouldRejectRequest(request)); - - if (opted_out) { - // We're not mocking out GetTimeNow() in this scenario - // so add a 100 ms buffer to avoid flakiness (that should always - // give enough time to get from the TimeTicks::Now() call here - // to the TimeTicks::Now() call in the entry class). - EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100), - entry->GetExponentialBackoffReleaseTime()); - } else { - // As above, add 100 ms. - EXPECT_LT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100), - entry->GetExponentialBackoffReleaseTime()); - } -} - TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) { MockURLRequestThrottlerManager manager; - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry = + scoped_refptr<URLRequestThrottlerEntryInterface> entry = manager.RegisterRequestUrl(GURL("http://www.google.com/yodude")); // Fake a response with the opt-out header. @@ -470,12 +478,12 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) { // Ensure that a freshly created entry (for a different URL on an // already opted-out host) also gets "always allow" behavior. - scoped_refptr<net::URLRequestThrottlerEntryInterface> other_entry = + scoped_refptr<URLRequestThrottlerEntryInterface> other_entry = manager.RegisterRequestUrl(GURL("http://www.google.com/bingobob")); ExpectEntryAllowsAllOnErrorIfOptedOut(other_entry.get(), true, request_); // Fake a response with the opt-out header incorrectly specified. - scoped_refptr<net::URLRequestThrottlerEntryInterface> no_opt_out_entry = + scoped_refptr<URLRequestThrottlerEntryInterface> no_opt_out_entry = manager.RegisterRequestUrl(GURL("http://www.nike.com/justdoit")); MockURLRequestThrottlerHeaderAdapter wrong_adapter( std::string(), "yesplease", 200); @@ -484,7 +492,7 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) { no_opt_out_entry.get(), false, request_); // A localhost entry should always be opted out. - scoped_refptr<net::URLRequestThrottlerEntryInterface> localhost_entry = + scoped_refptr<URLRequestThrottlerEntryInterface> localhost_entry = manager.RegisterRequestUrl(GURL("http://localhost/hello")); ExpectEntryAllowsAllOnErrorIfOptedOut(localhost_entry.get(), true, request_); } @@ -492,14 +500,15 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) { TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) { for (int i = 0; i < 3; ++i) { MockURLRequestThrottlerManager manager; - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before = + scoped_refptr<URLRequestThrottlerEntryInterface> entry_before = manager.RegisterRequestUrl(GURL("http://www.example.com/")); MockURLRequestThrottlerHeaderAdapter failure_adapter(503); for (int j = 0; j < 10; ++j) { // Host doesn't really matter in this scenario so we skip it. entry_before->UpdateWithResponse(std::string(), &failure_adapter); } - EXPECT_TRUE(entry_before->ShouldRejectRequest(request_)); + EXPECT_TRUE(entry_before->ShouldRejectRequest(request_, + context_.network_delegate())); switch (i) { case 0: @@ -507,19 +516,19 @@ TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) { break; case 1: manager.OnConnectionTypeChanged( - net::NetworkChangeNotifier::CONNECTION_UNKNOWN); + NetworkChangeNotifier::CONNECTION_UNKNOWN); break; case 2: - manager.OnConnectionTypeChanged( - net::NetworkChangeNotifier::CONNECTION_NONE); + manager.OnConnectionTypeChanged(NetworkChangeNotifier::CONNECTION_NONE); break; default: FAIL(); } - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after = + scoped_refptr<URLRequestThrottlerEntryInterface> entry_after = manager.RegisterRequestUrl(GURL("http://www.example.com/")); - EXPECT_FALSE(entry_after->ShouldRejectRequest(request_)); + EXPECT_FALSE(entry_after->ShouldRejectRequest( + request_, context_.network_delegate())); } } diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 0a00e69..aea3ec4 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -634,21 +634,22 @@ class URLRequestTest : public PlatformTest { TEST_F(URLRequestTest, AboutBlankTest) { TestDelegate d; { - URLRequest r(GURL("about:blank"), DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + GURL("about:blank"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), 0); - EXPECT_EQ("", r.GetSocketAddress().host()); - EXPECT_EQ(0, r.GetSocketAddress().port()); + EXPECT_EQ("", r->GetSocketAddress().host()); + EXPECT_EQ(0, r->GetSocketAddress().port()); HttpRequestHeaders headers; - EXPECT_FALSE(r.GetFullRequestHeaders(&headers)); + EXPECT_FALSE(r->GetFullRequestHeaders(&headers)); } } @@ -656,7 +657,7 @@ TEST_F(URLRequestTest, DataURLImageTest) { TestDelegate d; { // Use our nice little Chrome logo. - URLRequest r( + scoped_ptr<URLRequest> r(default_context_.CreateRequest( GURL( "data:image/png;base64," "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADVklEQVQ4jX2TfUwUBBjG3" @@ -677,23 +678,21 @@ TEST_F(URLRequestTest, DataURLImageTest) { "nlm2O34uI4b9tflqp1+QEFGzoW/ulmcofcpkZCYJhDfSpme7QcrHa+Xfji8paEQkTkSfm" "moRWRNZr/F1KfVMjW+IKEnv2FwZfKdzt0BQR6lClcZR0EfEXEfv/G6W9iLiIyCoReV5En" "hORIBHx+ufPj/gLB/zGI/G4Bk0AAAAASUVORK5CYII="), - DEFAULT_PRIORITY, - &d, - &default_context_); + DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), 911); - EXPECT_EQ("", r.GetSocketAddress().host()); - EXPECT_EQ(0, r.GetSocketAddress().port()); + EXPECT_EQ("", r->GetSocketAddress().host()); + EXPECT_EQ(0, r->GetSocketAddress().port()); HttpRequestHeaders headers; - EXPECT_FALSE(r.GetFullRequestHeaders(&headers)); + EXPECT_FALSE(r->GetFullRequestHeaders(&headers)); } } @@ -705,25 +704,26 @@ TEST_F(URLRequestTest, FileTest) { TestDelegate d; { - URLRequest r(app_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + app_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = -1; EXPECT_TRUE(base::GetFileSize(app_path, &file_size)); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); - EXPECT_EQ("", r.GetSocketAddress().host()); - EXPECT_EQ(0, r.GetSocketAddress().port()); + EXPECT_EQ("", r->GetSocketAddress().host()); + EXPECT_EQ(0, r->GetSocketAddress().port()); HttpRequestHeaders headers; - EXPECT_FALSE(r.GetFullRequestHeaders(&headers)); + EXPECT_FALSE(r->GetFullRequestHeaders(&headers)); } } @@ -734,11 +734,12 @@ TEST_F(URLRequestTest, FileTestCancel) { TestDelegate d; { - URLRequest r(app_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + app_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); - r.Cancel(); + r->Start(); + EXPECT_TRUE(r->is_pending()); + r->Cancel(); } // Async cancellation should be safe even when URLRequest has been already // destroyed. @@ -766,19 +767,20 @@ TEST_F(URLRequestTest, FileTestFullSpecifiedRange) { TestDelegate d; { - URLRequest r(temp_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + temp_url, DEFAULT_PRIORITY, &d, NULL)); HttpRequestHeaders headers; headers.SetHeader( HttpRequestHeaders::kRange, HttpByteRange::Bounded( first_byte_position, last_byte_position).GetHeaderValue()); - r.SetExtraRequestHeaders(headers); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->SetExtraRequestHeaders(headers); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(static_cast<int>(content_length), d.bytes_received()); @@ -810,18 +812,19 @@ TEST_F(URLRequestTest, FileTestHalfSpecifiedRange) { TestDelegate d; { - URLRequest r(temp_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + temp_url, DEFAULT_PRIORITY, &d, NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kRange, HttpByteRange::RightUnbounded( first_byte_position).GetHeaderValue()); - r.SetExtraRequestHeaders(headers); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->SetExtraRequestHeaders(headers); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(static_cast<int>(content_length), d.bytes_received()); @@ -847,13 +850,14 @@ TEST_F(URLRequestTest, FileTestMultipleRanges) { TestDelegate d; { - URLRequest r(temp_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + temp_url, DEFAULT_PRIORITY, &d, NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kRange, "bytes=0-0,10-200,200-300"); - r.SetExtraRequestHeaders(headers); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->SetExtraRequestHeaders(headers); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); @@ -876,8 +880,9 @@ TEST_F(URLRequestTest, AllowFileURLs) { TestNetworkDelegate network_delegate; network_delegate.set_can_access_files(true); default_context_.set_network_delegate(&network_delegate); - URLRequest r(test_file_url, DEFAULT_PRIORITY, &d, &default_context_); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_file_url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); EXPECT_FALSE(d.request_failed()); EXPECT_EQ(test_data, d.data_received()); @@ -888,8 +893,9 @@ TEST_F(URLRequestTest, AllowFileURLs) { TestNetworkDelegate network_delegate; network_delegate.set_can_access_files(false); default_context_.set_network_delegate(&network_delegate); - URLRequest r(test_file_url, DEFAULT_PRIORITY, &d, &default_context_); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_file_url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); EXPECT_EQ("", d.data_received()); @@ -908,10 +914,10 @@ TEST_F(URLRequestTest, FileDirCancelTest) { file_path = file_path.Append(FILE_PATH_LITERAL("net")); file_path = file_path.Append(FILE_PATH_LITERAL("data")); - URLRequest req( - FilePathToFileURL(file_path), DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); - EXPECT_TRUE(req.is_pending()); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + FilePathToFileURL(file_path), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); + EXPECT_TRUE(req->is_pending()); d.set_cancel_in_received_data_pending(true); @@ -935,9 +941,9 @@ TEST_F(URLRequestTest, FileDirOutputSanity) { path = path.Append(FILE_PATH_LITERAL("url_request_unittest")); TestDelegate d; - URLRequest req( - FilePathToFileURL(path), DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + FilePathToFileURL(path), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); // Generate entry for the sentinel file. @@ -954,7 +960,7 @@ TEST_F(URLRequestTest, FileDirOutputSanity) { ASSERT_LT(0, d.bytes_received()); ASSERT_FALSE(d.request_failed()); - ASSERT_TRUE(req.status().is_success()); + ASSERT_TRUE(req->status().is_success()); // Check for the entry generated for the "sentinel" file. const std::string& data = d.data_received(); ASSERT_NE(data.find(sentinel_output), std::string::npos); @@ -972,27 +978,28 @@ TEST_F(URLRequestTest, FileDirRedirectNoCrash) { path = path.Append(FILE_PATH_LITERAL("url_request_unittest")); TestDelegate d; - URLRequest req( - FilePathToFileURL(path), DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + FilePathToFileURL(path), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); ASSERT_EQ(1, d.received_redirect_count()); ASSERT_LT(0, d.bytes_received()); ASSERT_FALSE(d.request_failed()); - ASSERT_TRUE(req.status().is_success()); + ASSERT_TRUE(req->status().is_success()); } #if defined(OS_WIN) // Don't accept the url "file:///" on windows. See http://crbug.com/1474. TEST_F(URLRequestTest, FileDirRedirectSingleSlash) { TestDelegate d; - URLRequest req(GURL("file:///"), DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("file:///"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); ASSERT_EQ(1, d.received_redirect_count()); - ASSERT_FALSE(req.status().is_success()); + ASSERT_FALSE(req->status().is_success()); } #endif // defined(OS_WIN) @@ -1001,10 +1008,11 @@ TEST_F(URLRequestTest, FileDirRedirectSingleSlash) { TEST_F(URLRequestTest, InvalidUrlTest) { TestDelegate d; { - URLRequest r(GURL("invalid url"), DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + GURL("invalid url"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); @@ -1038,13 +1046,12 @@ TEST_F(URLRequestTest, ResolveShortcutTest) { TestDelegate d; { - URLRequest r(FilePathToFileURL(base::FilePath(lnk_path)), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + FilePathToFileURL(base::FilePath(lnk_path)), DEFAULT_PRIORITY, &d, + NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -1063,7 +1070,7 @@ TEST_F(URLRequestTest, ResolveShortcutTest) { std::string content(buffer.get(), read_size); CloseHandle(file); - EXPECT_TRUE(!r.is_pending()); + EXPECT_TRUE(!r->is_pending()); EXPECT_EQ(1, d.received_redirect_count()); EXPECT_EQ(content, d.data_received()); } @@ -1285,31 +1292,29 @@ TEST_F(URLRequestTest, Intercept) { interceptor.main_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); base::SupportsUserData::Data* user_data0 = new base::SupportsUserData::Data(); base::SupportsUserData::Data* user_data1 = new base::SupportsUserData::Data(); base::SupportsUserData::Data* user_data2 = new base::SupportsUserData::Data(); - req.SetUserData(NULL, user_data0); - req.SetUserData(&user_data1, user_data1); - req.SetUserData(&user_data2, user_data2); - req.set_method("GET"); - req.Start(); + req->SetUserData(NULL, user_data0); + req->SetUserData(&user_data1, user_data1); + req->SetUserData(&user_data2, user_data2); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Make sure we can retrieve our specific user data - EXPECT_EQ(user_data0, req.GetUserData(NULL)); - EXPECT_EQ(user_data1, req.GetUserData(&user_data1)); - EXPECT_EQ(user_data2, req.GetUserData(&user_data2)); + EXPECT_EQ(user_data0, req->GetUserData(NULL)); + EXPECT_EQ(user_data1, req->GetUserData(&user_data1)); + EXPECT_EQ(user_data2, req->GetUserData(&user_data2)); // Check the interceptor got called as expected EXPECT_TRUE(interceptor.did_intercept_main_); // Check we got one good response - EXPECT_TRUE(req.status().is_success()); - EXPECT_EQ(200, req.response_headers()->response_code()); + EXPECT_TRUE(req->status().is_success()); + EXPECT_EQ(200, req->response_headers()->response_code()); EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.received_redirect_count()); @@ -1329,12 +1334,10 @@ TEST_F(URLRequestTest, InterceptRedirect) { interceptor.redirect_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1342,9 +1345,9 @@ TEST_F(URLRequestTest, InterceptRedirect) { EXPECT_TRUE(interceptor.did_intercept_redirect_); // Check we got one good response - EXPECT_TRUE(req.status().is_success()); - if (req.status().is_success()) { - EXPECT_EQ(200, req.response_headers()->response_code()); + EXPECT_TRUE(req->status().is_success()); + if (req->status().is_success()) { + EXPECT_EQ(200, req->response_headers()->response_code()); } EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); EXPECT_EQ(1, d.response_started_count()); @@ -1365,12 +1368,10 @@ TEST_F(URLRequestTest, InterceptServerError) { interceptor.final_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1378,8 +1379,8 @@ TEST_F(URLRequestTest, InterceptServerError) { EXPECT_TRUE(interceptor.did_intercept_final_); // Check we got one good response - EXPECT_TRUE(req.status().is_success()); - EXPECT_EQ(200, req.response_headers()->response_code()); + EXPECT_TRUE(req->status().is_success()); + EXPECT_EQ(200, req->response_headers()->response_code()); EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.received_redirect_count()); @@ -1397,12 +1398,10 @@ TEST_F(URLRequestTest, InterceptNetworkError) { interceptor.final_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1410,8 +1409,8 @@ TEST_F(URLRequestTest, InterceptNetworkError) { EXPECT_TRUE(interceptor.did_intercept_final_); // Check we received one good response - EXPECT_TRUE(req.status().is_success()); - EXPECT_EQ(200, req.response_headers()->response_code()); + EXPECT_TRUE(req->status().is_success()); + EXPECT_EQ(200, req->response_headers()->response_code()); EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.received_redirect_count()); @@ -1429,12 +1428,10 @@ TEST_F(URLRequestTest, InterceptRestartRequired) { interceptor.main_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1442,9 +1439,9 @@ TEST_F(URLRequestTest, InterceptRestartRequired) { EXPECT_TRUE(interceptor.did_intercept_main_); // Check we received one good response - EXPECT_TRUE(req.status().is_success()); - if (req.status().is_success()) { - EXPECT_EQ(200, req.response_headers()->response_code()); + EXPECT_TRUE(req->status().is_success()); + if (req->status().is_success()) { + EXPECT_EQ(200, req->response_headers()->response_code()); } EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); EXPECT_EQ(1, d.response_started_count()); @@ -1463,12 +1460,10 @@ TEST_F(URLRequestTest, InterceptRespectsCancelMain) { interceptor.final_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1476,8 +1471,8 @@ TEST_F(URLRequestTest, InterceptRespectsCancelMain) { EXPECT_FALSE(interceptor.did_intercept_final_); // Check we see a canceled request - EXPECT_FALSE(req.status().is_success()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_FALSE(req->status().is_success()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } TEST_F(URLRequestTest, InterceptRespectsCancelRedirect) { @@ -1497,12 +1492,10 @@ TEST_F(URLRequestTest, InterceptRespectsCancelRedirect) { interceptor.final_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1511,8 +1504,8 @@ TEST_F(URLRequestTest, InterceptRespectsCancelRedirect) { EXPECT_FALSE(interceptor.did_intercept_final_); // Check we see a canceled request - EXPECT_FALSE(req.status().is_success()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_FALSE(req->status().is_success()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } TEST_F(URLRequestTest, InterceptRespectsCancelFinal) { @@ -1525,12 +1518,10 @@ TEST_F(URLRequestTest, InterceptRespectsCancelFinal) { interceptor.cancel_final_request_ = true; TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1538,8 +1529,8 @@ TEST_F(URLRequestTest, InterceptRespectsCancelFinal) { EXPECT_TRUE(interceptor.did_cancel_final_); // Check we see a canceled request - EXPECT_FALSE(req.status().is_success()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_FALSE(req->status().is_success()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } TEST_F(URLRequestTest, InterceptRespectsCancelInRestart) { @@ -1554,12 +1545,10 @@ TEST_F(URLRequestTest, InterceptRespectsCancelInRestart) { interceptor.final_data_ = TestInterceptor::ok_data(); TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("GET"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); + req->Start(); base::RunLoop().Run(); // Check the interceptor got called as expected @@ -1567,8 +1556,8 @@ TEST_F(URLRequestTest, InterceptRespectsCancelInRestart) { EXPECT_FALSE(interceptor.did_intercept_final_); // Check we see a canceled request - EXPECT_FALSE(req.status().is_success()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_FALSE(req->status().is_success()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } LoadTimingInfo RunLoadTimingTest(const LoadTimingInfo& job_load_timing, @@ -1577,13 +1566,13 @@ LoadTimingInfo RunLoadTimingTest(const LoadTimingInfo& job_load_timing, interceptor.intercept_main_request_ = true; interceptor.main_request_load_timing_info_ = job_load_timing; TestDelegate d; - URLRequest req( - GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, context); - req.Start(); + scoped_ptr<URLRequest> req(context->CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); LoadTimingInfo resulting_load_timing; - req.GetLoadTimingInfo(&resulting_load_timing); + req->GetLoadTimingInfo(&resulting_load_timing); // None of these should be modified by the URLRequest. EXPECT_EQ(job_load_timing.socket_reused, resulting_load_timing.socket_reused); @@ -1855,18 +1844,19 @@ TEST_F(URLRequestTest, NetworkDelegateProxyError) { TestURLRequestContextWithProxy context("myproxy:70", &network_delegate); TestDelegate d; - URLRequest req(GURL("http://example.com"), DEFAULT_PRIORITY, &d, &context); - req.set_method("GET"); + scoped_ptr<URLRequest> req(context.CreateRequest( + GURL("http://example.com"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("GET"); - req.Start(); + req->Start(); base::RunLoop().Run(); // Check we see a failed request. - EXPECT_FALSE(req.status().is_success()); + EXPECT_FALSE(req->status().is_success()); // The proxy server is not set before failure. - EXPECT_TRUE(req.proxy_server().IsEmpty()); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, req.status().error()); + EXPECT_TRUE(req->proxy_server().IsEmpty()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, req->status().error()); EXPECT_EQ(1, network_delegate.error_count()); EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, network_delegate.last_error()); @@ -1877,8 +1867,9 @@ TEST_F(URLRequestTest, NetworkDelegateProxyError) { // content is empty. TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { TestDelegate d; - URLRequest req(GURL("data:,"), DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("data:,"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ("", d.data_received()); EXPECT_EQ(1, default_network_delegate_.completed_requests()); @@ -1888,40 +1879,36 @@ TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { // correctly, both before and after start. TEST_F(URLRequestTest, SetPriorityBasic) { TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - EXPECT_EQ(DEFAULT_PRIORITY, req.priority()); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); - req.SetPriority(LOW); - EXPECT_EQ(LOW, req.priority()); + req->SetPriority(LOW); + EXPECT_EQ(LOW, req->priority()); - req.Start(); - EXPECT_EQ(LOW, req.priority()); + req->Start(); + EXPECT_EQ(LOW, req->priority()); - req.SetPriority(MEDIUM); - EXPECT_EQ(MEDIUM, req.priority()); + req->SetPriority(MEDIUM); + EXPECT_EQ(MEDIUM, req->priority()); } // Make sure that URLRequest calls SetPriority on a job before calling // Start on it. TEST_F(URLRequestTest, SetJobPriorityBeforeJobStart) { TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); - EXPECT_EQ(DEFAULT_PRIORITY, req.priority()); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); + EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); scoped_refptr<URLRequestTestJob> job = - new URLRequestTestJob(&req, &default_network_delegate_); + new URLRequestTestJob(req.get(), &default_network_delegate_); AddTestInterceptor()->set_main_intercept_job(job.get()); EXPECT_EQ(DEFAULT_PRIORITY, job->priority()); - req.SetPriority(LOW); + req->SetPriority(LOW); - req.Start(); + req->Start(); EXPECT_EQ(LOW, job->priority()); } @@ -1929,21 +1916,19 @@ TEST_F(URLRequestTest, SetJobPriorityBeforeJobStart) { // job. TEST_F(URLRequestTest, SetJobPriority) { TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), DEFAULT_PRIORITY, &d, NULL)); scoped_refptr<URLRequestTestJob> job = - new URLRequestTestJob(&req, &default_network_delegate_); + new URLRequestTestJob(req.get(), &default_network_delegate_); AddTestInterceptor()->set_main_intercept_job(job.get()); - req.SetPriority(LOW); - req.Start(); + req->SetPriority(LOW); + req->Start(); EXPECT_EQ(LOW, job->priority()); - req.SetPriority(MEDIUM); - EXPECT_EQ(MEDIUM, req.priority()); + req->SetPriority(MEDIUM); + EXPECT_EQ(MEDIUM, req->priority()); EXPECT_EQ(MEDIUM, job->priority()); } @@ -1951,24 +1936,22 @@ TEST_F(URLRequestTest, SetJobPriority) { // is MAXIMUM_PRIORITY. TEST_F(URLRequestTest, PriorityIgnoreLimits) { TestDelegate d; - URLRequest req(GURL("http://test_intercept/foo"), - MAXIMUM_PRIORITY, - &d, - &default_context_); - EXPECT_EQ(MAXIMUM_PRIORITY, req.priority()); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + GURL("http://test_intercept/foo"), MAXIMUM_PRIORITY, &d, NULL)); + EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); scoped_refptr<URLRequestTestJob> job = - new URLRequestTestJob(&req, &default_network_delegate_); + new URLRequestTestJob(req.get(), &default_network_delegate_); AddTestInterceptor()->set_main_intercept_job(job.get()); - req.SetLoadFlags(LOAD_IGNORE_LIMITS); - EXPECT_EQ(MAXIMUM_PRIORITY, req.priority()); + req->SetLoadFlags(LOAD_IGNORE_LIMITS); + EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); - req.SetPriority(MAXIMUM_PRIORITY); - EXPECT_EQ(MAXIMUM_PRIORITY, req.priority()); + req->SetPriority(MAXIMUM_PRIORITY); + EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); - req.Start(); - EXPECT_EQ(MAXIMUM_PRIORITY, req.priority()); + req->Start(); + EXPECT_EQ(MAXIMUM_PRIORITY, req->priority()); EXPECT_EQ(MAXIMUM_PRIORITY, job->priority()); } @@ -2005,11 +1988,10 @@ TEST_F(URLRequestTest, DelayedCookieCallback) { TestNetworkDelegate network_delegate; context.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotSend=1"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); @@ -2021,11 +2003,9 @@ TEST_F(URLRequestTest, DelayedCookieCallback) { TestNetworkDelegate network_delegate; context.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") @@ -2044,11 +2024,10 @@ TEST_F(URLRequestTest, DoNotSendCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotSend=1"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); @@ -2059,11 +2038,9 @@ TEST_F(URLRequestTest, DoNotSendCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") @@ -2077,12 +2054,10 @@ TEST_F(URLRequestTest, DoNotSendCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetLoadFlags(LOAD_DO_NOT_SEND_COOKIES); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->SetLoadFlags(LOAD_DO_NOT_SEND_COOKIES); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") @@ -2103,11 +2078,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotUpdate=2"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2120,13 +2094,11 @@ TEST_F(URLRequestTest, DoNotSaveCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( test_server.GetURL("set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetLoadFlags(LOAD_DO_NOT_SAVE_COOKIES); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->SetLoadFlags(LOAD_DO_NOT_SAVE_COOKIES); + req->Start(); base::RunLoop().Run(); @@ -2141,11 +2113,9 @@ TEST_F(URLRequestTest, DoNotSaveCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") @@ -2168,11 +2138,10 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotSend=1"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2184,11 +2153,9 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") @@ -2204,11 +2171,9 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) { default_context_.set_network_delegate(&network_delegate); TestDelegate d; network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES); - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") @@ -2228,11 +2193,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotUpdate=2"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2245,12 +2209,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) { default_context_.set_network_delegate(&network_delegate); TestDelegate d; network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE); - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( test_server.GetURL("set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); @@ -2263,11 +2225,9 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") @@ -2289,11 +2249,9 @@ TEST_F(URLRequestTest, DoNotSaveEmptyCookies) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2311,11 +2269,10 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotSend=1"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2327,11 +2284,9 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") @@ -2347,11 +2302,9 @@ TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) { default_context_.set_network_delegate(&network_delegate); TestDelegate d; network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES); - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") @@ -2371,11 +2324,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("set-cookie?CookieToNotUpdate=2"), DEFAULT_PRIORITY, + &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); @@ -2388,12 +2340,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) { default_context_.set_network_delegate(&network_delegate); TestDelegate d; network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE); - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( test_server.GetURL("set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); @@ -2406,11 +2356,9 @@ TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") @@ -2477,13 +2425,11 @@ TEST_F(URLRequestTest, AcceptClockSkewCookieWithWrongDateTimezone) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( test_server.GetURL( "set-cookie?StillGood=1;expires=Mon,18-Apr-1977,22:50:13,GMT"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); } // Verify that the cookie is not set. @@ -2491,11 +2437,9 @@ TEST_F(URLRequestTest, AcceptClockSkewCookieWithWrongDateTimezone) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("StillGood=1") == std::string::npos); @@ -2505,13 +2449,11 @@ TEST_F(URLRequestTest, AcceptClockSkewCookieWithWrongDateTimezone) { FixedDateNetworkDelegate network_delegate("18-Apr-1977 22:49:13 UTC"); default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( test_server.GetURL( "set-cookie?StillGood=1;expires=Mon,18-Apr-1977,22:50:13,GMT"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); } // Verify that the cookie is set. @@ -2519,11 +2461,9 @@ TEST_F(URLRequestTest, AcceptClockSkewCookieWithWrongDateTimezone) { TestNetworkDelegate network_delegate; default_context_.set_network_delegate(&network_delegate); TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Cookie"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("StillGood=1") != std::string::npos); @@ -2541,17 +2481,15 @@ TEST_F(URLRequestTest, DoNotOverrideReferrer) { // only the latter shall be respected. { TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Referer"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetReferrer("http://foo.com/"); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Referer"), DEFAULT_PRIORITY, &d, NULL)); + req->SetReferrer("http://foo.com/"); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/"); - req.SetExtraRequestHeaders(headers); + req->SetExtraRequestHeaders(headers); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ("http://foo.com/", d.data_received()); @@ -2561,17 +2499,15 @@ TEST_F(URLRequestTest, DoNotOverrideReferrer) { // shall be sent in the header. { TestDelegate d; - URLRequest req(test_server.GetURL("echoheader?Referer"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server.GetURL("echoheader?Referer"), DEFAULT_PRIORITY, &d, NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/"); - req.SetExtraRequestHeaders(headers); - req.SetLoadFlags(LOAD_VALIDATE_CACHE); + req->SetExtraRequestHeaders(headers); + req->SetLoadFlags(LOAD_VALIDATE_CACHE); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ("None", d.data_received()); @@ -2599,20 +2535,21 @@ class URLRequestTestHTTP : public URLRequestTest { bool include_data) { static const char kData[] = "hello world"; TestDelegate d; - URLRequest req(redirect_url, DEFAULT_PRIORITY, &d, &default_context_); - req.set_method(request_method); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + redirect_url, DEFAULT_PRIORITY, &d, NULL)); + req->set_method(request_method); if (include_data) { - req.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + req->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kContentLength, base::UintToString(arraysize(kData) - 1)); - req.SetExtraRequestHeaders(headers); + req->SetExtraRequestHeaders(headers); } - req.Start(); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(redirect_method, req.method()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); - EXPECT_EQ(OK, req.status().error()); + EXPECT_EQ(redirect_method, req->method()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); + EXPECT_EQ(OK, req->status().error()); if (include_data) { if (request_method == redirect_method) { EXPECT_EQ(kData, d.data_received()); @@ -2644,20 +2581,20 @@ class URLRequestTestHTTP : public URLRequestTest { for (int i = 0; i < kIterations; ++i) { TestDelegate d; - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.set_method(method.c_str()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->set_method(method.c_str()); - r.set_upload(make_scoped_ptr(CreateSimpleUploadData(uploadBytes))); + r->set_upload(make_scoped_ptr(CreateSimpleUploadData(uploadBytes))); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); ASSERT_EQ(1, d.response_started_count()) - << "request failed: " << r.status().status() - << ", os error: " << r.status().error(); + << "request failed: " << r->status().status() + << ", os error: " << r->status().error(); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(uploadBytes, d.data_received()); @@ -2691,21 +2628,20 @@ class URLRequestTestHTTP : public URLRequestTest { bool DoManyCookiesRequest(int num_cookies) { TestDelegate d; - URLRequest r(test_server_.GetURL("set-many-cookies?" + - base::IntToString(num_cookies)), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("set-many-cookies?" + + base::IntToString(num_cookies)), + DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - bool is_success = r.status().is_success(); + bool is_success = r->status().is_success(); if (!is_success) { - EXPECT_TRUE(r.status().error() == ERR_RESPONSE_HEADERS_TOO_BIG); + EXPECT_TRUE(r->status().error() == ERR_RESPONSE_HEADERS_TOO_BIG); // The test server appears to be unable to handle subsequent requests // after this error is triggered. Force it to restart. EXPECT_TRUE(test_server_.Stop()); @@ -2731,17 +2667,17 @@ TEST_F(URLRequestTestHTTP, ProxyTunnelRedirectTest) { TestDelegate d; { - URLRequest r( - GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d, &context); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(context.CreateRequest( + GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); // The proxy server is not set before failure. - EXPECT_TRUE(r.proxy_server().IsEmpty()); - EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); + EXPECT_TRUE(r->proxy_server().IsEmpty()); + EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); EXPECT_EQ(1, d.response_started_count()); // We should not have followed the redirect. EXPECT_EQ(0, d.received_redirect_count()); @@ -2759,17 +2695,17 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) { TestDelegate d; { - URLRequest r( - GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d, &context); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(context.CreateRequest( + GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); // The proxy server is not set before failure. - EXPECT_TRUE(r.proxy_server().IsEmpty()); - EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); + EXPECT_TRUE(r->proxy_server().IsEmpty()); + EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); EXPECT_EQ(1, d.response_started_count()); // We should not have followed the redirect. EXPECT_EQ(0, d.received_redirect_count()); @@ -2803,10 +2739,10 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateBlockAsynchronously) { context.Init(); { - URLRequest r( - test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); for (size_t i = 0; i < blocking_stages_length; ++i) { base::RunLoop().Run(); EXPECT_EQ(blocking_stages[i], @@ -2814,8 +2750,8 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateBlockAsynchronously) { network_delegate.DoCallback(OK); } base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -2836,16 +2772,16 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequest) { test_server_.host_port_pair().ToString(), &network_delegate); { - URLRequest r( - test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); // The proxy server is not set before cancellation. - EXPECT_TRUE(r.proxy_server().IsEmpty()); - EXPECT_EQ(ERR_EMPTY_RESPONSE, r.status().error()); + EXPECT_TRUE(r->proxy_server().IsEmpty()); + EXPECT_EQ(ERR_EMPTY_RESPONSE, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -2869,15 +2805,16 @@ void NetworkDelegateCancelRequest(BlockingNetworkDelegate::BlockMode block_mode, context.Init(); { - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); // The proxy server is not set before cancellation. - EXPECT_TRUE(r.proxy_server().IsEmpty()); - EXPECT_EQ(ERR_BLOCKED_BY_CLIENT, r.status().error()); + EXPECT_TRUE(r->proxy_server().IsEmpty()); + EXPECT_EQ(ERR_BLOCKED_BY_CLIENT, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -2947,37 +2884,38 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequest) { { GURL original_url(test_server_.GetURL("empty.html")); - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); // Quit after hitting the redirect, so can check the headers. d.set_quit_on_redirect(true); - r.Start(); + r->Start(); base::RunLoop().Run(); // Check headers from URLRequestJob. - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(307, r.GetResponseCode()); - EXPECT_EQ(307, r.response_headers()->response_code()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(307, r->GetResponseCode()); + EXPECT_EQ(307, r->response_headers()->response_code()); std::string location; - ASSERT_TRUE(r.response_headers()->EnumerateHeader(NULL, "Location", - &location)); + ASSERT_TRUE(r->response_headers()->EnumerateHeader(NULL, "Location", + &location)); EXPECT_EQ(redirect_url, GURL(location)); // Let the request finish. - r.FollowDeferredRedirect(); + r->FollowDeferredRedirect(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_TRUE(r.proxy_server().Equals(test_server_.host_port_pair())); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_TRUE(r->proxy_server().Equals(test_server_.host_port_pair())); EXPECT_EQ( 1, network_delegate.observed_before_proxy_headers_sent_callbacks()); EXPECT_TRUE( network_delegate.last_observed_proxy().Equals( test_server_.host_port_pair())); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(redirect_url, r.url()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(2U, r.url_chain().size()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(redirect_url, r->url()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(2U, r->url_chain().size()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3000,37 +2938,38 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestSynchronously) { { GURL original_url(test_server_.GetURL("empty.html")); - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); // Quit after hitting the redirect, so can check the headers. d.set_quit_on_redirect(true); - r.Start(); + r->Start(); base::RunLoop().Run(); // Check headers from URLRequestJob. - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(307, r.GetResponseCode()); - EXPECT_EQ(307, r.response_headers()->response_code()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(307, r->GetResponseCode()); + EXPECT_EQ(307, r->response_headers()->response_code()); std::string location; - ASSERT_TRUE(r.response_headers()->EnumerateHeader(NULL, "Location", - &location)); + ASSERT_TRUE(r->response_headers()->EnumerateHeader(NULL, "Location", + &location)); EXPECT_EQ(redirect_url, GURL(location)); // Let the request finish. - r.FollowDeferredRedirect(); + r->FollowDeferredRedirect(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_TRUE(r.proxy_server().Equals(test_server_.host_port_pair())); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_TRUE(r->proxy_server().Equals(test_server_.host_port_pair())); EXPECT_EQ( 1, network_delegate.observed_before_proxy_headers_sent_callbacks()); EXPECT_TRUE( network_delegate.last_observed_proxy().Equals( test_server_.host_port_pair())); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(redirect_url, r.url()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(2U, r.url_chain().size()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(redirect_url, r->url()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(2U, r->url_chain().size()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3056,40 +2995,41 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestPost) { { GURL original_url(test_server_.GetURL("empty.html")); - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &context); - r.set_method("POST"); - r.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + scoped_ptr<URLRequest> r(context.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); + r->set_method("POST"); + r->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kContentLength, base::UintToString(arraysize(kData) - 1)); - r.SetExtraRequestHeaders(headers); + r->SetExtraRequestHeaders(headers); // Quit after hitting the redirect, so can check the headers. d.set_quit_on_redirect(true); - r.Start(); + r->Start(); base::RunLoop().Run(); // Check headers from URLRequestJob. - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(307, r.GetResponseCode()); - EXPECT_EQ(307, r.response_headers()->response_code()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(307, r->GetResponseCode()); + EXPECT_EQ(307, r->response_headers()->response_code()); std::string location; - ASSERT_TRUE(r.response_headers()->EnumerateHeader(NULL, "Location", - &location)); + ASSERT_TRUE(r->response_headers()->EnumerateHeader(NULL, "Location", + &location)); EXPECT_EQ(redirect_url, GURL(location)); // Let the request finish. - r.FollowDeferredRedirect(); + r->FollowDeferredRedirect(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(redirect_url, r.url()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(2U, r.url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(redirect_url, r->url()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(2U, r->url_chain().size()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); - EXPECT_EQ("POST", r.method()); + EXPECT_EQ("POST", r->method()); EXPECT_EQ(kData, d.data_received()); } EXPECT_EQ(1, network_delegate.destroyed_requests()); @@ -3112,22 +3052,24 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestOnHeadersReceived) { { GURL original_url(test_server_.GetURL("empty.html")); - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_TRUE(r.proxy_server().Equals(test_server_.host_port_pair())); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_TRUE(r->proxy_server().Equals(test_server_.host_port_pair())); EXPECT_EQ( 2, network_delegate.observed_before_proxy_headers_sent_callbacks()); EXPECT_TRUE( network_delegate.last_observed_proxy().Equals( test_server_.host_port_pair())); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(redirect_url, r.url()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(2U, r.url_chain().size()); + + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(redirect_url, r->url()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(2U, r->url_chain().size()); EXPECT_EQ(2, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3153,14 +3095,15 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncNoAction) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_TRUE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3184,20 +3127,21 @@ TEST_F(URLRequestTestHTTP, { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); { HttpRequestHeaders headers; - EXPECT_TRUE(r.GetFullRequestHeaders(&headers)); + EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); EXPECT_FALSE(headers.HasHeader("Authorization")); } base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_TRUE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3225,13 +3169,14 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncSetAuth) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_FALSE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3260,20 +3205,21 @@ TEST_F(URLRequestTestHTTP, { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_FALSE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); { HttpRequestHeaders headers; - EXPECT_TRUE(r.GetFullRequestHeaders(&headers)); + EXPECT_TRUE(r->GetFullRequestHeaders(&headers)); EXPECT_TRUE(headers.HasHeader("Authorization")); } } @@ -3298,13 +3244,14 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncCancel) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(401, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(401, r->GetResponseCode()); EXPECT_FALSE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3332,13 +3279,14 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncNoAction) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_TRUE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3367,14 +3315,15 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncSetAuth) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(0, r.status().error()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(0, r->status().error()); - EXPECT_EQ(200, r.GetResponseCode()); + EXPECT_EQ(200, r->GetResponseCode()); EXPECT_FALSE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3400,13 +3349,14 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncCancel) { { GURL url(test_server_.GetURL("auth-basic")); - URLRequest r(url, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(401, r.GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(401, r->GetResponseCode()); EXPECT_FALSE(d.auth_required_called()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); @@ -3430,20 +3380,20 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting1) { context.Init(); { - URLRequest r( - test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_URL_REQUEST, network_delegate.stage_blocked_for_callback()); EXPECT_EQ(0, network_delegate.completed_requests()); // Cancel before callback. - r.Cancel(); + r->Cancel(); // Ensure that network delegate is notified. EXPECT_EQ(1, network_delegate.completed_requests()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); - EXPECT_EQ(ERR_ABORTED, r.status().error()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); + EXPECT_EQ(ERR_ABORTED, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3467,20 +3417,20 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting2) { context.Init(); { - URLRequest r( - test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_SEND_HEADERS, network_delegate.stage_blocked_for_callback()); EXPECT_EQ(0, network_delegate.completed_requests()); // Cancel before callback. - r.Cancel(); + r->Cancel(); // Ensure that network delegate is notified. EXPECT_EQ(1, network_delegate.completed_requests()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); - EXPECT_EQ(ERR_ABORTED, r.status().error()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); + EXPECT_EQ(ERR_ABORTED, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3503,20 +3453,20 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting3) { context.Init(); { - URLRequest r( - test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(BlockingNetworkDelegate::ON_HEADERS_RECEIVED, network_delegate.stage_blocked_for_callback()); EXPECT_EQ(0, network_delegate.completed_requests()); // Cancel before callback. - r.Cancel(); + r->Cancel(); // Ensure that network delegate is notified. EXPECT_EQ(1, network_delegate.completed_requests()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); - EXPECT_EQ(ERR_ABORTED, r.status().error()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); + EXPECT_EQ(ERR_ABORTED, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3539,20 +3489,20 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting4) { context.Init(); { - URLRequest r( - test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(BlockingNetworkDelegate::ON_AUTH_REQUIRED, network_delegate.stage_blocked_for_callback()); EXPECT_EQ(0, network_delegate.completed_requests()); // Cancel before callback. - r.Cancel(); + r->Cancel(); // Ensure that network delegate is notified. EXPECT_EQ(1, network_delegate.completed_requests()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); - EXPECT_EQ(ERR_ABORTED, r.status().error()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); + EXPECT_EQ(ERR_ABORTED, r->status().error()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -3571,18 +3521,18 @@ TEST_F(URLRequestTestHTTP, UnexpectedServerAuthTest) { TestDelegate d; { - URLRequest r( - GURL("https://www.server-auth.com/"), DEFAULT_PRIORITY, &d, &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + GURL("https://www.server-auth.com/"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); // The proxy server is not set before failure. - EXPECT_TRUE(r.proxy_server().IsEmpty()); - EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); + EXPECT_TRUE(r->proxy_server().IsEmpty()); + EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); } } @@ -3591,13 +3541,11 @@ TEST_F(URLRequestTestHTTP, GetTest_NoCache) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -3605,9 +3553,9 @@ TEST_F(URLRequestTestHTTP, GetTest_NoCache) { EXPECT_FALSE(d.received_data_before_response()); EXPECT_NE(0, d.bytes_received()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); // TODO(eroman): Add back the NetLog tests... } @@ -3660,13 +3608,11 @@ TEST_F(URLRequestTestHTTP, GetTest) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -3674,9 +3620,9 @@ TEST_F(URLRequestTestHTTP, GetTest) { EXPECT_FALSE(d.received_data_before_response()); EXPECT_NE(0, d.bytes_received()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); } } @@ -3686,13 +3632,14 @@ TEST_F(URLRequestTestHTTP, GetTest_GetFullRequestHeaders) { TestDelegate d; { GURL test_url(test_server_.GetURL(std::string())); - URLRequest r(test_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_url, DEFAULT_PRIORITY, &d, NULL)); HttpRequestHeaders headers; - EXPECT_FALSE(r.GetFullRequestHeaders(&headers)); + EXPECT_FALSE(r->GetFullRequestHeaders(&headers)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -3700,9 +3647,9 @@ TEST_F(URLRequestTestHTTP, GetTest_GetFullRequestHeaders) { EXPECT_FALSE(d.received_data_before_response()); EXPECT_NE(0, d.bytes_received()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); EXPECT_TRUE(d.have_full_request_headers()); CheckFullRequestHeaders(d.full_request_headers(), test_url); @@ -3714,27 +3661,25 @@ TEST_F(URLRequestTestHTTP, GetTestLoadTiming) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); LoadTimingInfo load_timing_info; - r.GetLoadTimingInfo(&load_timing_info); + r->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_NE(0, d.bytes_received()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); } } @@ -3767,24 +3712,24 @@ TEST_F(URLRequestTestHTTP, GetZippedTest) { context.set_network_delegate(&network_delegate); context.Init(); - URLRequest r( - test_server_.GetURL(test_file), DEFAULT_PRIORITY, &d, &context); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL(test_file), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); VLOG(1) << " Received " << d.bytes_received() << " bytes" - << " status = " << r.status().status() - << " error = " << r.status().error(); + << " status = " << r->status().status() + << " error = " << r->status().error(); if (test_expect_success[i]) { - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()) + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()) << " Parameter = \"" << test_file << "\""; } else { - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); - EXPECT_EQ(ERR_CONTENT_LENGTH_MISMATCH, r.status().error()) + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); + EXPECT_EQ(ERR_CONTENT_LENGTH_MISMATCH, r->status().error()) << " Parameter = \"" << test_file << "\""; } } @@ -3804,19 +3749,17 @@ TEST_F(URLRequestTestHTTP, HTTPSToHTTPRedirectNoRefererTest) { // server should not be sent the referer. GURL http_destination = test_server_.GetURL(std::string()); TestDelegate d; - URLRequest req( + scoped_ptr<URLRequest> req(default_context_.CreateRequest( https_test_server.GetURL("server-redirect?" + http_destination.spec()), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetReferrer("https://www.referrer.com/"); - req.Start(); + DEFAULT_PRIORITY, &d, NULL)); + req->SetReferrer("https://www.referrer.com/"); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(1, d.received_redirect_count()); - EXPECT_EQ(http_destination, req.url()); - EXPECT_EQ(std::string(), req.referrer()); + EXPECT_EQ(http_destination, req->url()); + EXPECT_EQ(std::string(), req->referrer()); } TEST_F(URLRequestTestHTTP, RedirectLoadTiming) { @@ -3826,17 +3769,18 @@ TEST_F(URLRequestTestHTTP, RedirectLoadTiming) { GURL original_url = test_server_.GetURL("server-redirect?" + destination_url.spec()); TestDelegate d; - URLRequest req(original_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(1, d.received_redirect_count()); - EXPECT_EQ(destination_url, req.url()); - EXPECT_EQ(original_url, req.original_url()); - ASSERT_EQ(2U, req.url_chain().size()); - EXPECT_EQ(original_url, req.url_chain()[0]); - EXPECT_EQ(destination_url, req.url_chain()[1]); + EXPECT_EQ(destination_url, req->url()); + EXPECT_EQ(original_url, req->original_url()); + ASSERT_EQ(2U, req->url_chain().size()); + EXPECT_EQ(original_url, req->url_chain()[0]); + EXPECT_EQ(destination_url, req->url_chain()[1]); LoadTimingInfo load_timing_info_before_redirect; EXPECT_TRUE(default_network_delegate_.GetLoadTimingInfoBeforeRedirect( @@ -3845,7 +3789,7 @@ TEST_F(URLRequestTestHTTP, RedirectLoadTiming) { CONNECT_TIMING_HAS_DNS_TIMES); LoadTimingInfo load_timing_info; - req.GetLoadTimingInfo(&load_timing_info); + req->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); // Check that a new socket was used on redirect, since the server does not @@ -3866,18 +3810,19 @@ TEST_F(URLRequestTestHTTP, MultipleRedirectTest) { GURL original_url = test_server_.GetURL( "server-redirect?" + middle_redirect_url.spec()); TestDelegate d; - URLRequest req(original_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(2, d.received_redirect_count()); - EXPECT_EQ(destination_url, req.url()); - EXPECT_EQ(original_url, req.original_url()); - ASSERT_EQ(3U, req.url_chain().size()); - EXPECT_EQ(original_url, req.url_chain()[0]); - EXPECT_EQ(middle_redirect_url, req.url_chain()[1]); - EXPECT_EQ(destination_url, req.url_chain()[2]); + EXPECT_EQ(destination_url, req->url()); + EXPECT_EQ(original_url, req->original_url()); + ASSERT_EQ(3U, req->url_chain().size()); + EXPECT_EQ(original_url, req->url_chain()[0]); + EXPECT_EQ(middle_redirect_url, req->url_chain()[1]); + EXPECT_EQ(destination_url, req->url_chain()[2]); } // First and second pieces of information logged by delegates to URLRequests. @@ -4197,25 +4142,24 @@ TEST_F(URLRequestTestHTTP, DelegateInfoBeforeStart) { context.Init(); { - URLRequest r(test_server_.GetURL("empty.html"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + LoadStateWithParam load_state = r->GetLoadState(); EXPECT_EQ(LOAD_STATE_IDLE, load_state.state); EXPECT_EQ(base::string16(), load_state.param); AsyncDelegateLogger::Run( - &r, + r.get(), LOAD_STATE_WAITING_FOR_DELEGATE, LOAD_STATE_WAITING_FOR_DELEGATE, LOAD_STATE_IDLE, - base::Bind(&URLRequest::Start, base::Unretained(&r))); + base::Bind(&URLRequest::Start, base::Unretained(r.get()))); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); } CapturingNetLog::CapturedEntryList entries; @@ -4245,19 +4189,18 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateInfo) { context.Init(); { - URLRequest r(test_server_.GetURL("simple.html"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("simple.html"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + LoadStateWithParam load_state = r->GetLoadState(); EXPECT_EQ(LOAD_STATE_IDLE, load_state.state); EXPECT_EQ(base::string16(), load_state.param); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -4303,19 +4246,18 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateInfoRedirect) { context.Init(); { - URLRequest r(test_server_.GetURL("server-redirect?simple.html"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("server-redirect?simple.html"), DEFAULT_PRIORITY, + &request_delegate, NULL)); + LoadStateWithParam load_state = r->GetLoadState(); EXPECT_EQ(LOAD_STATE_IDLE, load_state.state); EXPECT_EQ(base::string16(), load_state.param); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); EXPECT_EQ(2, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -4386,19 +4328,18 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateInfoAuth) { context.Init(); { - URLRequest r(test_server_.GetURL("auth-basic"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &request_delegate, + NULL)); + LoadStateWithParam load_state = r->GetLoadState(); EXPECT_EQ(LOAD_STATE_IDLE, load_state.state); EXPECT_EQ(base::string16(), load_state.param); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); EXPECT_EQ(1, network_delegate.created_requests()); EXPECT_EQ(0, network_delegate.destroyed_requests()); } @@ -4451,16 +4392,15 @@ TEST_F(URLRequestTestHTTP, URLRequestDelegateInfo) { // body are ignored. Since they are ignored, this test is robust against // the possibility of multiple reads being combined in the unlikely event // that it occurs. - URLRequest r(test_server_.GetURL("chunked?waitBetweenChunks=20"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("chunked?waitBetweenChunks=20"), DEFAULT_PRIORITY, + &request_delegate, NULL)); + LoadStateWithParam load_state = r->GetLoadState(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); } CapturingNetLog::CapturedEntryList entries; @@ -4505,16 +4445,15 @@ TEST_F(URLRequestTestHTTP, URLRequestDelegateInfoOnRedirect) { context.Init(); { - URLRequest r(test_server_.GetURL("server-redirect?simple.html"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("server-redirect?simple.html"), DEFAULT_PRIORITY, + &request_delegate, NULL)); + LoadStateWithParam load_state = r->GetLoadState(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(200, r.GetResponseCode()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(200, r->GetResponseCode()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); } CapturingNetLog::CapturedEntryList entries; @@ -4570,14 +4509,13 @@ TEST_F(URLRequestTestHTTP, URLRequestDelegateOnRedirectCancelled) { context.Init(); { - URLRequest r(test_server_.GetURL("server-redirect?simple.html"), - DEFAULT_PRIORITY, - &request_delegate, - &context); - LoadStateWithParam load_state = r.GetLoadState(); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + test_server_.GetURL("server-redirect?simple.html"), DEFAULT_PRIORITY, + &request_delegate, NULL)); + LoadStateWithParam load_state = r->GetLoadState(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); } CapturingNetLog::CapturedEntryList entries; @@ -4639,16 +4577,17 @@ TEST_F(URLRequestTestHTTP, RedirectWithAdditionalHeadersTest) { GURL original_url = test_server_.GetURL( "server-redirect?" + destination_url.spec()); RedirectWithAdditionalHeadersDelegate d; - URLRequest req(original_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); std::string value; - const HttpRequestHeaders& headers = req.extra_request_headers(); + const HttpRequestHeaders& headers = req->extra_request_headers(); EXPECT_TRUE(headers.GetHeader(kExtraHeader, &value)); EXPECT_EQ(kExtraValue, value); - EXPECT_FALSE(req.is_pending()); - EXPECT_FALSE(req.is_redirecting()); + EXPECT_FALSE(req->is_pending()); + EXPECT_FALSE(req->is_redirecting()); EXPECT_EQ(kExtraValue, d.data_received()); } @@ -4675,31 +4614,30 @@ TEST_F(URLRequestTestHTTP, RedirectWithHeaderRemovalTest) { GURL original_url = test_server_.GetURL( "server-redirect?" + destination_url.spec()); RedirectWithHeaderRemovalDelegate d; - URLRequest req(original_url, DEFAULT_PRIORITY, &d, &default_context_); - req.SetExtraRequestHeaderByName(kExtraHeaderToRemove, "dummy", false); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); + req->SetExtraRequestHeaderByName(kExtraHeaderToRemove, "dummy", false); + req->Start(); base::RunLoop().Run(); std::string value; - const HttpRequestHeaders& headers = req.extra_request_headers(); + const HttpRequestHeaders& headers = req->extra_request_headers(); EXPECT_FALSE(headers.GetHeader(kExtraHeaderToRemove, &value)); - EXPECT_FALSE(req.is_pending()); - EXPECT_FALSE(req.is_redirecting()); + EXPECT_FALSE(req->is_pending()); + EXPECT_FALSE(req->is_redirecting()); EXPECT_EQ("None", d.data_received()); } TEST_F(URLRequestTestHTTP, CancelTest) { TestDelegate d; { - URLRequest r(GURL("http://www.google.com/"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + GURL("http://www.google.com/"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); - r.Cancel(); + r->Cancel(); base::RunLoop().Run(); @@ -4716,22 +4654,20 @@ TEST_F(URLRequestTestHTTP, CancelTest2) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); d.set_cancel_in_response_started(true); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.bytes_received()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); } } @@ -4740,15 +4676,13 @@ TEST_F(URLRequestTestHTTP, CancelTest3) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); d.set_cancel_in_received_data(true); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -4758,7 +4692,7 @@ TEST_F(URLRequestTestHTTP, CancelTest3) { // or it could have been all the bytes. // EXPECT_EQ(0, d.bytes_received()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); } } @@ -4767,13 +4701,11 @@ TEST_F(URLRequestTestHTTP, CancelTest4) { TestDelegate d; { - URLRequest r(test_server_.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); // The request will be implicitly canceled when it is destroyed. The // test delegate must not post a quit message when this happens because @@ -4796,27 +4728,23 @@ TEST_F(URLRequestTestHTTP, CancelTest5) { // populate cache { TestDelegate d; - URLRequest r(test_server_.GetURL("cachetime"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("cachetime"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); } // cancel read from cache (see bug 990242) { TestDelegate d; - URLRequest r(test_server_.GetURL("cachetime"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - r.Cancel(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("cachetime"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + r->Cancel(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.bytes_received()); EXPECT_FALSE(d.received_data_before_response()); @@ -4838,18 +4766,18 @@ TEST_F(URLRequestTestHTTP, PostEmptyTest) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.set_method("POST"); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->set_method("POST"); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); ASSERT_EQ(1, d.response_started_count()) - << "request failed: " << r.status().status() - << ", error: " << r.status().error(); + << "request failed: " << r->status().status() + << ", error: " << r->status().error(); EXPECT_FALSE(d.received_data_before_response()); EXPECT_TRUE(d.data_received().empty()); @@ -4861,9 +4789,9 @@ TEST_F(URLRequestTestHTTP, PostFileTest) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.set_method("POST"); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->set_method("POST"); base::FilePath dir; PathService::Get(base::DIR_EXE, &dir); @@ -4883,11 +4811,11 @@ TEST_F(URLRequestTestHTTP, PostFileTest) { 0, kuint64max, base::Time())); - r.set_upload(make_scoped_ptr( + r->set_upload(make_scoped_ptr( new UploadDataStream(element_readers.Pass(), 0))); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -4898,8 +4826,8 @@ TEST_F(URLRequestTestHTTP, PostFileTest) { ASSERT_EQ(size, base::ReadFile(path, buf.get(), size)); ASSERT_EQ(1, d.response_started_count()) - << "request failed: " << r.status().status() - << ", error: " << r.status().error(); + << "request failed: " << r->status().status() + << ", error: " << r->status().error(); EXPECT_FALSE(d.received_data_before_response()); @@ -4913,9 +4841,9 @@ TEST_F(URLRequestTestHTTP, PostUnreadableFileTest) { TestDelegate d; { - URLRequest r(test_server_.GetURL("echo"), DEFAULT_PRIORITY, - &d, &default_context_); - r.set_method("POST"); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->set_method("POST"); ScopedVector<UploadElementReader> element_readers; @@ -4926,19 +4854,19 @@ TEST_F(URLRequestTestHTTP, PostUnreadableFileTest) { 0, kuint64max, base::Time())); - r.set_upload(make_scoped_ptr( + r->set_upload(make_scoped_ptr( new UploadDataStream(element_readers.Pass(), 0))); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(0, d.bytes_received()); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); - EXPECT_EQ(ERR_FILE_NOT_FOUND, r.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); + EXPECT_EQ(ERR_FILE_NOT_FOUND, r->status().error()); } } @@ -4947,17 +4875,17 @@ TEST_F(URLRequestTestHTTP, TestPostChunkedDataBeforeStart) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.EnableChunkedUpload(); - r.set_method("POST"); - AddChunksToUpload(&r); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->EnableChunkedUpload(); + r->set_method("POST"); + AddChunksToUpload(r.get()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - VerifyReceivedDataMatchesChunks(&r, &d); + VerifyReceivedDataMatchesChunks(r.get(), &d); } } @@ -4966,16 +4894,16 @@ TEST_F(URLRequestTestHTTP, TestPostChunkedDataJustAfterStart) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.EnableChunkedUpload(); - r.set_method("POST"); - r.Start(); - EXPECT_TRUE(r.is_pending()); - AddChunksToUpload(&r); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->EnableChunkedUpload(); + r->set_method("POST"); + r->Start(); + EXPECT_TRUE(r->is_pending()); + AddChunksToUpload(r.get()); base::RunLoop().Run(); - VerifyReceivedDataMatchesChunks(&r, &d); + VerifyReceivedDataMatchesChunks(r.get(), &d); } } @@ -4984,18 +4912,18 @@ TEST_F(URLRequestTestHTTP, TestPostChunkedDataAfterStart) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, &default_context_); - r.EnableChunkedUpload(); - r.set_method("POST"); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("echo"), DEFAULT_PRIORITY, &d, NULL)); + r->EnableChunkedUpload(); + r->set_method("POST"); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().RunUntilIdle(); - AddChunksToUpload(&r); + AddChunksToUpload(r.get()); base::RunLoop().Run(); - VerifyReceivedDataMatchesChunks(&r, &d); + VerifyReceivedDataMatchesChunks(r.get(), &d); } } @@ -5003,17 +4931,16 @@ TEST_F(URLRequestTestHTTP, ResponseHeadersTest) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("files/with-headers.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/with-headers.html"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); - const HttpResponseHeaders* headers = req.response_headers(); + const HttpResponseHeaders* headers = req->response_headers(); // Simple sanity check that response_info() accesses the same data. - EXPECT_EQ(headers, req.response_info().headers.get()); + EXPECT_EQ(headers, req->response_info().headers.get()); std::string header; EXPECT_TRUE(headers->GetNormalizedHeader("cache-control", &header)); @@ -5039,11 +4966,10 @@ TEST_F(URLRequestTestHTTP, ProcessSTS) { ASSERT_TRUE(https_test_server.Start()); TestDelegate d; - URLRequest request(https_test_server.GetURL("files/hsts-headers.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - request.Start(); + scoped_ptr<URLRequest> request(default_context_.CreateRequest( + https_test_server.GetURL("files/hsts-headers.html"), DEFAULT_PRIORITY, &d, + NULL)); + request->Start(); base::RunLoop().Run(); TransportSecurityState* security_state = @@ -5082,11 +5008,10 @@ TEST_F(URLRequestTestHTTP, MAYBE_ProcessPKP) { ASSERT_TRUE(https_test_server.Start()); TestDelegate d; - URLRequest request(https_test_server.GetURL("files/hpkp-headers.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - request.Start(); + scoped_ptr<URLRequest> request(default_context_.CreateRequest( + https_test_server.GetURL("files/hpkp-headers.html"), DEFAULT_PRIORITY, &d, + NULL)); + request->Start(); base::RunLoop().Run(); TransportSecurityState* security_state = @@ -5111,12 +5036,10 @@ TEST_F(URLRequestTestHTTP, ProcessSTSOnce) { ASSERT_TRUE(https_test_server.Start()); TestDelegate d; - URLRequest request( + scoped_ptr<URLRequest> request(default_context_.CreateRequest( https_test_server.GetURL("files/hsts-multiple-headers.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - request.Start(); + DEFAULT_PRIORITY, &d, NULL)); + request->Start(); base::RunLoop().Run(); // We should have set parameters from the first header, not the second. @@ -5140,12 +5063,10 @@ TEST_F(URLRequestTestHTTP, ProcessSTSAndPKP) { ASSERT_TRUE(https_test_server.Start()); TestDelegate d; - URLRequest request( + scoped_ptr<URLRequest> request(default_context_.CreateRequest( https_test_server.GetURL("files/hsts-and-hpkp-headers.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - request.Start(); + DEFAULT_PRIORITY, &d, NULL)); + request->Start(); base::RunLoop().Run(); // We should have set parameters from the first header, not the second. @@ -5181,12 +5102,10 @@ TEST_F(URLRequestTestHTTP, ProcessSTSAndPKP2) { ASSERT_TRUE(https_test_server.Start()); TestDelegate d; - URLRequest request( + scoped_ptr<URLRequest> request(default_context_.CreateRequest( https_test_server.GetURL("files/hsts-and-hpkp-headers2.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - request.Start(); + DEFAULT_PRIORITY, &d, NULL)); + request->Start(); base::RunLoop().Run(); TransportSecurityState* security_state = @@ -5211,21 +5130,20 @@ TEST_F(URLRequestTestHTTP, ContentTypeNormalizationTest) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("files/content-type-normalization.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/content-type-normalization.html"), + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); std::string mime_type; - req.GetMimeType(&mime_type); + req->GetMimeType(&mime_type); EXPECT_EQ("text/html", mime_type); std::string charset; - req.GetCharset(&charset); + req->GetCharset(&charset); EXPECT_EQ("utf-8", charset); - req.Cancel(); + req->Cancel(); } TEST_F(URLRequestTestHTTP, ProtocolHandlerAndFactoryRestrictDataRedirects) { @@ -5253,15 +5171,14 @@ TEST_F(URLRequestTestHTTP, RestrictFileRedirects) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("files/redirect-to-file.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-to-file.html"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_UNSAFE_REDIRECT, req->status().error()); } #endif // !defined(DISABLE_FILE_SUPPORT) @@ -5269,30 +5186,28 @@ TEST_F(URLRequestTestHTTP, RestrictDataRedirects) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("files/redirect-to-data.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-to-data.html"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::MessageLoop::current()->Run(); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_UNSAFE_REDIRECT, req->status().error()); } TEST_F(URLRequestTestHTTP, RedirectToInvalidURL) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("files/redirect-to-invalid-url.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-to-invalid-url.html"), + DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_INVALID_URL, req.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_INVALID_URL, req->status().error()); } // Make sure redirects are cached, despite not reading their bodies. @@ -5303,31 +5218,33 @@ TEST_F(URLRequestTestHTTP, CacheRedirect) { { TestDelegate d; - URLRequest req(redirect_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + redirect_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); EXPECT_EQ(1, d.received_redirect_count()); - EXPECT_EQ(test_server_.GetURL("echo"), req.url()); + EXPECT_EQ(test_server_.GetURL("echo"), req->url()); } { TestDelegate d; d.set_quit_on_redirect(true); - URLRequest req(redirect_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + redirect_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); EXPECT_EQ(0, d.response_started_count()); - EXPECT_TRUE(req.was_cached()); + EXPECT_TRUE(req->was_cached()); - req.FollowDeferredRedirect(); + req->FollowDeferredRedirect(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); EXPECT_EQ(1, d.response_started_count()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); - EXPECT_EQ(test_server_.GetURL("echo"), req.url()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); + EXPECT_EQ(test_server_.GetURL("echo"), req->url()); } } @@ -5345,24 +5262,26 @@ TEST_F(URLRequestTestHTTP, NoCacheOnNetworkDelegateRedirect) { redirect_to_url); TestDelegate d; - URLRequest req(initial_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + initial_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); EXPECT_EQ(1, d.received_redirect_count()); - EXPECT_EQ(redirect_to_url, req.url()); + EXPECT_EQ(redirect_to_url, req->url()); } { TestDelegate d; - URLRequest req(initial_url, DEFAULT_PRIORITY, &d, &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + initial_url, DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); - EXPECT_FALSE(req.was_cached()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); + EXPECT_FALSE(req->was_cached()); EXPECT_EQ(0, d.received_redirect_count()); - EXPECT_EQ(initial_url, req.url()); + EXPECT_EQ(initial_url, req->url()); } } @@ -5377,19 +5296,17 @@ TEST_F(URLRequestTestHTTP, UnsafeRedirectToWhitelistedUnsafeURL) { TestDelegate d; { - URLRequest r(test_server_.GetURL("whatever"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("whatever"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(unsafe_url, r.url()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(unsafe_url, r->url()); EXPECT_EQ("this-is-considered-an-unsafe-url", d.data_received()); } } @@ -5407,16 +5324,14 @@ TEST_F(URLRequestTestHTTP, UnsafeRedirectToDifferentUnsafeURL) { TestDelegate d; { - URLRequest r(test_server_.GetURL("whatever"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("whatever"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); - EXPECT_EQ(ERR_UNSAFE_REDIRECT, r.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); + EXPECT_EQ(ERR_UNSAFE_REDIRECT, r->status().error()); } } @@ -5434,16 +5349,17 @@ TEST_F(URLRequestTestHTTP, UnsafeRedirectWithDifferentReferenceFragment) { TestDelegate d; { - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(expected_url, r.url()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(expected_url, r->url()); } } @@ -5462,16 +5378,17 @@ TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragmentAndUnrelatedUnsafeUrl) { TestDelegate d; { - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(expected_redirect_url, r.url()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(expected_redirect_url, r->url()); } } @@ -5489,16 +5406,17 @@ TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragment) { TestDelegate d; { - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(redirect_url, r.url()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(redirect_url, r->url()); } } @@ -5511,32 +5429,31 @@ TEST_F(URLRequestTestHTTP, RedirectJobWithReferenceFragment) { GURL redirect_url(test_server_.GetURL("echo")); TestDelegate d; - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); URLRequestRedirectJob* job = new URLRequestRedirectJob( - &r, &default_network_delegate_, redirect_url, + r.get(), &default_network_delegate_, redirect_url, URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(job); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(redirect_url, r.url()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(redirect_url, r->url()); } TEST_F(URLRequestTestHTTP, NoUserPassInReferrer) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Referer"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetReferrer("http://user:pass@foo.com/"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Referer"), DEFAULT_PRIORITY, &d, NULL)); + req->SetReferrer("http://user:pass@foo.com/"); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("http://foo.com/"), d.data_received()); @@ -5546,12 +5463,10 @@ TEST_F(URLRequestTestHTTP, NoFragmentInReferrer) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Referer"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetReferrer("http://foo.com/test#fragment"); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Referer"), DEFAULT_PRIORITY, &d, NULL)); + req->SetReferrer("http://foo.com/test#fragment"); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("http://foo.com/test"), d.data_received()); @@ -5561,13 +5476,11 @@ TEST_F(URLRequestTestHTTP, EmptyReferrerAfterValidReferrer) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Referer"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.SetReferrer("http://foo.com/test#fragment"); - req.SetReferrer(""); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Referer"), DEFAULT_PRIORITY, &d, NULL)); + req->SetReferrer("http://foo.com/test#fragment"); + req->SetReferrer(""); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("None"), d.data_received()); @@ -5582,20 +5495,21 @@ TEST_F(URLRequestTestHTTP, DeferredBeforeNetworkStart) { { d.set_quit_on_network_start(true); GURL test_url(test_server_.GetURL("echo")); - URLRequest req(test_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_url, DEFAULT_PRIORITY, &d, NULL)); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_before_network_start_count()); EXPECT_EQ(0, d.response_started_count()); - req.ResumeNetworkStart(); + req->ResumeNetworkStart(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_NE(0, d.bytes_received()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); } } @@ -5608,23 +5522,22 @@ TEST_F(URLRequestTestHTTP, BeforeNetworkStartCalledOnce) { { d.set_quit_on_redirect(true); d.set_quit_on_network_start(true); - URLRequest req(test_server_.GetURL("server-redirect?echo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("server-redirect?echo"), DEFAULT_PRIORITY, &d, + NULL)); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_before_network_start_count()); EXPECT_EQ(0, d.response_started_count()); EXPECT_EQ(0, d.received_redirect_count()); - req.ResumeNetworkStart(); + req->ResumeNetworkStart(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); - req.FollowDeferredRedirect(); + req->FollowDeferredRedirect(); base::RunLoop().Run(); // Check that the redirect's new network transaction does not get propagated @@ -5633,7 +5546,7 @@ TEST_F(URLRequestTestHTTP, BeforeNetworkStartCalledOnce) { EXPECT_EQ(1, d.response_started_count()); EXPECT_NE(0, d.bytes_received()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); } } @@ -5645,20 +5558,21 @@ TEST_F(URLRequestTestHTTP, CancelOnBeforeNetworkStart) { { d.set_quit_on_network_start(true); GURL test_url(test_server_.GetURL("echo")); - URLRequest req(test_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_url, DEFAULT_PRIORITY, &d, NULL)); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_before_network_start_count()); EXPECT_EQ(0, d.response_started_count()); - req.Cancel(); + req->Cancel(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.bytes_received()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } } @@ -5668,17 +5582,16 @@ TEST_F(URLRequestTestHTTP, CancelRedirect) { TestDelegate d; { d.set_cancel_in_received_redirect(true); - URLRequest req(test_server_.GetURL("files/redirect-test.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-test.html"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.bytes_received()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } } @@ -5689,19 +5602,20 @@ TEST_F(URLRequestTestHTTP, DeferredRedirect) { { d.set_quit_on_redirect(true); GURL test_url(test_server_.GetURL("files/redirect-test.html")); - URLRequest req(test_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_url, DEFAULT_PRIORITY, &d, NULL)); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); - req.FollowDeferredRedirect(); + req->FollowDeferredRedirect(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); base::FilePath path; PathService::Get(base::DIR_SOURCE_ROOT, &path); @@ -5723,11 +5637,12 @@ TEST_F(URLRequestTestHTTP, DeferredRedirect_GetFullRequestHeaders) { { d.set_quit_on_redirect(true); GURL test_url(test_server_.GetURL("files/redirect-test.html")); - URLRequest req(test_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_url, DEFAULT_PRIORITY, &d, NULL)); EXPECT_FALSE(d.have_full_request_headers()); - req.Start(); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); @@ -5735,7 +5650,7 @@ TEST_F(URLRequestTestHTTP, DeferredRedirect_GetFullRequestHeaders) { CheckFullRequestHeaders(d.full_request_headers(), test_url); d.ClearFullRequestHeaders(); - req.FollowDeferredRedirect(); + req->FollowDeferredRedirect(); base::RunLoop().Run(); GURL target_url(test_server_.GetURL("files/with-headers.html")); @@ -5743,7 +5658,7 @@ TEST_F(URLRequestTestHTTP, DeferredRedirect_GetFullRequestHeaders) { EXPECT_TRUE(d.have_full_request_headers()); CheckFullRequestHeaders(d.full_request_headers(), target_url); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); + EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); base::FilePath path; PathService::Get(base::DIR_SOURCE_ROOT, &path); @@ -5764,22 +5679,21 @@ TEST_F(URLRequestTestHTTP, CancelDeferredRedirect) { TestDelegate d; { d.set_quit_on_redirect(true); - URLRequest req(test_server_.GetURL("files/redirect-test.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-test.html"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.received_redirect_count()); - req.Cancel(); + req->Cancel(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_EQ(0, d.bytes_received()); EXPECT_FALSE(d.received_data_before_response()); - EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); + EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); } } @@ -5789,58 +5703,55 @@ TEST_F(URLRequestTestHTTP, VaryHeader) { // Populate the cache. { TestDelegate d; - URLRequest req(test_server_.GetURL("echoheadercache?foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheadercache?foo"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader("foo", "1"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); LoadTimingInfo load_timing_info; - req.GetLoadTimingInfo(&load_timing_info); + req->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); } // Expect a cache hit. { TestDelegate d; - URLRequest req(test_server_.GetURL("echoheadercache?foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheadercache?foo"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader("foo", "1"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); - EXPECT_TRUE(req.was_cached()); + EXPECT_TRUE(req->was_cached()); LoadTimingInfo load_timing_info; - req.GetLoadTimingInfo(&load_timing_info); + req->GetLoadTimingInfo(&load_timing_info); TestLoadTimingCacheHitNoNetwork(load_timing_info); } // Expect a cache miss. { TestDelegate d; - URLRequest req(test_server_.GetURL("echoheadercache?foo"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheadercache?foo"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader("foo", "2"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); - EXPECT_FALSE(req.was_cached()); + EXPECT_FALSE(req->was_cached()); LoadTimingInfo load_timing_info; - req.GetLoadTimingInfo(&load_timing_info); + req->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); } } @@ -5853,11 +5764,9 @@ TEST_F(URLRequestTestHTTP, BasicAuth) { TestDelegate d; d.set_credentials(AuthCredentials(kUser, kSecret)); - URLRequest r(test_server_.GetURL("auth-basic"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); @@ -5871,19 +5780,17 @@ TEST_F(URLRequestTestHTTP, BasicAuth) { TestDelegate d; d.set_credentials(AuthCredentials(kUser, kSecret)); - URLRequest r(test_server_.GetURL("auth-basic"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.SetLoadFlags(LOAD_VALIDATE_CACHE); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, NULL)); + r->SetLoadFlags(LOAD_VALIDATE_CACHE); + r->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos); // Should be the same cached document. - EXPECT_TRUE(r.was_cached()); + EXPECT_TRUE(r->was_cached()); } } @@ -5906,8 +5813,9 @@ TEST_F(URLRequestTestHTTP, BasicAuthWithCookies) { TestDelegate d; d.set_credentials(AuthCredentials(kUser, kSecret)); - URLRequest r(url_requiring_auth, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url_requiring_auth, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); @@ -5935,8 +5843,9 @@ TEST_F(URLRequestTestHTTP, BasicAuthWithCookies) { replacements.SetPasswordStr(password); GURL url_with_identity = url_requiring_auth.ReplaceComponents(replacements); - URLRequest r(url_with_identity, DEFAULT_PRIORITY, &d, &context); - r.Start(); + scoped_ptr<URLRequest> r(context.CreateRequest( + url_with_identity, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); @@ -5957,11 +5866,9 @@ TEST_F(URLRequestTestHTTP, BasicAuthLoadTiming) { TestDelegate d; d.set_credentials(AuthCredentials(kUser, kSecret)); - URLRequest r(test_server_.GetURL("auth-basic"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); @@ -5974,7 +5881,7 @@ TEST_F(URLRequestTestHTTP, BasicAuthLoadTiming) { CONNECT_TIMING_HAS_DNS_TIMES); LoadTimingInfo load_timing_info; - r.GetLoadTimingInfo(&load_timing_info); + r->GetLoadTimingInfo(&load_timing_info); // The test server does not support keep alive sockets, so the second // request with auth should use a new socket. TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); @@ -5991,24 +5898,22 @@ TEST_F(URLRequestTestHTTP, BasicAuthLoadTiming) { TestDelegate d; d.set_credentials(AuthCredentials(kUser, kSecret)); - URLRequest r(test_server_.GetURL("auth-basic"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.SetLoadFlags(LOAD_VALIDATE_CACHE); - r.Start(); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("auth-basic"), DEFAULT_PRIORITY, &d, NULL)); + r->SetLoadFlags(LOAD_VALIDATE_CACHE); + r->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos); // Should be the same cached document. - EXPECT_TRUE(r.was_cached()); + EXPECT_TRUE(r->was_cached()); // Since there was a request that went over the wire, the load timing // information should include connection times. LoadTimingInfo load_timing_info; - r.GetLoadTimingInfo(&load_timing_info); + r->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES); } } @@ -6023,12 +5928,11 @@ TEST_F(URLRequestTestHTTP, Post302RedirectGet) { const char kData[] = "hello world"; TestDelegate d; - URLRequest req(test_server_.GetURL("files/redirect-to-echoall"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("POST"); - req.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("files/redirect-to-echoall"), DEFAULT_PRIORITY, &d, + NULL)); + req->set_method("POST"); + req->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); // Set headers (some of which are specific to the POST). HttpRequestHeaders headers; @@ -6041,12 +5945,12 @@ TEST_F(URLRequestTestHTTP, Post302RedirectGet) { "Accept-Charset: ISO-8859-1,*,utf-8\r\n" "Content-Length: 11\r\n" "Origin: http://localhost:1337/"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); std::string mime_type; - req.GetMimeType(&mime_type); + req->GetMimeType(&mime_type); EXPECT_EQ("text/html", mime_type); const std::string& data = d.data_received(); @@ -6125,14 +6029,15 @@ TEST_F(URLRequestTestHTTP, NoRedirectOn308WithoutLocationHeader) { TestDelegate d; const GURL url = test_server_.GetURL("files/308-without-location-header"); - URLRequest request(url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> request(default_context_.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); - request.Start(); + request->Start(); base::RunLoop().Run(); - EXPECT_EQ(URLRequestStatus::SUCCESS, request.status().status()); - EXPECT_EQ(OK, request.status().error()); + EXPECT_EQ(URLRequestStatus::SUCCESS, request->status().status()); + EXPECT_EQ(OK, request->status().error()); EXPECT_EQ(0, d.received_redirect_count()); - EXPECT_EQ(308, request.response_headers()->response_code()); + EXPECT_EQ(308, request->response_headers()->response_code()); EXPECT_EQ("This is not a redirect.", d.data_received()); } @@ -6144,16 +6049,17 @@ TEST_F(URLRequestTestHTTP, Redirect302PreserveReferenceFragment) { TestDelegate d; { - URLRequest r(original_url, DEFAULT_PRIORITY, &d, &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + original_url, DEFAULT_PRIORITY, &d, NULL)); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(original_url, r.original_url()); - EXPECT_EQ(expected_url, r.url()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(original_url, r->original_url()); + EXPECT_EQ(expected_url, r->url()); } } @@ -6165,16 +6071,17 @@ TEST_F(URLRequestTestHTTP, RedirectPreserveFirstPartyURL) { TestDelegate d; { - URLRequest r(url, DEFAULT_PRIORITY, &d, &default_context_); - r.set_first_party_for_cookies(first_party_url); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->set_first_party_for_cookies(first_party_url); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(first_party_url, r.first_party_for_cookies()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(first_party_url, r->first_party_for_cookies()); } } @@ -6187,18 +6094,19 @@ TEST_F(URLRequestTestHTTP, RedirectUpdateFirstPartyURL) { TestDelegate d; { - URLRequest r(url, DEFAULT_PRIORITY, &d, &default_context_); - r.set_first_party_for_cookies(original_first_party_url); - r.set_first_party_url_policy( + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->set_first_party_for_cookies(original_first_party_url); + r->set_first_party_url_policy( URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT); - r.Start(); + r->Start(); base::RunLoop().Run(); - EXPECT_EQ(2U, r.url_chain().size()); - EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); - EXPECT_EQ(OK, r.status().error()); - EXPECT_EQ(expected_first_party_url, r.first_party_for_cookies()); + EXPECT_EQ(2U, r->url_chain().size()); + EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); + EXPECT_EQ(OK, r->status().error()); + EXPECT_EQ(expected_first_party_url, r->first_party_for_cookies()); } } @@ -6208,25 +6116,23 @@ TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { const char kData[] = "hello world"; TestDelegate d; - URLRequest req(test_server_.GetURL("empty.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("POST"); - req.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("POST"); + req->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kContentLength, base::UintToString(arraysize(kData) - 1)); - req.SetExtraRequestHeaders(headers); + req->SetExtraRequestHeaders(headers); URLRequestRedirectJob* job = new URLRequestRedirectJob( - &req, &default_network_delegate_, test_server_.GetURL("echo"), + req.get(), &default_network_delegate_, test_server_.GetURL("echo"), URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(job); - req.Start(); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ("GET", req.method()); + EXPECT_EQ("GET", req->method()); } TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { @@ -6235,26 +6141,24 @@ TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { const char kData[] = "hello world"; TestDelegate d; - URLRequest req(test_server_.GetURL("empty.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.set_method("POST"); - req.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &d, NULL)); + req->set_method("POST"); + req->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kContentLength, base::UintToString(arraysize(kData) - 1)); - req.SetExtraRequestHeaders(headers); + req->SetExtraRequestHeaders(headers); URLRequestRedirectJob* job = new URLRequestRedirectJob( - &req, &default_network_delegate_, test_server_.GetURL("echo"), + req.get(), &default_network_delegate_, test_server_.GetURL("echo"), URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(job); - req.Start(); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ("POST", req.method()); + EXPECT_EQ("POST", req->method()); EXPECT_EQ(kData, d.data_received()); } @@ -6270,11 +6174,10 @@ TEST_F(URLRequestTestHTTP, DefaultAcceptLanguage) { context.Init(); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Language"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + test_server_.GetURL("echoheader?Accept-Language"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ("en", d.data_received()); } @@ -6294,11 +6197,10 @@ TEST_F(URLRequestTestHTTP, EmptyAcceptLanguage) { context.set_http_user_agent_settings(&settings); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Language"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + test_server_.GetURL("echoheader?Accept-Language"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ("None", d.data_received()); } @@ -6309,14 +6211,13 @@ TEST_F(URLRequestTestHTTP, OverrideAcceptLanguage) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Language"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Accept-Language"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kAcceptLanguage, "ru"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("ru"), d.data_received()); } @@ -6326,13 +6227,12 @@ TEST_F(URLRequestTestHTTP, DefaultAcceptEncoding) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Accept-Encoding"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(ContainsString(d.data_received(), "gzip")); } @@ -6343,14 +6243,13 @@ TEST_F(URLRequestTestHTTP, OverrideAcceptEncoding) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Accept-Encoding"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kAcceptEncoding, "identity"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); EXPECT_FALSE(ContainsString(d.data_received(), "gzip")); EXPECT_TRUE(ContainsString(d.data_received(), "identity")); @@ -6361,14 +6260,13 @@ TEST_F(URLRequestTestHTTP, SetAcceptCharset) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?Accept-Charset"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kAcceptCharset, "koi-8r"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("koi-8r"), d.data_received()); } @@ -6378,13 +6276,12 @@ TEST_F(URLRequestTestHTTP, DefaultUserAgent) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?User-Agent"), - DEFAULT_PRIORITY, - &d, - &default_context_); - req.Start(); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?User-Agent"), DEFAULT_PRIORITY, &d, + NULL)); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ(req.context()->http_user_agent_settings()->GetUserAgent(), + EXPECT_EQ(default_context_.http_user_agent_settings()->GetUserAgent(), d.data_received()); } @@ -6394,14 +6291,13 @@ TEST_F(URLRequestTestHTTP, OverrideUserAgent) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("echoheader?User-Agent"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("echoheader?User-Agent"), DEFAULT_PRIORITY, &d, + NULL)); HttpRequestHeaders headers; headers.SetHeader(HttpRequestHeaders::kUserAgent, "Lynx (textmode)"); - req.SetExtraRequestHeaders(headers); - req.Start(); + req->SetExtraRequestHeaders(headers); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(std::string("Lynx (textmode)"), d.data_received()); } @@ -6429,9 +6325,9 @@ TEST_F(URLRequestTestHTTP, EmptyHttpUserAgentSettings) { for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); i++) { TestDelegate d; - URLRequest req( - test_server_.GetURL(tests[i].request), DEFAULT_PRIORITY, &d, &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + test_server_.GetURL(tests[i].request), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_EQ(tests[i].expected_response, d.data_received()) << " Request = \"" << tests[i].request << "\""; @@ -6444,24 +6340,22 @@ TEST_F(URLRequestTestHTTP, SetSubsequentJobPriority) { ASSERT_TRUE(test_server_.Start()); TestDelegate d; - URLRequest req(test_server_.GetURL("empty.html"), - DEFAULT_PRIORITY, - &d, - &default_context_); - EXPECT_EQ(DEFAULT_PRIORITY, req.priority()); + scoped_ptr<URLRequest> req(default_context_.CreateRequest( + test_server_.GetURL("empty.html"), DEFAULT_PRIORITY, &d, NULL)); + EXPECT_EQ(DEFAULT_PRIORITY, req->priority()); scoped_refptr<URLRequestRedirectJob> redirect_job = new URLRequestRedirectJob( - &req, &default_network_delegate_, test_server_.GetURL("echo"), + req.get(), &default_network_delegate_, test_server_.GetURL("echo"), URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(redirect_job.get()); - req.SetPriority(LOW); - req.Start(); - EXPECT_TRUE(req.is_pending()); + req->SetPriority(LOW); + req->Start(); + EXPECT_TRUE(req->is_pending()); scoped_refptr<URLRequestTestJob> job = - new URLRequestTestJob(&req, &default_network_delegate_); + new URLRequestTestJob(req.get(), &default_network_delegate_); AddTestInterceptor()->set_main_intercept_job(job.get()); // Should trigger |job| to be started. @@ -6496,16 +6390,14 @@ TEST_F(URLRequestTestHTTP, NetworkSuspendTest) { context.Init(); TestDelegate d; - URLRequest req(GURL("http://127.0.0.1/"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + GURL("http://127.0.0.1/"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, req.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, req->status().error()); } // Check that creating a network request while entering/exiting suspend mode @@ -6531,16 +6423,14 @@ TEST_F(URLRequestTestHTTP, NetworkSuspendTestNoCache) { context.Init(); TestDelegate d; - URLRequest req(GURL("http://127.0.0.1/"), - DEFAULT_PRIORITY, - &d, - &context); - req.Start(); + scoped_ptr<URLRequest> req(context.CreateRequest( + GURL("http://127.0.0.1/"), DEFAULT_PRIORITY, &d, NULL)); + req->Start(); base::RunLoop().Run(); EXPECT_TRUE(d.request_failed()); - EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); - EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, req.status().error()); + EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); + EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, req->status().error()); } class HTTPSRequestTest : public testing::Test { @@ -6565,23 +6455,21 @@ TEST_F(HTTPSRequestTest, HTTPSGetTest) { TestDelegate d; { - URLRequest r(test_server.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_NE(0, d.bytes_received()); - CheckSSLInfo(r.ssl_info()); + CheckSSLInfo(r->ssl_info()); EXPECT_EQ(test_server.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); } } @@ -6599,13 +6487,11 @@ TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) { TestDelegate d; { d.set_allow_certificate_errors(err_allowed); - URLRequest r(test_server.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6614,7 +6500,7 @@ TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) { EXPECT_TRUE(d.have_certificate_errors()); if (err_allowed) { EXPECT_NE(0, d.bytes_received()); - CheckSSLInfo(r.ssl_info()); + CheckSSLInfo(r->ssl_info()); } else { EXPECT_EQ(0, d.bytes_received()); } @@ -6638,13 +6524,11 @@ TEST_F(HTTPSRequestTest, HTTPSExpiredTest) { TestDelegate d; { d.set_allow_certificate_errors(err_allowed); - URLRequest r(test_server.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6653,7 +6537,7 @@ TEST_F(HTTPSRequestTest, HTTPSExpiredTest) { EXPECT_TRUE(d.have_certificate_errors()); if (err_allowed) { EXPECT_NE(0, d.bytes_received()); - CheckSSLInfo(r.ssl_info()); + CheckSSLInfo(r->ssl_info()); } else { EXPECT_EQ(0, d.bytes_received()); } @@ -6688,14 +6572,13 @@ TEST_F(HTTPSRequestTest, HTTPSPreloadedHSTSTest) { context.Init(); TestDelegate d; - URLRequest r(GURL(base::StringPrintf("https://www.google.com:%d", - test_server.host_port_pair().port())), - DEFAULT_PRIORITY, - &d, - &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + GURL(base::StringPrintf("https://www.google.com:%d", + test_server.host_port_pair().port())), + DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6741,14 +6624,13 @@ TEST_F(HTTPSRequestTest, HTTPSErrorsNoClobberTSSTest) { "www.google.com", &dynamic_domain_state)); TestDelegate d; - URLRequest r(GURL(base::StringPrintf("https://www.google.com:%d", - test_server.host_port_pair().port())), - DEFAULT_PRIORITY, - &d, - &context); + scoped_ptr<URLRequest> r(context.CreateRequest( + GURL(base::StringPrintf("https://www.google.com:%d", + test_server.host_port_pair().port())), + DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6816,19 +6698,18 @@ TEST_F(HTTPSRequestTest, HSTSPreservesPosts) { // cause a certificate error. Ignore the error. d.set_allow_certificate_errors(true); - URLRequest req(GURL(base::StringPrintf("http://www.somewhere.com:%d/echo", - test_server.host_port_pair().port())), - DEFAULT_PRIORITY, - &d, - &context); - req.set_method("POST"); - req.set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); + scoped_ptr<URLRequest> req(context.CreateRequest( + GURL(base::StringPrintf("http://www.somewhere.com:%d/echo", + test_server.host_port_pair().port())), + DEFAULT_PRIORITY, &d, NULL)); + req->set_method("POST"); + req->set_upload(make_scoped_ptr(CreateSimpleUploadData(kData))); - req.Start(); + req->Start(); base::RunLoop().Run(); - EXPECT_EQ("https", req.url().scheme()); - EXPECT_EQ("POST", req.method()); + EXPECT_EQ("https", req->url().scheme()); + EXPECT_EQ("POST", req->method()); EXPECT_EQ(kData, d.data_received()); LoadTimingInfo load_timing_info; @@ -6874,13 +6755,11 @@ TEST_F(HTTPSRequestTest, ClientAuthTest) { SSLClientAuthTestDelegate d; { - URLRequest r(test_server.GetURL(std::string()), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6891,7 +6770,7 @@ TEST_F(HTTPSRequestTest, ClientAuthTest) { // Send no certificate. // TODO(davidben): Get temporary client cert import (with keys) working on // all platforms so we can test sending a cert as well. - r.ContinueWithCertificate(NULL); + r->ContinueWithCertificate(NULL); base::RunLoop().Run(); @@ -6916,13 +6795,11 @@ TEST_F(HTTPSRequestTest, ResumeTest) { { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6934,13 +6811,11 @@ TEST_F(HTTPSRequestTest, ResumeTest) { { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -6989,13 +6864,11 @@ TEST_F(HTTPSRequestTest, SSLSessionCacheShardTest) { { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -7023,13 +6896,11 @@ TEST_F(HTTPSRequestTest, SSLSessionCacheShardTest) { { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -7077,9 +6948,8 @@ class HTTPSFallbackTest : public testing::Test { base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); ASSERT_TRUE(test_server.Start()); - request_.reset(new URLRequest( - test_server.GetURL(std::string()), DEFAULT_PRIORITY, - &delegate_, &context_)); + request_ = context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &delegate_, NULL); request_->Start(); base::RunLoop().Run(); @@ -7254,13 +7124,11 @@ TEST_F(HTTPSSessionTest, DontResumeSessionsForInvalidCertificates) { cert_verifier_.set_default_result(ERR_CERT_DATE_INVALID); { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -7275,13 +7143,11 @@ TEST_F(HTTPSSessionTest, DontResumeSessionsForInvalidCertificates) { cert_verifier_.set_default_result(OK); { TestDelegate d; - URLRequest r(test_server.GetURL("ssl-session-cache"), - DEFAULT_PRIORITY, - &d, - &default_context_); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server.GetURL("ssl-session-cache"), DEFAULT_PRIORITY, &d, NULL)); - r.Start(); - EXPECT_TRUE(r.is_pending()); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); @@ -7402,14 +7268,14 @@ class HTTPSOCSPTest : public HTTPSRequestTest { TestDelegate d; d.set_allow_certificate_errors(true); - URLRequest r( - test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, &context_); - r.Start(); + scoped_ptr<URLRequest> r(context_.CreateRequest( + test_server.GetURL(std::string()), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); base::RunLoop().Run(); EXPECT_EQ(1, d.response_started_count()); - *out_cert_status = r.ssl_info().cert_status; + *out_cert_status = r->ssl_info().cert_status; } virtual ~HTTPSOCSPTest() { @@ -7858,15 +7724,16 @@ TEST_F(URLRequestTestFTP, UnsafePort) { TestDelegate d; { - URLRequest r(url, DEFAULT_PRIORITY, &d, &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + url, DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_FALSE(r.is_pending()); - EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); - EXPECT_EQ(ERR_UNSAFE_PORT, r.status().error()); + EXPECT_FALSE(r->is_pending()); + EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); + EXPECT_EQ(ERR_UNSAFE_PORT, r->status().error()); } } @@ -7876,21 +7743,21 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPDirectoryListing) { TestDelegate d; { - URLRequest r( - test_server_.GetURL("/"), DEFAULT_PRIORITY, &d, &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("/"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_LT(0, d.bytes_received()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); } } @@ -7903,26 +7770,24 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPGetTestAnonymous) { app_path = app_path.AppendASCII("LICENSE"); TestDelegate d; { - URLRequest r(test_server_.GetURL("/LICENSE"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("/LICENSE"), DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); } } @@ -7935,30 +7800,28 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPGetTest) { app_path = app_path.AppendASCII("LICENSE"); TestDelegate d; { - URLRequest r( + scoped_ptr<URLRequest> r(default_context_.CreateRequest( test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", "chrome"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(test_server_.host_port_pair().host(), - r.GetSocketAddress().host()); + r->GetSocketAddress().host()); EXPECT_EQ(test_server_.host_port_pair().port(), - r.GetSocketAddress().port()); + r->GetSocketAddress().port()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); LoadTimingInfo load_timing_info; - r.GetLoadTimingInfo(&load_timing_info); + r->GetLoadTimingInfo(&load_timing_info); TestLoadTimingNoHttpResponse(load_timing_info); } } @@ -7972,20 +7835,19 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongPassword) { app_path = app_path.AppendASCII("LICENSE"); TestDelegate d; { - URLRequest r(test_server_.GetURLWithUserAndPassword( - "/LICENSE", "chrome", "wrong_password"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", + "wrong_password"), + DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), 0); @@ -8004,20 +7866,19 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongPasswordRestart) { // the initial login with wrong credentials will fail. d.set_credentials(AuthCredentials(kChrome, kChrome)); { - URLRequest r(test_server_.GetURLWithUserAndPassword( - "/LICENSE", "chrome", "wrong_password"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", + "wrong_password"), + DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); @@ -8033,20 +7894,19 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongUser) { app_path = app_path.AppendASCII("LICENSE"); TestDelegate d; { - URLRequest r(test_server_.GetURLWithUserAndPassword( - "/LICENSE", "wrong_user", "chrome"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURLWithUserAndPassword("/LICENSE", "wrong_user", + "chrome"), + DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), 0); @@ -8065,20 +7925,19 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongUserRestart) { // the initial login with wrong credentials will fail. d.set_credentials(AuthCredentials(kChrome, kChrome)); { - URLRequest r(test_server_.GetURLWithUserAndPassword( - "/LICENSE", "wrong_user", "chrome"), - DEFAULT_PRIORITY, - &d, - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURLWithUserAndPassword("/LICENSE", "wrong_user", + "chrome"), + DEFAULT_PRIORITY, &d, NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d.response_started_count()); EXPECT_FALSE(d.received_data_before_response()); EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); @@ -8096,20 +7955,18 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCacheURLCredentials) { scoped_ptr<TestDelegate> d(new TestDelegate); { // Pass correct login identity in the URL. - URLRequest r( + scoped_ptr<URLRequest> r(default_context_.CreateRequest( test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", "chrome"), - DEFAULT_PRIORITY, - d.get(), - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + DEFAULT_PRIORITY, d.get(), NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d->response_started_count()); EXPECT_FALSE(d->received_data_before_response()); EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); @@ -8118,19 +7975,17 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCacheURLCredentials) { d.reset(new TestDelegate); { // This request should use cached identity from previous request. - URLRequest r(test_server_.GetURL("/LICENSE"), - DEFAULT_PRIORITY, - d.get(), - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("/LICENSE"), DEFAULT_PRIORITY, d.get(), NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d->response_started_count()); EXPECT_FALSE(d->received_data_before_response()); EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); @@ -8150,20 +8005,19 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCacheLoginBoxCredentials) { // the initial login with wrong credentials will fail. d->set_credentials(AuthCredentials(kChrome, kChrome)); { - URLRequest r(test_server_.GetURLWithUserAndPassword( - "/LICENSE", "chrome", "wrong_password"), - DEFAULT_PRIORITY, - d.get(), - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", + "wrong_password"), + DEFAULT_PRIORITY, d.get(), NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d->response_started_count()); EXPECT_FALSE(d->received_data_before_response()); EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); @@ -8175,19 +8029,17 @@ TEST_F(URLRequestTestFTP, DISABLED_FTPCacheLoginBoxCredentials) { { // Don't pass wrong credentials in the URL, they would override valid cached // ones. - URLRequest r(test_server_.GetURL("/LICENSE"), - DEFAULT_PRIORITY, - d.get(), - &default_context_); - r.Start(); - EXPECT_TRUE(r.is_pending()); + scoped_ptr<URLRequest> r(default_context_.CreateRequest( + test_server_.GetURL("/LICENSE"), DEFAULT_PRIORITY, d.get(), NULL)); + r->Start(); + EXPECT_TRUE(r->is_pending()); base::RunLoop().Run(); int64 file_size = 0; base::GetFileSize(app_path, &file_size); - EXPECT_FALSE(r.is_pending()); + EXPECT_FALSE(r->is_pending()); EXPECT_EQ(1, d->response_started_count()); EXPECT_FALSE(d->received_data_before_response()); EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc index c9513d7..b609632 100644 --- a/net/websockets/websocket_stream.cc +++ b/net/websockets/websocket_stream.cc @@ -86,7 +86,8 @@ class StreamRequestImpl : public WebSocketStreamRequest { scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate, scoped_ptr<WebSocketHandshakeStreamCreateHelper> create_helper) : delegate_(new Delegate(this)), - url_request_(url, DEFAULT_PRIORITY, delegate_.get(), context), + url_request_(context->CreateRequest(url, DEFAULT_PRIORITY, + delegate_.get(), NULL)), connect_delegate_(connect_delegate.Pass()), create_helper_(create_helper.release()) { create_helper_->set_failure_message(&failure_message_); @@ -96,15 +97,15 @@ class StreamRequestImpl : public WebSocketStreamRequest { headers.SetHeader(HttpRequestHeaders::kOrigin, origin.string()); headers.SetHeader(websockets::kSecWebSocketVersion, websockets::kSupportedVersion); - url_request_.SetExtraRequestHeaders(headers); + url_request_->SetExtraRequestHeaders(headers); // This passes the ownership of |create_helper_| to |url_request_|. - url_request_.SetUserData( + url_request_->SetUserData( WebSocketHandshakeStreamBase::CreateHelper::DataKey(), create_helper_); - url_request_.SetLoadFlags(LOAD_DISABLE_CACHE | - LOAD_BYPASS_CACHE | - LOAD_DO_NOT_PROMPT_FOR_LOGIN); + url_request_->SetLoadFlags(LOAD_DISABLE_CACHE | + LOAD_BYPASS_CACHE | + LOAD_DO_NOT_PROMPT_FOR_LOGIN); } // Destroying this object destroys the URLRequest, which cancels the request @@ -112,7 +113,7 @@ class StreamRequestImpl : public WebSocketStreamRequest { virtual ~StreamRequestImpl() {} void Start() { - url_request_.Start(); + url_request_->Start(); } void PerformUpgrade() { @@ -121,7 +122,7 @@ class StreamRequestImpl : public WebSocketStreamRequest { void ReportFailure() { if (failure_message_.empty()) { - switch (url_request_.status().status()) { + switch (url_request_->status().status()) { case URLRequestStatus::SUCCESS: case URLRequestStatus::IO_PENDING: break; @@ -131,7 +132,7 @@ class StreamRequestImpl : public WebSocketStreamRequest { case URLRequestStatus::FAILED: failure_message_ = std::string("Error in connection establishment: ") + - ErrorToString(url_request_.status().error()); + ErrorToString(url_request_->status().error()); break; } } @@ -144,9 +145,9 @@ class StreamRequestImpl : public WebSocketStreamRequest { void OnFinishOpeningHandshake() { WebSocketDispatchOnFinishOpeningHandshake(connect_delegate(), - url_request_.url(), - url_request_.response_headers(), - url_request_.response_time()); + url_request_->url(), + url_request_->response_headers(), + url_request_->response_time()); } WebSocketStream::ConnectDelegate* connect_delegate() const { @@ -160,7 +161,7 @@ class StreamRequestImpl : public WebSocketStreamRequest { // Deleting the StreamRequestImpl object deletes this URLRequest object, // cancelling the whole connection. - URLRequest url_request_; + scoped_ptr<URLRequest> url_request_; scoped_ptr<WebSocketStream::ConnectDelegate> connect_delegate_; |