diff options
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_request.cc | 8 | ||||
-rw-r--r-- | net/url_request/url_request_http_job.cc | 1 | ||||
-rw-r--r-- | net/url_request/url_request_test_util.cc | 14 | ||||
-rw-r--r-- | net/url_request/url_request_test_util.h | 7 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.cc | 4 |
5 files changed, 24 insertions, 10 deletions
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index 17e23a5..5c437c2 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -44,7 +44,8 @@ void StripPostSpecificHeaders(HttpRequestHeaders* headers) { } // This counter keeps track of the identifiers used for URL requests so far. -uint64 g_next_url_request_identifier = 0; +// 0 is reserved to represent an invalid ID. +uint64 g_next_url_request_identifier = 1; // This lock protects g_next_url_request_identifier. base::Lock g_next_url_request_identifier_lock; @@ -130,6 +131,9 @@ URLRequest::URLRequest(const GURL& url, Delegate* delegate) } URLRequest::~URLRequest() { + if (context_ && context_->network_delegate()) + context_->network_delegate()->NotifyURLRequestDestroyed(this); + if (before_request_callback_) before_request_callback_->Cancel(); @@ -362,7 +366,7 @@ void URLRequest::Start() { before_request_callback_ = new CancelableCompletionCallback<URLRequest>( this, &URLRequest::BeforeRequestComplete); if (context_->network_delegate()->NotifyBeforeURLRequest( - this, before_request_callback_)) { + this, before_request_callback_) == net::ERR_IO_PENDING) { before_request_callback_->AddRef(); // balanced in BeforeRequestComplete net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_EXTENSION, NULL); return; // paused diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 1a3e28e..b3eaa0c 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -764,6 +764,7 @@ void URLRequestHttpJob::Start() { request_info_.method = request_->method(); request_info_.load_flags = request_->load_flags(); request_info_.priority = request_->priority(); + request_info_.request_id = request_->identifier(); if (request_->context()) { request_info_.extra_headers.SetHeaderIfMissing( diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc index d13ee06..e3627c4 100644 --- a/net/url_request/url_request_test_util.cc +++ b/net/url_request/url_request_test_util.cc @@ -296,13 +296,16 @@ TestNetworkDelegate::TestNetworkDelegate() TestNetworkDelegate::~TestNetworkDelegate() {} -bool TestNetworkDelegate::OnBeforeURLRequest( +int TestNetworkDelegate::OnBeforeURLRequest( net::URLRequest* request, net::CompletionCallback* callback) { - return false; + return net::OK; } -void TestNetworkDelegate::OnSendHttpRequest( - net::HttpRequestHeaders* headers) { +int TestNetworkDelegate::OnBeforeSendHeaders( + uint64 request_id, + net::HttpRequestHeaders* headers, + net::CompletionCallback* callback) { + return net::OK; } void TestNetworkDelegate::OnResponseStarted(net::URLRequest* request) { @@ -320,6 +323,9 @@ void TestNetworkDelegate::OnReadCompleted(net::URLRequest* request, } } +void TestNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) { +} + net::URLRequestJob* TestNetworkDelegate::OnMaybeCreateURLRequestJob( net::URLRequest* request) { return NULL; diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h index 6dcd39d..789c82a 100644 --- a/net/url_request/url_request_test_util.h +++ b/net/url_request/url_request_test_util.h @@ -201,11 +201,14 @@ class TestNetworkDelegate : public net::NetworkDelegate { private: // net::NetworkDelegate: - virtual bool OnBeforeURLRequest(net::URLRequest* request, + virtual int OnBeforeURLRequest(net::URLRequest* request, + net::CompletionCallback* callback); + virtual int OnBeforeSendHeaders(uint64 request_id, + net::HttpRequestHeaders* headers, net::CompletionCallback* callback); - virtual void OnSendHttpRequest(net::HttpRequestHeaders* headers); virtual void OnResponseStarted(net::URLRequest* request); virtual void OnReadCompleted(net::URLRequest* request, int bytes_read); + virtual void OnURLRequestDestroyed(net::URLRequest* request); virtual net::URLRequestJob* OnMaybeCreateURLRequestJob( net::URLRequest* request); diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 4f454d0..d12bc8a 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -239,10 +239,10 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) { TestDelegate d; { + TestNetworkDelegate network_delegate; // must outlive URLRequest URLRequest r(GURL("https://www.redirect.com/"), &d); scoped_refptr<TestURLRequestContext> context( new TestURLRequestContext(test_server_.host_port_pair().ToString())); - TestNetworkDelegate network_delegate; context->set_network_delegate(&network_delegate); r.set_context(context); @@ -2403,13 +2403,13 @@ TEST_F(URLRequestTest, Identifiers) { // delegate. TEST_F(URLRequestTest, NetworkDelegateProxyError) { TestDelegate d; + TestNetworkDelegate network_delegate; TestURLRequest req(GURL("http://example.com"), &d); req.set_method("GET"); scoped_ptr<MockHostResolverBase> host_resolver( new MockHostResolver); host_resolver->rules()->AddSimulatedFailure("*"); - TestNetworkDelegate network_delegate; scoped_refptr<TestURLRequestContext> context( new TestURLRequestContext("myproxy:70", host_resolver.release())); context->set_network_delegate(&network_delegate); |