Chromium Code Reviews| 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 10e497a2f5c08140afdae06fda2d0bee1838da8d..955a49c2e958484272fd7896de24912b26b723d1 100644 |
| --- a/mojo/services/network/url_loader_impl.cc |
| +++ b/mojo/services/network/url_loader_impl.cc |
| @@ -268,10 +268,10 @@ URLLoaderImpl::URLLoaderImpl(NetworkContext* context, |
| current_fetcher_id_(0), |
| binding_(this, request.Pass()) { |
| for (auto& interceptor : interceptors_) { |
| - interceptor.set_error_handler(this); |
| + interceptor.set_connection_error_handler([this]() { delete this; }); |
|
ppi
2015/07/16 12:35:54
Is this intentional change that we now `delete thi
ppi
2015/07/16 12:39:45
I'd suggest to make this fix separately for histor
qsr
2015/07/16 12:41:40
Done.
|
| } |
| interceptor_index_ = interceptors_.size() - 1; |
| - binding_.set_error_handler(this); |
| + binding_.set_connection_error_handler([this]() { OnConnectionError(); }); |
| context_->RegisterURLLoader(this); |
| } |
| @@ -336,12 +336,6 @@ void URLLoaderImpl::QueryStatus( |
| callback.Run(status.Pass()); |
| } |
| -void URLLoaderImpl::OnConnectionError() { |
| - binding_.Close(); |
| - if (body_fetchers_.empty()) |
| - delete this; |
| -} |
| - |
| void URLLoaderImpl::OnReceivedRedirect(net::URLRequest* url_request, |
| const net::RedirectInfo& redirect_info, |
| bool* defer_redirect) { |
| @@ -399,6 +393,12 @@ void URLLoaderImpl::OnReadCompleted(net::URLRequest* url_request, |
| DCHECK(false); |
| } |
| +void URLLoaderImpl::OnConnectionError() { |
| + binding_.Close(); |
| + if (body_fetchers_.empty()) |
| + delete this; |
| +} |
| + |
| void URLLoaderImpl::SendError( |
| int error_code, |
| const Callback<void(URLResponsePtr)>& callback) { |
| @@ -536,8 +536,13 @@ void URLLoaderImpl::StartInternal(URLRequestPtr request) { |
| url_request_->set_upload(make_scoped_ptr<net::UploadDataStream>( |
| new net::ElementsUploadDataStream(element_readers.Pass(), 0))); |
| } |
| + int load_flags = 0; |
| if (request->bypass_cache) |
| - url_request_->SetLoadFlags(net::LOAD_BYPASS_CACHE); |
| + load_flags |= net::LOAD_BYPASS_CACHE; |
| + if (request->only_from_cache) |
| + load_flags |= net::LOAD_ONLY_FROM_CACHE; |
| + if (load_flags) |
| + url_request_->SetLoadFlags(load_flags); |
| response_body_buffer_size_ = request->response_body_buffer_size; |
| auto_follow_redirects_ = request->auto_follow_redirects; |