Commit 9a77d962 authored by Matt Falkenhagen's avatar Matt Falkenhagen Committed by Commit Bot

service worker: Make the request for the main script go through throttles.

This enables the variations header to be added to the request, and other
modifications by the embedder. Basically it looks like any network
request should go through throttles.

Bug: 923247
Change-Id: I7cb2d3a7edfff866487814884e0b44f4000dbca5
Reviewed-on: https://chromium-review.googlesource.com/c/1424098
Commit-Queue: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarJosh Karlin <jkarlin@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625102}
parent 233c7717
...@@ -471,14 +471,7 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, ServiceWorkerScript) { ...@@ -471,14 +471,7 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, ServiceWorkerScript) {
RegisterServiceWorker(worker_path); RegisterServiceWorker(worker_path);
// Test that the header is present on the main script request. // Test that the header is present on the main script request.
GURL worker_url = GetGoogleUrl(worker_path); EXPECT_TRUE(HasReceivedHeader(GetGoogleUrl(worker_path), "X-Client-Data"));
if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
// TODO(https://crbug.com/923247): Fix Network Service so the header is
// present.
EXPECT_FALSE(HasReceivedHeader(worker_url, "X-Client-Data"));
} else {
EXPECT_TRUE(HasReceivedHeader(worker_url, "X-Client-Data"));
}
// And on import script requests to Google. // And on import script requests to Google.
EXPECT_TRUE(HasReceivedHeader(GetGoogleUrl("/service_worker/empty.js"), EXPECT_TRUE(HasReceivedHeader(GetGoogleUrl("/service_worker/empty.js"),
......
...@@ -107,15 +107,29 @@ class WebServiceWorkerNetworkProviderImpl ...@@ -107,15 +107,29 @@ class WebServiceWorkerNetworkProviderImpl
: provider_id_(provider_id), : provider_id_(provider_id),
script_loader_factory_(std::move(script_loader_factory_info)) {} script_loader_factory_(std::move(script_loader_factory_info)) {}
// Blink calls this method for each request starting with the main script, // This is only called for the main script request from the shadow page.
// we tag them with the provider id. // TODO(https://crbug.com/538751): Remove this once the shadow page is
// removed.
void WillSendRequest(WebURLRequest& request) override { void WillSendRequest(WebURLRequest& request) override {
ResourceType resource_type = WebURLRequestToResourceType(request);
DCHECK_EQ(resource_type, ResourceType::RESOURCE_TYPE_SERVICE_WORKER);
auto extra_data = std::make_unique<RequestExtraData>(); auto extra_data = std::make_unique<RequestExtraData>();
extra_data->set_service_worker_provider_id(provider_id_); extra_data->set_service_worker_provider_id(provider_id_);
extra_data->set_originated_from_service_worker(true); extra_data->set_originated_from_service_worker(true);
// Service workers are only available in secure contexts, so all requests // Service workers are only available in secure contexts, so all requests
// are initiated in a secure context. // are initiated in a secure context.
extra_data->set_initiated_in_secure_context(true); extra_data->set_initiated_in_secure_context(true);
// The RenderThreadImpl or its URLLoaderThrottleProvider member may not be
// valid in some tests.
RenderThreadImpl* render_thread = RenderThreadImpl::current();
if (render_thread && render_thread->url_loader_throttle_provider()) {
extra_data->set_url_loader_throttles(
render_thread->url_loader_throttle_provider()->CreateThrottles(
MSG_ROUTING_NONE, request, resource_type));
}
request.SetExtraData(std::move(extra_data)); request.SetExtraData(std::move(extra_data));
} }
......
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