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; |