Commit fecf1538 authored by Arthur Sonzogni's avatar Arthur Sonzogni Committed by Commit Bot

In tests, always send response's body data pipe, even if empty.

After sending:
  URLLoaderClient::OnReceiveResponse(response_head),
not all URLLoader are sending:
  URLLoaderClient::OnStartLoadingResponseBody(response_body).

It even happens to send URLLoaderClient::OnComplete(net::OK) after that,
which may confuse the URLLoaderClient.

Most URLLoader not sending a response's body datapipe are the one
with an empty response. For consistency, always send a response's
body datapipe, even if it doesn't contains data.

This CL updates every tests not aligned with this.

Once every URLLoader and tests are consistent. DCHECK enforcing this
will be added.

This CL is a prerequisite for:
https://chromium-review.googlesource.com/c/chromium/src/+/1172290

Bug: 826868, 831155
Change-Id: Id3434ea442c93b47bd200d15322cc21cd0c0b89f
Reviewed-on: https://chromium-review.googlesource.com/c/1323092Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606386}
parent f78cde33
......@@ -1561,6 +1561,8 @@ bool InterceptURLLoad(content::URLLoaderInterceptor::RequestParams* params) {
load_timing.push_end = base::TimeTicks::Now();
params->client->OnReceiveResponse(response);
mojo::DataPipe pipe; // The response's body is empty. The pipe is not filled.
params->client->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
params->client->OnComplete(network::URLLoaderCompletionStatus());
return true;
}
......
......@@ -228,6 +228,9 @@ class SecurityIndicatorTest : public InProcessBrowserTest {
resource_response.mime_type = "text/html";
resource_response.ssl_info = ssl_info;
params->client->OnReceiveResponse(resource_response);
// Send an empty response's body. This pipe is not filled with data.
mojo::DataPipe pipe;
params->client->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
network::URLLoaderCompletionStatus completion_status;
completion_status.ssl_info = ssl_info;
params->client->OnComplete(completion_status);
......
......@@ -395,6 +395,10 @@ class CompletionTimeConversionTest : public ResourceDispatcherTest {
base::Time() + base::TimeDelta::FromSeconds(99);
client->OnReceiveResponse(response_head);
mojo::DataPipe pipe;
client->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
pipe.producer_handle.reset(); // The response is empty.
network::URLLoaderCompletionStatus status;
status.completion_time = completion_time;
......
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