Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / net / url_request / url_request_redirect_job.cc
index 6454e36..818d4c3 100644 (file)
@@ -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,
@@ -34,6 +44,12 @@ bool URLRequestRedirectJob::IsRedirectResponse(GURL* location,
   return true;
 }
 
+bool URLRequestRedirectJob::CopyFragmentOnRedirect(const GURL& location) const {
+  // The instantiators have full control over the desired redirection target,
+  // including the reference fragment part of the URL.
+  return false;
+}
+
 URLRequestRedirectJob::~URLRequestRedirectJob() {}
 
 void URLRequestRedirectJob::StartAsync() {