diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 01:47:09 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-12 01:47:09 +0000 |
commit | 7983c4a3847fb4da96e5ffc2e36b90f911b59521 (patch) | |
tree | 8438a501a03635a4b47c2f1245b877bb9a8751b1 | |
parent | b7e30e51704755b7f8a26521234c3410bc319f26 (diff) | |
download | chromium_src-7983c4a3847fb4da96e5ffc2e36b90f911b59521.zip chromium_src-7983c4a3847fb4da96e5ffc2e36b90f911b59521.tar.gz chromium_src-7983c4a3847fb4da96e5ffc2e36b90f911b59521.tar.bz2 |
Add logging of reason for URLRequestRedirectJobs,
so it's possible to tell if a request came from HSTS,
an extension, or the protocol handler registry, for
easier debugging.
BUG=350912
Review URL: https://codereview.chromium.org/192823003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256389 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/custom_handlers/protocol_handler_registry.cc | 3 | ||||
-rw-r--r-- | net/base/net_log_event_type_list.h | 10 | ||||
-rw-r--r-- | net/url_request/url_request.cc | 2 | ||||
-rw-r--r-- | net/url_request/url_request_http_job.cc | 2 | ||||
-rw-r--r-- | net/url_request/url_request_redirect_job.cc | 14 | ||||
-rw-r--r-- | net/url_request/url_request_redirect_job.h | 9 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.cc | 7 |
7 files changed, 35 insertions, 12 deletions
diff --git a/chrome/browser/custom_handlers/protocol_handler_registry.cc b/chrome/browser/custom_handlers/protocol_handler_registry.cc index dbeda49..333f3e5 100644 --- a/chrome/browser/custom_handlers/protocol_handler_registry.cc +++ b/chrome/browser/custom_handlers/protocol_handler_registry.cc @@ -151,7 +151,8 @@ net::URLRequestJob* ProtocolHandlerRegistry::IOThreadDelegate::MaybeCreateJob( return new net::URLRequestRedirectJob( request, network_delegate, translated_url, - net::URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); + net::URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, + "Protocol Handler Registry"); } // JobInterceptorFactory ------------------------------------------------------- diff --git a/net/base/net_log_event_type_list.h b/net/base/net_log_event_type_list.h index 7a2853b..072091f 100644 --- a/net/base/net_log_event_type_list.h +++ b/net/base/net_log_event_type_list.h @@ -781,13 +781,19 @@ EVENT_TYPE(URL_REQUEST_JOB_BYTES_READ) EVENT_TYPE(URL_REQUEST_JOB_FILTERED_BYTES_READ) // This event is sent when the priority of a net::URLRequest is -// changed after it has started. The parameters attached to this event -// are: +// changed after it has started. The following parameters are attached: // { // "priority": <Numerical value of the priority (higher is more important)>, // } EVENT_TYPE(URL_REQUEST_SET_PRIORITY) +EVENT_TYPE(URL_REQUEST_REDIRECT_JOB) +// This event is logged when a URLRequestRedirectJob is started for a request. +// The following parameters are attached: +// { +// "reason": <Reason for the redirect, as a string>, +// } + // ------------------------------------------------------------------------ // HttpCache // ------------------------------------------------------------------------ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc index 58697a2..531e8e8 100644 --- a/net/url_request/url_request.cc +++ b/net/url_request/url_request.cc @@ -667,7 +667,7 @@ void URLRequest::BeforeRequestComplete(int error) { URLRequestRedirectJob* job = new URLRequestRedirectJob( this, network_delegate_, new_url, // Use status code 307 to preserve the method, so POST requests work. - URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); + URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Delegate"); StartJob(job); } else { StartJob(URLRequestJobManager::GetInstance()->CreateJob( diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 3bedc3d..82ef633 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -149,7 +149,7 @@ URLRequestJob* URLRequestHttpJob::Factory(URLRequest* request, return new URLRequestRedirectJob( request, network_delegate, redirect_url, // Use status code 307 to preserve the method, so POST requests work. - URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); + URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "HSTS"); } return new URLRequestHttpJob(request, network_delegate, diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc index 6454e36..c9d30ae 100644 --- a/net/url_request/url_request_redirect_job.cc +++ b/net/url_request/url_request_redirect_job.cc @@ -6,21 +6,31 @@ #include "base/bind.h" #include "base/compiler_specific.h" +#include "base/logging.h" #include "base/message_loop/message_loop.h" #include "net/base/load_timing_info.h" +#include "net/base/net_log.h" +#include "net/url_request/url_request.h" namespace net { URLRequestRedirectJob::URLRequestRedirectJob(URLRequest* request, NetworkDelegate* network_delegate, const GURL& redirect_destination, - StatusCode http_status_code) + StatusCode http_status_code, + const std::string& redirect_reason) : URLRequestJob(request, network_delegate), redirect_destination_(redirect_destination), http_status_code_(http_status_code), - weak_factory_(this) {} + redirect_reason_(redirect_reason), + weak_factory_(this) { + DCHECK(!redirect_reason_.empty()); +} void URLRequestRedirectJob::Start() { + request()->net_log().AddEvent( + NetLog::TYPE_URL_REQUEST_REDIRECT_JOB, + NetLog::StringCallback("reason", &redirect_reason_)); base::MessageLoop::current()->PostTask( FROM_HERE, base::Bind(&URLRequestRedirectJob::StartAsync, diff --git a/net/url_request/url_request_redirect_job.h b/net/url_request/url_request_redirect_job.h index 1c18a7f..8321477 100644 --- a/net/url_request/url_request_redirect_job.h +++ b/net/url_request/url_request_redirect_job.h @@ -5,6 +5,8 @@ #ifndef NET_URL_REQUEST_URL_REQUEST_REDIRECT_JOB_H_ #define NET_URL_REQUEST_URL_REQUEST_REDIRECT_JOB_H_ +#include <string> + #include "base/memory/weak_ptr.h" #include "net/base/net_export.h" #include "net/url_request/url_request_job.h" @@ -27,11 +29,13 @@ class NET_EXPORT URLRequestRedirectJob : public URLRequestJob { REDIRECT_307_TEMPORARY_REDIRECT = 307, }; - // Constructs a job that redirects to the specified URL. + // Constructs a job that redirects to the specified URL. |redirect_reason| is + // logged for debugging purposes, and must not be an empty string. URLRequestRedirectJob(URLRequest* request, NetworkDelegate* network_delegate, const GURL& redirect_destination, - StatusCode http_status_code); + StatusCode http_status_code, + const std::string& redirect_reason); virtual void Start() OVERRIDE; virtual bool IsRedirectResponse(GURL* location, @@ -48,6 +52,7 @@ class NET_EXPORT URLRequestRedirectJob : public URLRequestJob { const GURL redirect_destination_; const int http_status_code_; base::TimeTicks receive_headers_end_; + std::string redirect_reason_; base::WeakPtrFactory<URLRequestRedirectJob> weak_factory_; }; diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 3ef7b1b..497b831 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -5761,7 +5761,7 @@ TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { URLRequestRedirectJob* job = new URLRequestRedirectJob( &req, &default_network_delegate_, test_server_.GetURL("echo"), - URLRequestRedirectJob::REDIRECT_302_FOUND); + URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(job); req.Start(); @@ -5788,7 +5788,8 @@ TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { URLRequestRedirectJob* job = new URLRequestRedirectJob( &req, &default_network_delegate_, test_server_.GetURL("echo"), - URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); + URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, + "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(job); req.Start(); @@ -5992,7 +5993,7 @@ TEST_F(URLRequestTestHTTP, SetSubsequentJobPriority) { scoped_refptr<URLRequestRedirectJob> redirect_job = new URLRequestRedirectJob( &req, &default_network_delegate_, test_server_.GetURL("echo"), - URLRequestRedirectJob::REDIRECT_302_FOUND); + URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"); AddTestInterceptor()->set_main_intercept_job(redirect_job.get()); req.SetPriority(LOW); |