| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |