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

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

Issue 2653953005: PlzNavigate: transmit redirect info to the renderer side (Closed)
Patch Set: PlzNavigate: transmit redirect info to the renderer side Created 3 years, 10 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
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 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 // PlzNavigate: during navigations, the ResourceResponse has already been 708 // PlzNavigate: during navigations, the ResourceResponse has already been
709 // received on the browser side, and has been passed down to the renderer. 709 // received on the browser side, and has been passed down to the renderer.
710 if (stream_override_.get()) { 710 if (stream_override_.get()) {
711 CHECK(IsBrowserSideNavigationEnabled()); 711 CHECK(IsBrowserSideNavigationEnabled());
712 // Compute the delta between the response sizes so that the accurate 712 // Compute the delta between the response sizes so that the accurate
713 // transfer size can be reported at the end of the request. 713 // transfer size can be reported at the end of the request.
714 stream_override_->total_transfer_size_delta = 714 stream_override_->total_transfer_size_delta =
715 stream_override_->response.encoded_data_length - 715 stream_override_->response.encoded_data_length -
716 initial_info.encoded_data_length; 716 initial_info.encoded_data_length;
717 info = stream_override_->response; 717 info = stream_override_->response;
718
719 // Replay the redirects that happened during navigation.
720 DCHECK_EQ(stream_override_->redirect_responses.size(),
721 stream_override_->redirect_infos.size());
722 for (size_t i = 0; i < stream_override_->redirect_responses.size(); ++i) {
723 bool result = OnReceivedRedirect(stream_override_->redirect_infos[i],
724 stream_override_->redirect_responses[i]);
725 if (!result) {
726 NOTREACHED();
727 return;
728 }
729 }
718 } 730 }
719 731
720 WebURLResponse response; 732 WebURLResponse response;
721 GURL url(request_.url()); 733 GURL url(request_.url());
722 PopulateURLResponse(url, info, &response, request_.reportRawHeaders()); 734 PopulateURLResponse(url, info, &response, request_.reportRawHeaders());
723 735
724 if (stream_override_.get()) {
725 CHECK(IsBrowserSideNavigationEnabled());
726 DCHECK(stream_override_->redirect_responses.size() ==
727 stream_override_->redirects.size());
728 for (size_t i = 0; i < stream_override_->redirects.size(); ++i) {
729 WebURLResponse previous_response;
730 // TODO(arthursonzogni) Once Devtool is supported by PlzNavigate, the
731 // |report_raw_header| argument must be checked.
732 WebURLLoaderImpl::PopulateURLResponse(
733 stream_override_->redirects[i],
734 stream_override_->redirect_responses[i],
735 &previous_response,
736 request_.reportRawHeaders());
737 response.appendRedirectResponse(previous_response);
738 }
739 }
nasko 2017/02/10 23:53:09 Just to make sure I understand, the reason we don'
clamy 2017/02/13 14:29:37 Precisely.
740
741 bool show_raw_listing = false; 736 bool show_raw_listing = false;
742 if (info.mime_type == "text/vnd.chromium.ftp-dir") { 737 if (info.mime_type == "text/vnd.chromium.ftp-dir") {
743 if (url.query_piece() == "raw") { 738 if (url.query_piece() == "raw") {
744 // Set the MIME type to plain text to prevent any active content. 739 // Set the MIME type to plain text to prevent any active content.
745 response.setMIMEType("text/plain"); 740 response.setMIMEType("text/plain");
746 show_raw_listing = true; 741 show_raw_listing = true;
747 } else { 742 } else {
748 // We're going to produce a parsed listing in HTML. 743 // We're going to produce a parsed listing in HTML.
749 response.setMIMEType("text/html"); 744 response.setMIMEType("text/html");
750 } 745 }
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 1192
1198 new_request.setHTTPReferrer(WebString::fromUTF8(redirect_info.new_referrer), 1193 new_request.setHTTPReferrer(WebString::fromUTF8(redirect_info.new_referrer),
1199 NetReferrerPolicyToBlinkReferrerPolicy( 1194 NetReferrerPolicyToBlinkReferrerPolicy(
1200 redirect_info.new_referrer_policy)); 1195 redirect_info.new_referrer_policy));
1201 new_request.setPriority(request.getPriority()); 1196 new_request.setPriority(request.getPriority());
1202 1197
1203 std::string old_method = request.httpMethod().utf8(); 1198 std::string old_method = request.httpMethod().utf8();
1204 new_request.setHTTPMethod(WebString::fromUTF8(redirect_info.new_method)); 1199 new_request.setHTTPMethod(WebString::fromUTF8(redirect_info.new_method));
1205 if (redirect_info.new_method == old_method) 1200 if (redirect_info.new_method == old_method)
1206 new_request.setHTTPBody(request.httpBody()); 1201 new_request.setHTTPBody(request.httpBody());
1202
1203 new_request.setCheckForBrowserSideNavigation(
1204 request.checkForBrowserSideNavigation());
1205
1207 return new_request; 1206 return new_request;
1208 } 1207 }
1209 1208
1210 void WebURLLoaderImpl::loadSynchronously(const WebURLRequest& request, 1209 void WebURLLoaderImpl::loadSynchronously(const WebURLRequest& request,
1211 WebURLResponse& response, 1210 WebURLResponse& response,
1212 WebURLError& error, 1211 WebURLError& error,
1213 WebData& data, 1212 WebData& data,
1214 int64_t& encoded_data_length, 1213 int64_t& encoded_data_length,
1215 int64_t& encoded_body_length) { 1214 int64_t& encoded_body_length) {
1216 TRACE_EVENT0("loading", "WebURLLoaderImpl::loadSynchronously"); 1215 TRACE_EVENT0("loading", "WebURLLoaderImpl::loadSynchronously");
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 int intra_priority_value) { 1260 int intra_priority_value) {
1262 context_->DidChangePriority(new_priority, intra_priority_value); 1261 context_->DidChangePriority(new_priority, intra_priority_value);
1263 } 1262 }
1264 1263
1265 void WebURLLoaderImpl::setLoadingTaskRunner( 1264 void WebURLLoaderImpl::setLoadingTaskRunner(
1266 base::SingleThreadTaskRunner* loading_task_runner) { 1265 base::SingleThreadTaskRunner* loading_task_runner) {
1267 context_->SetTaskRunner(loading_task_runner); 1266 context_->SetTaskRunner(loading_task_runner);
1268 } 1267 }
1269 1268
1270 } // namespace content 1269 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698