Index: net/url_request/url_request_redirect_job.cc |
diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc |
index 818d4c397ec5dee4a69c2116851eb283b5d71b70..33dc7c4210b8571c1929a8647e946befce6135ff 100644 |
--- a/net/url_request/url_request_redirect_job.cc |
+++ b/net/url_request/url_request_redirect_job.cc |
@@ -8,8 +8,10 @@ |
#include "base/compiler_specific.h" |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/strings/stringprintf.h" |
#include "net/base/load_timing_info.h" |
#include "net/base/net_log.h" |
+#include "net/http/http_response_headers.h" |
#include "net/url_request/url_request.h" |
namespace net { |
@@ -37,6 +39,10 @@ void URLRequestRedirectJob::Start() { |
weak_factory_.GetWeakPtr())); |
} |
+void URLRequestRedirectJob::GetResponseInfo(HttpResponseInfo* info) { |
+ info->headers = response_headers_; |
+} |
+ |
bool URLRequestRedirectJob::IsRedirectResponse(GURL* location, |
int* http_status_code) { |
*location = redirect_destination_; |
@@ -54,6 +60,11 @@ URLRequestRedirectJob::~URLRequestRedirectJob() {} |
void URLRequestRedirectJob::StartAsync() { |
receive_headers_end_ = base::TimeTicks::Now(); |
+ // Fake a set of response headers so downstream consumers can read the |
+ // response code. |
+ response_headers_ = new HttpResponseHeaders( |
+ base::StringPrintf("HTTP/1.1 %d %s\n", http_status_code_, |
+ redirect_reason_.c_str())); |
NotifyHeadersComplete(); |
} |