Commit 7a45923e authored by Yutaka Hirano's avatar Yutaka Hirano Committed by Commit Bot

Unflake SecurityExploitBrowserTest.Invalid[Blocked]RequestId

CreateLoaderAndStart used in TryCreateDuplicateRequestIds created
network::mojom::URLLoaderPtr and network::TestURLLoaderClient in it and
hence the request got aborted. That will lead to flakiness because on
a slow system the first request got aborted before the second request
arrives. This CL fixes that.

Bug: 799516
Change-Id: I4767d7f98185e633f229315074a9361b14e47e3b
Reviewed-on: https://chromium-review.googlesource.com/1125581Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572517}
parent 2d6620f0
......@@ -184,28 +184,44 @@ class SecurityExploitBrowserTest : public ContentBrowserTest {
static void CreateLoaderAndStartOnIOThread(
scoped_refptr<ResourceMessageFilter> filter,
network::mojom::URLLoaderRequest request,
int route_id,
int request_id,
const network::ResourceRequest& request) {
network::mojom::URLLoaderPtr loader;
network::TestURLLoaderClient client;
const network::ResourceRequest& resource_request,
network::mojom::URLLoaderClientPtrInfo client) {
filter->CreateLoaderAndStart(
mojo::MakeRequest(&loader), route_id, request_id,
network::mojom::kURLLoadOptionNone, request,
client.CreateInterfacePtr(),
std::move(request), route_id, request_id,
network::mojom::kURLLoadOptionNone, resource_request,
network::mojom::URLLoaderClientPtr(std::move(client)),
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
}
static void CreateLoaderAndStart(RenderProcessHost* process,
static void CreateLoaderAndStart(
RenderProcessHost* process,
int route_id,
int request_id,
const network::ResourceRequest& request) {
const network::ResourceRequest& resource_request) {
network::mojom::URLLoaderPtr loader;
network::TestURLLoaderClient client;
CreateLoaderAndStart(process, mojo::MakeRequest(&loader), route_id,
request_id, resource_request,
client.CreateInterfacePtr().PassInterface());
}
static void CreateLoaderAndStart(
RenderProcessHost* process,
network::mojom::URLLoaderRequest request,
int route_id,
int request_id,
const network::ResourceRequest& resource_request,
network::mojom::URLLoaderClientPtrInfo client) {
RenderProcessHostImpl* impl = static_cast<RenderProcessHostImpl*>(process);
auto filter = impl->resource_message_filter_;
process->GetChannel()->ipc_task_runner()->PostTask(
FROM_HERE, base::BindOnce(CreateLoaderAndStartOnIOThread, filter,
route_id, request_id, request));
std::move(request), route_id, request_id,
resource_request, std::move(client)));
}
void TryCreateDuplicateRequestIds(Shell* shell, bool block_loaders) {
......@@ -227,11 +243,16 @@ class SecurityExploitBrowserTest : public ContentBrowserTest {
// Use the same request id twice.
RenderProcessHostKillWaiter kill_waiter(rfh->GetProcess());
CreateLoaderAndStart(rfh->GetProcess(), rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, request);
CreateLoaderAndStart(rfh->GetProcess(), rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, request);
// We need to keep loader and client to keep the requests alive.
network::mojom::URLLoaderPtr loader1, loader2;
network::TestURLLoaderClient client1, client2;
CreateLoaderAndStart(rfh->GetProcess(), mojo::MakeRequest(&loader1),
rfh->GetRoutingID(), kRequestIdNotPreviouslyUsed,
request, client1.CreateInterfacePtr().PassInterface());
CreateLoaderAndStart(rfh->GetProcess(), mojo::MakeRequest(&loader2),
rfh->GetRoutingID(), kRequestIdNotPreviouslyUsed,
request, client2.CreateInterfacePtr().PassInterface());
EXPECT_EQ(bad_message::RDH_INVALID_REQUEST_ID, kill_waiter.Wait());
}
......
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