Commit b121559f authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

[M82]Bug-Fix: Support redirect in renderer when OOB-CORS is disabled.

This CL fixes the redirect bug that crrev.com/c/2059889 introduced.
It removed body copy at redirect in renderer but when OOB-CORS is
disabled, we still need body.

third_party\blink\web_tests>
$ python.exe ..\tools\run_web_tests.py
--additional-driver-flag=--disable-features=OutOfBlinkCors
external/wpt/xhr/event-upload-progress-crossorigin.any.html
..

Fixed: 1059776
Test: 
Change-Id: I9516719c1e18d8cedcf4e621d8ab3e0157d10844
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2096161Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749057}
parent 8f0d5cde
......@@ -471,6 +471,8 @@ void ResourceLoader::Start() {
request.IsolatedWorldOrigin().get(),
GetCorsFlag() ? CorsFlag::Set : CorsFlag::Unset);
}
if (!RuntimeEnabledFeatures::OutOfBlinkCorsEnabled())
request_body_for_reidirect_ = request.HttpBody();
if (request.IsAutomaticUpgrade()) {
mojo::PendingRemote<ukm::mojom::UkmRecorderInterface> pending_recorder;
......@@ -698,8 +700,12 @@ bool ResourceLoader::WillFollowRedirect(
resource_->LastResourceRequest().CreateRedirectRequest(
new_url, new_method, new_site_for_cookies, new_referrer,
new_referrer_policy,
!passed_redirect_response.WasFetchedViaServiceWorker());
if (!RuntimeEnabledFeatures::OutOfBlinkCorsEnabled() &&
(new_request->HttpMethod() != http_names::kGET &&
new_request->HttpMethod() != http_names::kHEAD)) {
new_request->SetHttpBody(request_body_for_reidirect_);
}
ResourceType resource_type = resource_->GetType();
......@@ -816,7 +822,8 @@ bool ResourceLoader::WillFollowRedirect(
// TODO(yoichio): Have PrepareRequest use ResourceRequestHead.
Context().PrepareRequest(*new_request, resource_->Options().initiator_info,
unused_virtual_time_pauser, resource_->GetType());
DCHECK(!new_request->HttpBody());
if (RuntimeEnabledFeatures::OutOfBlinkCorsEnabled())
DCHECK(!new_request->HttpBody());
if (auto* observer = fetcher_->GetResourceLoadObserver()) {
observer->WillSendRequest(resource_->InspectorId(), *new_request,
redirect_response_to_pass, resource_->GetType(),
......
......@@ -210,6 +210,8 @@ class PLATFORM_EXPORT ResourceLoader final
Member<ResourceFetcher> fetcher_;
Member<ResourceLoadScheduler> scheduler_;
Member<Resource> resource_;
// This flag is only needed when OOB-CORS is disabled.
scoped_refptr<EncodedFormData> request_body_for_reidirect_;
Member<ResponseBodyLoader> response_body_loader_;
Member<DataPipeBytesConsumer::CompletionNotifier>
data_pipe_completion_notifier_;
......
......@@ -75,15 +75,3 @@ crbug.com/958524 http/tests/inspector-protocol/network/xhr-post-replay-cors.js [
# Added by https://chromium-review.googlesource.com/c/chromium/src/+/2054468 and
# Blink CORS does not support.
crbug.com/941297 http/tests/inspector-protocol/network/xhr-cors-preflight-redirect-failure.js [ Timeout ]
# Started failing for unknown reasons. Bisect is needed before the next branch-cut.
crbug.com/1059776 external/wpt/xhr/event-upload-progress-crossorigin.any.html [ Failure ]
crbug.com/1059776 external/wpt/xhr/event-upload-progress-crossorigin.any.worker.html [ Failure ]
crbug.com/1059776 external/wpt/xhr/event-upload-progress.any.html [ Failure ]
crbug.com/1059776 external/wpt/xhr/event-upload-progress.any.worker.html [ Failure ]
crbug.com/1059776 external/wpt/xhr/send-redirect-to-cors.htm [ Failure ]
crbug.com/1059776 virtual/omt-worker-fetch/external/wpt/xhr/event-upload-progress-crossorigin.any.html [ Failure ]
crbug.com/1059776 virtual/omt-worker-fetch/external/wpt/xhr/event-upload-progress-crossorigin.any.worker.html [ Failure ]
crbug.com/1059776 virtual/omt-worker-fetch/external/wpt/xhr/event-upload-progress.any.html [ Failure ]
crbug.com/1059776 virtual/omt-worker-fetch/external/wpt/xhr/event-upload-progress.any.worker.html [ Failure ]
crbug.com/1059776 virtual/omt-worker-fetch/external/wpt/xhr/send-redirect-to-cors.htm [ Failure ]
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment