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

Side by Side Diff: content/child/web_url_loader_impl.cc

Issue 2797443005: PlzNavigate data pipe
Patch Set: cleanup Created 3 years, 8 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 | « content/child/web_url_loader_impl.h ('k') | content/common/content_param_traits.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 "content/child/web_url_loader_impl.h" 5 #include "content/child/web_url_loader_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 (url.has_username() || url.has_password())) { 598 (url.has_username() || url.has_password())) {
599 resource_request->do_not_prompt_for_login = true; 599 resource_request->do_not_prompt_for_login = true;
600 } 600 }
601 resource_request->report_raw_headers = request.reportRawHeaders(); 601 resource_request->report_raw_headers = request.reportRawHeaders();
602 resource_request->previews_state = 602 resource_request->previews_state =
603 static_cast<PreviewsState>(request.getPreviewsState()); 603 static_cast<PreviewsState>(request.getPreviewsState());
604 604
605 // PlzNavigate: during navigation, the renderer should request a stream which 605 // PlzNavigate: during navigation, the renderer should request a stream which
606 // contains the body of the response. The network request has already been 606 // contains the body of the response. The network request has already been
607 // made by the browser. 607 // made by the browser.
608 mojo::ScopedDataPipeConsumerHandle consumer_handle;
608 if (stream_override_.get()) { 609 if (stream_override_.get()) {
609 CHECK(IsBrowserSideNavigationEnabled()); 610 CHECK(IsBrowserSideNavigationEnabled());
610 DCHECK(!sync_load_response); 611 DCHECK(!sync_load_response);
611 DCHECK_NE(WebURLRequest::FrameTypeNone, request.getFrameType()); 612 DCHECK_NE(WebURLRequest::FrameTypeNone, request.getFrameType());
612 resource_request->resource_body_stream_url = stream_override_->stream_url; 613 consumer_handle = std::move(stream_override_->consumer_handle);
613 } 614 }
614 615
615 const RequestExtraData empty_extra_data; 616 const RequestExtraData empty_extra_data;
616 const RequestExtraData* extra_data; 617 const RequestExtraData* extra_data;
617 if (request.getExtraData()) 618 if (request.getExtraData())
618 extra_data = static_cast<RequestExtraData*>(request.getExtraData()); 619 extra_data = static_cast<RequestExtraData*>(request.getExtraData());
619 else 620 else
620 extra_data = &empty_extra_data; 621 extra_data = &empty_extra_data;
621 extra_data->CopyToResourceRequest(resource_request.get()); 622 extra_data->CopyToResourceRequest(resource_request.get());
622 623
623 if (sync_load_response) { 624 if (sync_load_response) {
624 DCHECK(defers_loading_ == NOT_DEFERRING); 625 DCHECK(defers_loading_ == NOT_DEFERRING);
625 resource_dispatcher_->StartSync( 626 resource_dispatcher_->StartSync(
626 std::move(resource_request), request.requestorID(), sync_load_response, 627 std::move(resource_request), request.requestorID(), sync_load_response,
627 request.getLoadingIPCType(), url_loader_factory_); 628 request.getLoadingIPCType(), url_loader_factory_);
628 return; 629 return;
629 } 630 }
630 631
631 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Start", this, 632 TRACE_EVENT_WITH_FLOW0("loading", "WebURLLoaderImpl::Context::Start", this,
632 TRACE_EVENT_FLAG_FLOW_OUT); 633 TRACE_EVENT_FLAG_FLOW_OUT);
633 request_id_ = resource_dispatcher_->StartAsync( 634 request_id_ = resource_dispatcher_->StartAsync(
634 std::move(resource_request), request.requestorID(), task_runner_, 635 std::move(resource_request), request.requestorID(), task_runner_,
635 extra_data->frame_origin(), 636 extra_data->frame_origin(),
636 base::MakeUnique<WebURLLoaderImpl::RequestPeerImpl>(this), 637 base::MakeUnique<WebURLLoaderImpl::RequestPeerImpl>(this),
637 request.getLoadingIPCType(), url_loader_factory_); 638 request.getLoadingIPCType(), url_loader_factory_,
639 std::move(consumer_handle));
638 640
639 if (defers_loading_ != NOT_DEFERRING) 641 if (defers_loading_ != NOT_DEFERRING)
640 resource_dispatcher_->SetDefersLoading(request_id_, true); 642 resource_dispatcher_->SetDefersLoading(request_id_, true);
641 } 643 }
642 644
643 void WebURLLoaderImpl::Context::SetTaskRunner( 645 void WebURLLoaderImpl::Context::SetTaskRunner(
644 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { 646 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
645 task_runner_ = task_runner; 647 task_runner_ = task_runner;
646 } 648 }
647 649
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 client_->didDownloadData(len, encoded_data_length); 796 client_->didDownloadData(len, encoded_data_length);
795 } 797 }
796 798
797 void WebURLLoaderImpl::Context::OnReceivedData( 799 void WebURLLoaderImpl::Context::OnReceivedData(
798 std::unique_ptr<ReceivedData> data) { 800 std::unique_ptr<ReceivedData> data) {
799 const char* payload = data->payload(); 801 const char* payload = data->payload();
800 int data_length = data->length(); 802 int data_length = data->length();
801 if (!client_) 803 if (!client_)
802 return; 804 return;
803 805
806 if (stream_override_.get())
807 stream_override_->total_transferred += data_length;
808
804 TRACE_EVENT_WITH_FLOW0( 809 TRACE_EVENT_WITH_FLOW0(
805 "loading", "WebURLLoaderImpl::Context::OnReceivedData", 810 "loading", "WebURLLoaderImpl::Context::OnReceivedData",
806 this, TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT); 811 this, TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
807 812
808 if (ftp_listing_delegate_) { 813 if (ftp_listing_delegate_) {
809 // The FTP listing delegate will make the appropriate calls to 814 // The FTP listing delegate will make the appropriate calls to
810 // client_->didReceiveData and client_->didReceiveResponse. 815 // client_->didReceiveData and client_->didReceiveResponse.
811 ftp_listing_delegate_->OnReceivedData(payload, data_length); 816 ftp_listing_delegate_->OnReceivedData(payload, data_length);
812 } else { 817 } else {
813 // We dispatch the data even when |useStreamOnResponse()| is set, in order 818 // We dispatch the data even when |useStreamOnResponse()| is set, in order
(...skipping 22 matching lines...) Expand all
836 client_->didReceiveCachedMetadata(data, len); 841 client_->didReceiveCachedMetadata(data, len);
837 } 842 }
838 843
839 void WebURLLoaderImpl::Context::OnCompletedRequest( 844 void WebURLLoaderImpl::Context::OnCompletedRequest(
840 int error_code, 845 int error_code,
841 bool was_ignored_by_handler, 846 bool was_ignored_by_handler,
842 bool stale_copy_in_cache, 847 bool stale_copy_in_cache,
843 const base::TimeTicks& completion_time, 848 const base::TimeTicks& completion_time,
844 int64_t total_transfer_size, 849 int64_t total_transfer_size,
845 int64_t encoded_body_size) { 850 int64_t encoded_body_size) {
851 if (stream_override_.get()) {
852 // XXX This is wrong.
853 total_transfer_size = stream_override_->total_transferred;
854 encoded_body_size = stream_override_->total_transferred;
855 }
856
846 if (ftp_listing_delegate_) { 857 if (ftp_listing_delegate_) {
847 ftp_listing_delegate_->OnCompletedRequest(); 858 ftp_listing_delegate_->OnCompletedRequest();
848 ftp_listing_delegate_.reset(NULL); 859 ftp_listing_delegate_.reset(NULL);
849 } 860 }
850 861
851 if (body_stream_writer_ && error_code != net::OK) 862 if (body_stream_writer_ && error_code != net::OK)
852 body_stream_writer_->Fail(); 863 body_stream_writer_->Fail();
853 body_stream_writer_.reset(); 864 body_stream_writer_.reset();
854 865
855 if (client_) { 866 if (client_) {
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 int intra_priority_value) { 1260 int intra_priority_value) {
1250 context_->DidChangePriority(new_priority, intra_priority_value); 1261 context_->DidChangePriority(new_priority, intra_priority_value);
1251 } 1262 }
1252 1263
1253 void WebURLLoaderImpl::setLoadingTaskRunner( 1264 void WebURLLoaderImpl::setLoadingTaskRunner(
1254 base::SingleThreadTaskRunner* loading_task_runner) { 1265 base::SingleThreadTaskRunner* loading_task_runner) {
1255 context_->SetTaskRunner(loading_task_runner); 1266 context_->SetTaskRunner(loading_task_runner);
1256 } 1267 }
1257 1268
1258 } // namespace content 1269 } // namespace content
OLDNEW
« no previous file with comments | « content/child/web_url_loader_impl.h ('k') | content/common/content_param_traits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698