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

Side by Side Diff: mojo/services/network/url_loader_impl.cc

Issue 1227373002: Roll mojo SDK to 734c6e1652ff2f3b696e441722838f453f4f9b42 (Closed) Base URL: https://github.com/domokit/monet.git@master
Patch Set: Follow review Created 5 years, 5 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 unified diff | Download patch
« no previous file with comments | « mojo/services/network/url_loader_impl.h ('k') | mojo/services/network/web_socket_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/services/network/url_loader_impl.h" 5 #include "mojo/services/network/url_loader_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 URLLoaderImpl::URLLoaderImpl(NetworkContext* context, 261 URLLoaderImpl::URLLoaderImpl(NetworkContext* context,
262 InterfaceRequest<URLLoader> request, 262 InterfaceRequest<URLLoader> request,
263 std::vector<URLLoaderInterceptorPtr> interceptors) 263 std::vector<URLLoaderInterceptorPtr> interceptors)
264 : context_(context), 264 : context_(context),
265 interceptors_(std::move(interceptors)), 265 interceptors_(std::move(interceptors)),
266 response_body_buffer_size_(0), 266 response_body_buffer_size_(0),
267 auto_follow_redirects_(true), 267 auto_follow_redirects_(true),
268 current_fetcher_id_(0), 268 current_fetcher_id_(0),
269 binding_(this, request.Pass()) { 269 binding_(this, request.Pass()) {
270 for (auto& interceptor : interceptors_) { 270 for (auto& interceptor : interceptors_) {
271 interceptor.set_error_handler(this); 271 interceptor.set_connection_error_handler([this]() { OnConnectionError(); });
272 } 272 }
273 interceptor_index_ = interceptors_.size() - 1; 273 interceptor_index_ = interceptors_.size() - 1;
274 binding_.set_error_handler(this); 274 binding_.set_connection_error_handler([this]() { OnConnectionError(); });
275 context_->RegisterURLLoader(this); 275 context_->RegisterURLLoader(this);
276 } 276 }
277 277
278 URLLoaderImpl::~URLLoaderImpl() { 278 URLLoaderImpl::~URLLoaderImpl() {
279 context_->DeregisterURLLoader(this); 279 context_->DeregisterURLLoader(this);
280 } 280 }
281 281
282 void URLLoaderImpl::Cleanup() { 282 void URLLoaderImpl::Cleanup() {
283 // The associated network context is going away and we have to destroy 283 // The associated network context is going away and we have to destroy
284 // net::URLRequest hold by this loader. 284 // net::URLRequest hold by this loader.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 status = last_status_.Clone(); 329 status = last_status_.Clone();
330 } else { 330 } else {
331 // No network request has been made yet. 331 // No network request has been made yet.
332 status->is_loading = false; 332 status->is_loading = false;
333 } 333 }
334 } 334 }
335 // TODO(darin): Populate more status fields. 335 // TODO(darin): Populate more status fields.
336 callback.Run(status.Pass()); 336 callback.Run(status.Pass());
337 } 337 }
338 338
339 void URLLoaderImpl::OnConnectionError() {
340 binding_.Close();
341 if (body_fetchers_.empty())
342 delete this;
343 }
344
345 void URLLoaderImpl::OnReceivedRedirect(net::URLRequest* url_request, 339 void URLLoaderImpl::OnReceivedRedirect(net::URLRequest* url_request,
346 const net::RedirectInfo& redirect_info, 340 const net::RedirectInfo& redirect_info,
347 bool* defer_redirect) { 341 bool* defer_redirect) {
348 DCHECK(url_request == url_request_.get()); 342 DCHECK(url_request == url_request_.get());
349 DCHECK(url_request->status().is_success()); 343 DCHECK(url_request->status().is_success());
350 DCHECK(!redirect_info_); 344 DCHECK(!redirect_info_);
351 345
352 if (auto_follow_redirects_) 346 if (auto_follow_redirects_)
353 return; 347 return;
354 348
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 body_fetchers_.push_back(std::move(body_fetcher)); 386 body_fetchers_.push_back(std::move(body_fetcher));
393 body_fetchers_.back()->Start(); 387 body_fetchers_.back()->Start();
394 } 388 }
395 389
396 void URLLoaderImpl::OnReadCompleted(net::URLRequest* url_request, 390 void URLLoaderImpl::OnReadCompleted(net::URLRequest* url_request,
397 int bytes_read) { 391 int bytes_read) {
398 // This should never be called on this object. 392 // This should never be called on this object.
399 DCHECK(false); 393 DCHECK(false);
400 } 394 }
401 395
396 void URLLoaderImpl::OnConnectionError() {
397 binding_.Close();
398 if (body_fetchers_.empty())
399 delete this;
400 }
401
402 void URLLoaderImpl::SendError( 402 void URLLoaderImpl::SendError(
403 int error_code, 403 int error_code,
404 const Callback<void(URLResponsePtr)>& callback) { 404 const Callback<void(URLResponsePtr)>& callback) {
405 URLResponsePtr response(URLResponse::New()); 405 URLResponsePtr response(URLResponse::New());
406 if (url_request_) 406 if (url_request_)
407 response->url = String::From(url_request_->url()); 407 response->url = String::From(url_request_->url());
408 response->error = MakeNetworkError(error_code); 408 response->error = MakeNetworkError(error_code);
409 callback.Run(response.Pass()); 409 callback.Run(response.Pass());
410 } 410 }
411 411
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 } 529 }
530 if (request->body) { 530 if (request->body) {
531 ScopedVector<net::UploadElementReader> element_readers; 531 ScopedVector<net::UploadElementReader> element_readers;
532 for (size_t i = 0; i < request->body.size(); ++i) { 532 for (size_t i = 0; i < request->body.size(); ++i) {
533 element_readers.push_back( 533 element_readers.push_back(
534 new UploadDataPipeElementReader(request->body[i].Pass())); 534 new UploadDataPipeElementReader(request->body[i].Pass()));
535 } 535 }
536 url_request_->set_upload(make_scoped_ptr<net::UploadDataStream>( 536 url_request_->set_upload(make_scoped_ptr<net::UploadDataStream>(
537 new net::ElementsUploadDataStream(element_readers.Pass(), 0))); 537 new net::ElementsUploadDataStream(element_readers.Pass(), 0)));
538 } 538 }
539 int load_flags = 0;
539 if (request->bypass_cache) 540 if (request->bypass_cache)
540 url_request_->SetLoadFlags(net::LOAD_BYPASS_CACHE); 541 load_flags |= net::LOAD_BYPASS_CACHE;
542 if (request->only_from_cache)
543 load_flags |= net::LOAD_ONLY_FROM_CACHE;
544 if (load_flags)
545 url_request_->SetLoadFlags(load_flags);
541 546
542 response_body_buffer_size_ = request->response_body_buffer_size; 547 response_body_buffer_size_ = request->response_body_buffer_size;
543 auto_follow_redirects_ = request->auto_follow_redirects; 548 auto_follow_redirects_ = request->auto_follow_redirects;
544 549
545 url_request_->Start(); 550 url_request_->Start();
546 } 551 }
547 552
548 void URLLoaderImpl::SendResponse(URLResponsePtr response) { 553 void URLLoaderImpl::SendResponse(URLResponsePtr response) {
549 if (interceptor_index_ >= 0 && 554 if (interceptor_index_ >= 0 &&
550 interceptor_index_ < static_cast<int>(interceptors_.size())) { 555 interceptor_index_ < static_cast<int>(interceptors_.size())) {
(...skipping 20 matching lines...) Expand all
571 if ((*it)->id() == current_fetcher_id_) { 576 if ((*it)->id() == current_fetcher_id_) {
572 last_status_ = fetcher->QueryStatus(); 577 last_status_ = fetcher->QueryStatus();
573 last_status_->is_loading = false; 578 last_status_->is_loading = false;
574 } 579 }
575 body_fetchers_.erase(it); 580 body_fetchers_.erase(it);
576 if (body_fetchers_.empty() and !binding_.is_bound()) 581 if (body_fetchers_.empty() and !binding_.is_bound())
577 delete this; 582 delete this;
578 } 583 }
579 584
580 } // namespace mojo 585 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/network/url_loader_impl.h ('k') | mojo/services/network/web_socket_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698