summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 01:47:09 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 01:47:09 +0000
commit7983c4a3847fb4da96e5ffc2e36b90f911b59521 (patch)
tree8438a501a03635a4b47c2f1245b877bb9a8751b1
parentb7e30e51704755b7f8a26521234c3410bc319f26 (diff)
downloadchromium_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.cc3
-rw-r--r--net/base/net_log_event_type_list.h10
-rw-r--r--net/url_request/url_request.cc2
-rw-r--r--net/url_request/url_request_http_job.cc2
-rw-r--r--net/url_request/url_request_redirect_job.cc14
-rw-r--r--net/url_request/url_request_redirect_job.h9
-rw-r--r--net/url_request/url_request_unittest.cc7
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);