diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 22:31:51 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 22:31:51 +0000 |
commit | 4875ba17099e50f482ec826fc38e7922096b7be2 (patch) | |
tree | 7bb5ec4498187f7c9673ada84c54aca1c0cdd6e5 /net/url_request | |
parent | b04f6c6aea3ffd3a03368b67abacc1f36d2f8ce8 (diff) | |
download | chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.zip chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.tar.gz chromium_src-4875ba17099e50f482ec826fc38e7922096b7be2.tar.bz2 |
Add request_id to HttpRequestInfo and pass it to the NetworkDelegate for events.
This lets us look up the request associated with an http transaction and
send event details for the webRequest.onBeforeRequest extension event.
I also hooked up the onBeforeRequest event for HTTP network and cache transactions so that they are separate from other requests. This lets us have the request header information.
BUG=60101
TEST=no
Review URL: http://codereview.chromium.org/6698009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79905 0039d316-1c4b-4281-b951-d872f2087c98
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); |