summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
Diffstat (limited to 'net/url_request')
-rw-r--r--net/url_request/url_request.cc8
-rw-r--r--net/url_request/url_request_http_job.cc1
-rw-r--r--net/url_request/url_request_test_util.cc14
-rw-r--r--net/url_request/url_request_test_util.h7
-rw-r--r--net/url_request/url_request_unittest.cc4
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);