Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Unified Diff: mojo/services/network/url_loader_impl.cc

Issue 324023002: Mojo: cleanup redirect handling for network service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/services/network/url_loader_impl.h ('k') | mojo/services/public/interfaces/network/url_loader.mojom » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « mojo/services/network/url_loader_impl.h ('k') | mojo/services/public/interfaces/network/url_loader.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698