Index: content/child/web_url_loader_impl.cc |
diff --git a/content/child/web_url_loader_impl.cc b/content/child/web_url_loader_impl.cc |
index 17da0e103519d484dec9df5c4376e17e589aa2f0..3059d6ac549842c61d54a864712218ff053cb762 100644 |
--- a/content/child/web_url_loader_impl.cc |
+++ b/content/child/web_url_loader_impl.cc |
@@ -294,6 +294,9 @@ void SetSecurityStyleAndDetails(const GURL& url, |
} // namespace |
+StreamOverrideParameters::StreamOverrideParameters() {} |
+StreamOverrideParameters::~StreamOverrideParameters() {} |
+ |
// This inner class exists since the WebURLLoader may be deleted while inside a |
// call to WebURLLoaderClient. Refcounting is to keep the context from being |
// deleted if it may have work to do after calling into the client. |
@@ -598,8 +601,7 @@ bool WebURLLoaderImpl::Context::OnReceivedRedirect( |
: blink::WebURLRequest::SkipServiceWorker::All, |
&new_request); |
- client_->willFollowRedirect(loader_, new_request, response, |
- info.encoded_data_length); |
+ client_->willFollowRedirect(loader_, new_request, response); |
request_ = new_request; |
// Only follow the redirect if WebKit left the URL unmodified. |
@@ -640,6 +642,23 @@ void WebURLLoaderImpl::Context::OnReceivedResponse( |
PopulateURLResponse(request_.url(), info, &response, |
request_.reportRawHeaders()); |
+ if (stream_override_.get()) { |
+ CHECK(IsBrowserSideNavigationEnabled()); |
+ DCHECK(stream_override_->redirect_responses.size() == |
+ stream_override_->redirects.size()); |
+ for (size_t i = 0; i < stream_override_->redirects.size(); ++i) { |
+ WebURLResponse previous_response; |
+ // TODO(arthursonzogni) Once Devtool is supported by PlzNavigate, the |
+ // |report_raw_header| argument must be checked. |
+ WebURLLoaderImpl::PopulateURLResponse( |
+ stream_override_->redirects[i], |
+ stream_override_->redirect_responses[i], |
+ &previous_response, |
+ request_.reportRawHeaders()); |
+ response.appendRedirectResponse(previous_response); |
+ } |
+ } |
+ |
bool show_raw_listing = (GURL(request_.url()).query() == "raw"); |
if (info.mime_type == "text/vnd.chromium.ftp-dir") { |
@@ -978,6 +997,7 @@ void WebURLLoaderImpl::PopulateURLResponse(const GURL& url, |
info.cors_exposed_header_names.end(), cors_exposed_header_names.begin(), |
[](const std::string& h) { return blink::WebString::fromLatin1(h); }); |
response->setCorsExposedHeaderNames(cors_exposed_header_names); |
+ response->addToEncodedDataLength(info.encoded_data_length); |
SetSecurityStyleAndDetails(url, info, response, report_security_info); |