Index: mojo/services/network/url_loader_impl.cc |
diff --git a/mojo/services/network/url_loader_impl.cc b/mojo/services/network/url_loader_impl.cc |
index c31c502dceacd91d4a171caaad789a1ad04d41c7..7ce2d52ff45f6060b3517d31ebb84e9bb0f2c447 100644 |
--- a/mojo/services/network/url_loader_impl.cc |
+++ b/mojo/services/network/url_loader_impl.cc |
@@ -4,6 +4,7 @@ |
#include "mojo/services/network/url_loader_impl.h" |
+#include "mojo/common/common_type_converters.h" |
#include "mojo/services/network/network_context.h" |
#include "net/base/io_buffer.h" |
#include "net/base/load_flags.h" |
@@ -93,6 +94,7 @@ class URLLoaderImpl::DependentIOBuffer : public net::WrappedIOBuffer { |
URLLoaderImpl::URLLoaderImpl(NetworkContext* context) |
: context_(context), |
+ auto_follow_redirects_(true), |
weak_ptr_factory_(this) { |
} |
@@ -126,13 +128,29 @@ void URLLoaderImpl::Start(URLRequestPtr request, |
net::DEFAULT_PRIORITY, |
this, |
context_->url_request_context())); |
+ url_request_->set_method(request->method); |
+ if (request->headers) { |
+ net::HttpRequestHeaders headers; |
+ for (size_t i = 0; i < request->headers.size(); ++i) |
+ headers.AddHeaderFromString(request->headers[i].To<base::StringPiece>()); |
+ url_request_->SetExtraRequestHeaders(headers); |
+ } |
if (request->bypass_cache) |
url_request_->SetLoadFlags(net::LOAD_BYPASS_CACHE); |
+ // TODO(darin): Handle request body. |
+ |
+ auto_follow_redirects_ = request->auto_follow_redirects; |
+ |
url_request_->Start(); |
} |
void URLLoaderImpl::FollowRedirect() { |
- NOTIMPLEMENTED(); |
+ if (auto_follow_redirects_) { |
+ DLOG(ERROR) << "Spurious call to FollowRedirect"; |
+ } else { |
+ if (url_request_) |
+ url_request_->FollowDeferredRedirect(); |
+ } |
} |
void URLLoaderImpl::OnReceivedRedirect(net::URLRequest* url_request, |
@@ -148,7 +166,7 @@ void URLLoaderImpl::OnReceivedRedirect(net::URLRequest* url_request, |
client()->OnReceivedRedirect( |
response.Pass(), new_url.spec(), redirect_method); |
- *defer_redirect = false; |
+ *defer_redirect = !auto_follow_redirects_; |
} |
void URLLoaderImpl::OnResponseStarted(net::URLRequest* url_request) { |