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

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

Issue 2653953005: PlzNavigate: transmit redirect info to the renderer side (Closed)
Patch Set: Rebase + addressed comments 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
« no previous file with comments | « content/child/web_url_loader_impl.h ('k') | content/common/frame_messages.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 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 // PlzNavigate: during navigations, the ResourceResponse has already been 703 // PlzNavigate: during navigations, the ResourceResponse has already been
704 // received on the browser side, and has been passed down to the renderer. 704 // received on the browser side, and has been passed down to the renderer.
705 if (stream_override_.get()) { 705 if (stream_override_.get()) {
706 CHECK(IsBrowserSideNavigationEnabled()); 706 CHECK(IsBrowserSideNavigationEnabled());
707 // Compute the delta between the response sizes so that the accurate 707 // Compute the delta between the response sizes so that the accurate
708 // transfer size can be reported at the end of the request. 708 // transfer size can be reported at the end of the request.
709 stream_override_->total_transfer_size_delta = 709 stream_override_->total_transfer_size_delta =
710 stream_override_->response.encoded_data_length - 710 stream_override_->response.encoded_data_length -
711 initial_info.encoded_data_length; 711 initial_info.encoded_data_length;
712 info = stream_override_->response; 712 info = stream_override_->response;
713
714 // Replay the redirects that happened during navigation.
715 DCHECK_EQ(stream_override_->redirect_responses.size(),
716 stream_override_->redirect_infos.size());
717 for (size_t i = 0; i < stream_override_->redirect_responses.size(); ++i) {
718 bool result = OnReceivedRedirect(stream_override_->redirect_infos[i],
719 stream_override_->redirect_responses[i]);
720 if (!result) {
721 NOTREACHED();
722 return;
723 }
724 }
713 } 725 }
714 726
715 WebURLResponse response; 727 WebURLResponse response;
716 GURL url(request_.url()); 728 GURL url(request_.url());
717 PopulateURLResponse(url, info, &response, request_.reportRawHeaders()); 729 PopulateURLResponse(url, info, &response, request_.reportRawHeaders());
718 730
719 if (stream_override_.get()) {
720 CHECK(IsBrowserSideNavigationEnabled());
721 DCHECK(stream_override_->redirect_responses.size() ==
722 stream_override_->redirects.size());
723 for (size_t i = 0; i < stream_override_->redirects.size(); ++i) {
724 WebURLResponse previous_response;
725 // TODO(arthursonzogni) Once Devtool is supported by PlzNavigate, the
726 // |report_raw_header| argument must be checked.
727 WebURLLoaderImpl::PopulateURLResponse(
728 stream_override_->redirects[i],
729 stream_override_->redirect_responses[i],
730 &previous_response,
731 request_.reportRawHeaders());
732 response.appendRedirectResponse(previous_response);
733 }
734 }
735
736 bool show_raw_listing = false; 731 bool show_raw_listing = false;
737 if (info.mime_type == "text/vnd.chromium.ftp-dir") { 732 if (info.mime_type == "text/vnd.chromium.ftp-dir") {
738 if (url.query_piece() == "raw") { 733 if (url.query_piece() == "raw") {
739 // Set the MIME type to plain text to prevent any active content. 734 // Set the MIME type to plain text to prevent any active content.
740 response.setMIMEType("text/plain"); 735 response.setMIMEType("text/plain");
741 show_raw_listing = true; 736 show_raw_listing = true;
742 } else { 737 } else {
743 // We're going to produce a parsed listing in HTML. 738 // We're going to produce a parsed listing in HTML.
744 response.setMIMEType("text/html"); 739 response.setMIMEType("text/html");
745 } 740 }
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
1184 1179
1185 new_request.setHTTPReferrer(WebString::fromUTF8(redirect_info.new_referrer), 1180 new_request.setHTTPReferrer(WebString::fromUTF8(redirect_info.new_referrer),
1186 NetReferrerPolicyToBlinkReferrerPolicy( 1181 NetReferrerPolicyToBlinkReferrerPolicy(
1187 redirect_info.new_referrer_policy)); 1182 redirect_info.new_referrer_policy));
1188 new_request.setPriority(request.getPriority()); 1183 new_request.setPriority(request.getPriority());
1189 1184
1190 std::string old_method = request.httpMethod().utf8(); 1185 std::string old_method = request.httpMethod().utf8();
1191 new_request.setHTTPMethod(WebString::fromUTF8(redirect_info.new_method)); 1186 new_request.setHTTPMethod(WebString::fromUTF8(redirect_info.new_method));
1192 if (redirect_info.new_method == old_method) 1187 if (redirect_info.new_method == old_method)
1193 new_request.setHTTPBody(request.httpBody()); 1188 new_request.setHTTPBody(request.httpBody());
1189
1190 new_request.setCheckForBrowserSideNavigation(
1191 request.checkForBrowserSideNavigation());
1192
1194 return new_request; 1193 return new_request;
1195 } 1194 }
1196 1195
1197 void WebURLLoaderImpl::loadSynchronously(const WebURLRequest& request, 1196 void WebURLLoaderImpl::loadSynchronously(const WebURLRequest& request,
1198 WebURLResponse& response, 1197 WebURLResponse& response,
1199 WebURLError& error, 1198 WebURLError& error,
1200 WebData& data, 1199 WebData& data,
1201 int64_t& encoded_data_length, 1200 int64_t& encoded_data_length,
1202 int64_t& encoded_body_length) { 1201 int64_t& encoded_body_length) {
1203 TRACE_EVENT0("loading", "WebURLLoaderImpl::loadSynchronously"); 1202 TRACE_EVENT0("loading", "WebURLLoaderImpl::loadSynchronously");
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 int intra_priority_value) { 1247 int intra_priority_value) {
1249 context_->DidChangePriority(new_priority, intra_priority_value); 1248 context_->DidChangePriority(new_priority, intra_priority_value);
1250 } 1249 }
1251 1250
1252 void WebURLLoaderImpl::setLoadingTaskRunner( 1251 void WebURLLoaderImpl::setLoadingTaskRunner(
1253 base::SingleThreadTaskRunner* loading_task_runner) { 1252 base::SingleThreadTaskRunner* loading_task_runner) {
1254 context_->SetTaskRunner(loading_task_runner); 1253 context_->SetTaskRunner(loading_task_runner);
1255 } 1254 }
1256 1255
1257 } // namespace content 1256 } // namespace content
OLDNEW
« no previous file with comments | « content/child/web_url_loader_impl.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698