Commit 408a3b31 authored by Makoto Shimazu's avatar Makoto Shimazu Committed by Commit Bot

Add DNT header for service worker and shared worker scripts

These are loaded through WorkerShadowPage, and this CL to add a code to check
the preferences and add the header in there.

Bug: 853085
Change-Id: I080e3fa4cb175763b17dca127907750c51eef966
Reviewed-on: https://chromium-review.googlesource.com/1154782Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579752}
parent 9971f557
...@@ -161,10 +161,15 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, Worker) { ...@@ -161,10 +161,15 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, Worker) {
EXPECT_EQ("1", header_map["DNT"]); EXPECT_EQ("1", header_map["DNT"]);
} }
// Checks that the DNT header is sent in a request for a shared worker // Checks that the DNT header is sent in a request for shared worker script.
// script. // Disabled on Android since a shared worker is not available on Android:
// Disabled due to crbug.com/853085. // crbug.com/869745.
IN_PROC_BROWSER_TEST_F(DoNotTrackTest, DISABLED_SharedWorker) { #if defined(OS_ANDROID)
#define MAYBE_SharedWorker DISABLED_SharedWorker
#else
#define MAYBE_SharedWorker SharedWorker
#endif
IN_PROC_BROWSER_TEST_F(DoNotTrackTest, MAYBE_SharedWorker) {
net::test_server::HttpRequest::HeaderMap header_map; net::test_server::HttpRequest::HeaderMap header_map;
base::RunLoop loop; base::RunLoop loop;
embedded_test_server()->RegisterRequestHandler(base::BindRepeating( embedded_test_server()->RegisterRequestHandler(base::BindRepeating(
...@@ -183,8 +188,7 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, DISABLED_SharedWorker) { ...@@ -183,8 +188,7 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, DISABLED_SharedWorker) {
// Checks that the DNT header is sent in a request for a service worker // Checks that the DNT header is sent in a request for a service worker
// script. // script.
// Disabled due to crbug.com/853085. IN_PROC_BROWSER_TEST_F(DoNotTrackTest, ServiceWorker) {
IN_PROC_BROWSER_TEST_F(DoNotTrackTest, DISABLED_ServiceWorker) {
net::test_server::HttpRequest::HeaderMap header_map; net::test_server::HttpRequest::HeaderMap header_map;
base::RunLoop loop; base::RunLoop loop;
embedded_test_server()->RegisterRequestHandler(base::BindRepeating( embedded_test_server()->RegisterRequestHandler(base::BindRepeating(
...@@ -221,7 +225,8 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, FetchFromWorker) { ...@@ -221,7 +225,8 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, FetchFromWorker) {
// Checks that the DNT header is preserved when fetching from a shared worker. // Checks that the DNT header is preserved when fetching from a shared worker.
// //
// Disabled on Android since a shared worker is not available on Android. // Disabled on Android since a shared worker is not available on Android:
// crbug.com/869745.
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#define MAYBE_FetchFromSharedWorker DISABLED_FetchFromSharedWorker #define MAYBE_FetchFromSharedWorker DISABLED_FetchFromSharedWorker
#else #else
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
namespace content { namespace content {
// User preferences needed to be passed to the renderer process.
// TODO(crbug.com/869748): Move the preferences into
// third_party/blink/public/mojom as a mojom struct.
struct CONTENT_EXPORT RendererPreferences { struct CONTENT_EXPORT RendererPreferences {
RendererPreferences(); RendererPreferences();
RendererPreferences(const RendererPreferences& other); RendererPreferences(const RendererPreferences& other);
...@@ -84,9 +87,11 @@ struct CONTENT_EXPORT RendererPreferences { ...@@ -84,9 +87,11 @@ struct CONTENT_EXPORT RendererPreferences {
bool use_custom_colors; bool use_custom_colors;
// Set to false to not send referrers. // Set to false to not send referrers.
// The default value should be in sync with blink::PrivacyPreferences.
bool enable_referrers; bool enable_referrers;
// Set to true to indicate that the preference to set DNT to 1 is enabled. // Set to true to indicate that the preference to set DNT to 1 is enabled.
// The default value should be in sync with blink::PrivacyPreferences.
bool enable_do_not_track; bool enable_do_not_track;
// Whether to allow the use of Encrypted Media Extensions (EME), except for // Whether to allow the use of Encrypted Media Extensions (EME), except for
......
...@@ -64,6 +64,9 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker( ...@@ -64,6 +64,9 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
std::move(params->provider_info->cache_storage); std::move(params->provider_info->cache_storage);
service_manager::mojom::InterfaceProviderPtrInfo interface_provider = service_manager::mojom::InterfaceProviderPtrInfo interface_provider =
std::move(params->provider_info->interface_provider); std::move(params->provider_info->interface_provider);
blink::PrivacyPreferences privacy_preferences(
params->renderer_preferences.enable_do_not_track,
params->renderer_preferences.enable_referrers);
auto client = std::make_unique<ServiceWorkerContextClient>( auto client = std::make_unique<ServiceWorkerContextClient>(
params->embedded_worker_id, params->service_worker_version_id, params->embedded_worker_id, params->service_worker_version_id,
...@@ -86,7 +89,8 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker( ...@@ -86,7 +89,8 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
StartWorkerHistogramEnum::NUM_TYPES); StartWorkerHistogramEnum::NUM_TYPES);
wrapper_ = StartWorkerContext(std::move(params), std::move(client), wrapper_ = StartWorkerContext(std::move(params), std::move(client),
std::move(cache_storage), std::move(cache_storage),
std::move(interface_provider)); std::move(interface_provider),
std::move(privacy_preferences));
} }
void EmbeddedWorkerInstanceClientImpl::StopWorker() { void EmbeddedWorkerInstanceClientImpl::StopWorker() {
...@@ -143,7 +147,8 @@ EmbeddedWorkerInstanceClientImpl::StartWorkerContext( ...@@ -143,7 +147,8 @@ EmbeddedWorkerInstanceClientImpl::StartWorkerContext(
mojom::EmbeddedWorkerStartParamsPtr params, mojom::EmbeddedWorkerStartParamsPtr params,
std::unique_ptr<ServiceWorkerContextClient> context_client, std::unique_ptr<ServiceWorkerContextClient> context_client,
blink::mojom::CacheStoragePtrInfo cache_storage, blink::mojom::CacheStoragePtrInfo cache_storage,
service_manager::mojom::InterfaceProviderPtrInfo interface_provider) { service_manager::mojom::InterfaceProviderPtrInfo interface_provider,
blink::PrivacyPreferences privacy_preferences) {
std::unique_ptr<blink::WebServiceWorkerInstalledScriptsManager> manager; std::unique_ptr<blink::WebServiceWorkerInstalledScriptsManager> manager;
// |installed_scripts_info| is null if scripts should be served by net layer, // |installed_scripts_info| is null if scripts should be served by net layer,
// when the worker is not installed, or the worker is launched for checking // when the worker is not installed, or the worker is launched for checking
...@@ -174,6 +179,7 @@ EmbeddedWorkerInstanceClientImpl::StartWorkerContext( ...@@ -174,6 +179,7 @@ EmbeddedWorkerInstanceClientImpl::StartWorkerContext(
params->pause_after_download params->pause_after_download
? blink::WebEmbeddedWorkerStartData::kPauseAfterDownload ? blink::WebEmbeddedWorkerStartData::kPauseAfterDownload
: blink::WebEmbeddedWorkerStartData::kDontPauseAfterDownload; : blink::WebEmbeddedWorkerStartData::kDontPauseAfterDownload;
start_data.privacy_preferences = std::move(privacy_preferences);
wrapper->worker()->StartWorkerContext(start_data); wrapper->worker()->StartWorkerContext(start_data);
return wrapper; return wrapper;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "content/child/scoped_child_process_reference.h" #include "content/child/scoped_child_process_reference.h"
#include "content/common/service_worker/embedded_worker.mojom.h" #include "content/common/service_worker/embedded_worker.mojom.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/binding.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/mojom/service_worker/service_worker_installed_scripts_manager.mojom.h" #include "third_party/blink/public/mojom/service_worker/service_worker_installed_scripts_manager.mojom.h"
#include "third_party/blink/public/web/worker_content_settings_proxy.mojom.h" #include "third_party/blink/public/web/worker_content_settings_proxy.mojom.h"
...@@ -102,7 +103,8 @@ class EmbeddedWorkerInstanceClientImpl ...@@ -102,7 +103,8 @@ class EmbeddedWorkerInstanceClientImpl
mojom::EmbeddedWorkerStartParamsPtr params, mojom::EmbeddedWorkerStartParamsPtr params,
std::unique_ptr<ServiceWorkerContextClient> context_client, std::unique_ptr<ServiceWorkerContextClient> context_client,
blink::mojom::CacheStoragePtrInfo cache_storage, blink::mojom::CacheStoragePtrInfo cache_storage,
service_manager::mojom::InterfaceProviderPtrInfo interface_provider); service_manager::mojom::InterfaceProviderPtrInfo interface_provider,
blink::PrivacyPreferences privacy_preferences);
mojo::Binding<mojom::EmbeddedWorkerInstanceClient> binding_; mojo::Binding<mojom::EmbeddedWorkerInstanceClient> binding_;
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "third_party/blink/public/common/message_port/message_port_channel.h" #include "third_party/blink/public/common/message_port/message_port_channel.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/common/service_worker/service_worker_utils.h" #include "third_party/blink/public/common/service_worker/service_worker_utils.h"
#include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h" #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
#include "third_party/blink/public/platform/interface_provider.h" #include "third_party/blink/public/platform/interface_provider.h"
...@@ -257,7 +258,10 @@ EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub( ...@@ -257,7 +258,10 @@ EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub(
url_, blink::WebString::FromUTF8(name_), url_, blink::WebString::FromUTF8(name_),
blink::WebString::FromUTF8(info->content_security_policy), blink::WebString::FromUTF8(info->content_security_policy),
info->content_security_policy_type, info->creation_address_space, info->content_security_policy_type, info->creation_address_space,
devtools_worker_token, loader_factories_, devtools_worker_token,
blink::PrivacyPreferences(renderer_preferences_.enable_do_not_track,
renderer_preferences_.enable_referrers),
loader_factories_,
content_settings.PassInterface().PassHandle(), content_settings.PassInterface().PassHandle(),
interface_provider.PassInterface().PassHandle()); interface_provider.PassInterface().PassHandle());
......
...@@ -45,6 +45,7 @@ jumbo_source_set("common") { ...@@ -45,6 +45,7 @@ jumbo_source_set("common") {
"origin_policy/origin_policy_parser.h", "origin_policy/origin_policy_parser.h",
"origin_trials/trial_token.cc", "origin_trials/trial_token.cc",
"origin_trials/trial_token_validator.cc", "origin_trials/trial_token_validator.cc",
"privacy_preferences.cc",
"service_worker/service_worker_status_code.cc", "service_worker/service_worker_status_code.cc",
"service_worker/service_worker_type_converters.cc", "service_worker/service_worker_type_converters.cc",
"service_worker/service_worker_utils.cc", "service_worker/service_worker_utils.cc",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/common/privacy_preferences.h"
namespace blink {
PrivacyPreferences::PrivacyPreferences(bool enable_do_not_track,
bool enable_referrers)
: enable_do_not_track(enable_do_not_track),
enable_referrers(enable_referrers) {}
} // namespace blink
...@@ -59,6 +59,7 @@ source_set("headers") { ...@@ -59,6 +59,7 @@ source_set("headers") {
"origin_trials/trial_token.h", "origin_trials/trial_token.h",
"origin_trials/trial_token_validator.h", "origin_trials/trial_token_validator.h",
"page/launching_process_state.h", "page/launching_process_state.h",
"privacy_preferences.h",
"screen_orientation/web_screen_orientation_enum_traits.h", "screen_orientation/web_screen_orientation_enum_traits.h",
"screen_orientation/web_screen_orientation_lock_type.h", "screen_orientation/web_screen_orientation_lock_type.h",
"screen_orientation/web_screen_orientation_type.h", "screen_orientation/web_screen_orientation_type.h",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_PREFERENCES_H_
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_PREFERENCES_H_
#include "third_party/blink/common/common_export.h"
namespace blink {
// Subset of content::RendererPreferences for passing the security info to
// blink.
// TODO(crbug.com/869748): Move this into a mojom struct and use the new struct
// as a part of RendererPreferences once RendererPreferences becomes a mojom
// struct.
struct BLINK_COMMON_EXPORT PrivacyPreferences {
PrivacyPreferences() = default;
PrivacyPreferences(bool enable_do_not_track,
bool enable_referrers);
// These default values are coming from the defaults in
// content::RendererPreferences.
bool enable_do_not_track = false;
bool enable_referrers = true;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_PREFERENCES_H_
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_EMBEDDED_WORKER_START_DATA_H_ #define THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_EMBEDDED_WORKER_START_DATA_H_
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h" #include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h"
#include "third_party/blink/public/platform/web_content_security_policy.h" #include "third_party/blink/public/platform/web_content_security_policy.h"
#include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_string.h"
...@@ -60,6 +61,8 @@ struct WebEmbeddedWorkerStartData { ...@@ -60,6 +61,8 @@ struct WebEmbeddedWorkerStartData {
mojom::IPAddressSpace address_space; mojom::IPAddressSpace address_space;
PrivacyPreferences privacy_preferences;
WebEmbeddedWorkerStartData() WebEmbeddedWorkerStartData()
: pause_after_download_mode(kDontPauseAfterDownload), : pause_after_download_mode(kDontPauseAfterDownload),
wait_for_debugger_mode(kDontWaitForDebugger), wait_for_debugger_mode(kDontWaitForDebugger),
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h" #include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h"
#include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/system/message_pipe.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h" #include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h"
#include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/public/platform/web_common.h" #include "third_party/blink/public/platform/web_common.h"
...@@ -72,6 +73,7 @@ class BLINK_EXPORT WebSharedWorker { ...@@ -72,6 +73,7 @@ class BLINK_EXPORT WebSharedWorker {
WebContentSecurityPolicyType, WebContentSecurityPolicyType,
mojom::IPAddressSpace, mojom::IPAddressSpace,
const base::UnguessableToken& devtools_worker_token, const base::UnguessableToken& devtools_worker_token,
PrivacyPreferences privacy_preferences,
scoped_refptr<network::SharedURLLoaderFactory> loader_factory, scoped_refptr<network::SharedURLLoaderFactory> loader_factory,
mojo::ScopedMessagePipeHandle content_settings_handle, mojo::ScopedMessagePipeHandle content_settings_handle,
mojo::ScopedMessagePipeHandle interface_provider) = 0; mojo::ScopedMessagePipeHandle interface_provider) = 0;
......
...@@ -214,6 +214,7 @@ void WebSharedWorkerImpl::StartWorkerContext( ...@@ -214,6 +214,7 @@ void WebSharedWorkerImpl::StartWorkerContext(
WebContentSecurityPolicyType policy_type, WebContentSecurityPolicyType policy_type,
mojom::IPAddressSpace creation_address_space, mojom::IPAddressSpace creation_address_space,
const base::UnguessableToken& devtools_worker_token, const base::UnguessableToken& devtools_worker_token,
PrivacyPreferences privacy_preferences,
scoped_refptr<network::SharedURLLoaderFactory> loader_factory, scoped_refptr<network::SharedURLLoaderFactory> loader_factory,
mojo::ScopedMessagePipeHandle content_settings_handle, mojo::ScopedMessagePipeHandle content_settings_handle,
mojo::ScopedMessagePipeHandle interface_provider) { mojo::ScopedMessagePipeHandle interface_provider) {
...@@ -231,7 +232,8 @@ void WebSharedWorkerImpl::StartWorkerContext( ...@@ -231,7 +232,8 @@ void WebSharedWorkerImpl::StartWorkerContext(
// triggers creation of a InspectorNetworkAgent that tries to access the // triggers creation of a InspectorNetworkAgent that tries to access the
// token. // token.
shadow_page_ = shadow_page_ =
std::make_unique<WorkerShadowPage>(this, std::move(loader_factory)); std::make_unique<WorkerShadowPage>(this, std::move(loader_factory),
std::move(privacy_preferences));
// If we were asked to pause worker context on start and wait for debugger // If we were asked to pause worker context on start and wait for debugger
// then now is a good time to do that. // then now is a good time to do that.
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "services/service_manager/public/mojom/interface_provider.mojom-blink.h" #include "services/service_manager/public/mojom/interface_provider.mojom-blink.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h" #include "third_party/blink/public/mojom/net/ip_address_space.mojom-shared.h"
#include "third_party/blink/public/platform/web_content_security_policy.h" #include "third_party/blink/public/platform/web_content_security_policy.h"
#include "third_party/blink/public/web/web_shared_worker_client.h" #include "third_party/blink/public/web/web_shared_worker_client.h"
...@@ -95,6 +96,7 @@ class CORE_EXPORT WebSharedWorkerImpl final : public WebSharedWorker, ...@@ -95,6 +96,7 @@ class CORE_EXPORT WebSharedWorkerImpl final : public WebSharedWorker,
WebContentSecurityPolicyType, WebContentSecurityPolicyType,
mojom::IPAddressSpace, mojom::IPAddressSpace,
const base::UnguessableToken& devtools_worker_token, const base::UnguessableToken& devtools_worker_token,
PrivacyPreferences privacy_preferences,
scoped_refptr<network::SharedURLLoaderFactory> loader_factory, scoped_refptr<network::SharedURLLoaderFactory> loader_factory,
mojo::ScopedMessagePipeHandle content_settings_handle, mojo::ScopedMessagePipeHandle content_settings_handle,
mojo::ScopedMessagePipeHandle interface_provider) override; mojo::ScopedMessagePipeHandle interface_provider) override;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "third_party/blink/public/mojom/page/page_visibility_state.mojom-blink.h" #include "third_party/blink/public/mojom/page/page_visibility_state.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/web_referrer_policy.h"
#include "third_party/blink/public/web/web_settings.h" #include "third_party/blink/public/web/web_settings.h"
#include "third_party/blink/renderer/core/exported/web_view_impl.h" #include "third_party/blink/renderer/core/exported/web_view_impl.h"
#include "third_party/blink/renderer/core/frame/settings.h" #include "third_party/blink/renderer/core/frame/settings.h"
...@@ -14,9 +15,16 @@ ...@@ -14,9 +15,16 @@
namespace blink { namespace blink {
namespace {
constexpr char kDoNotTrackHeader[] = "DNT";
} // namespace
WorkerShadowPage::WorkerShadowPage( WorkerShadowPage::WorkerShadowPage(
Client* client, Client* client,
scoped_refptr<network::SharedURLLoaderFactory> loader_factory) scoped_refptr<network::SharedURLLoaderFactory> loader_factory,
PrivacyPreferences preferences)
: client_(client), : client_(client),
web_view_(WebViewImpl::Create(nullptr, web_view_(WebViewImpl::Create(nullptr,
nullptr, nullptr,
...@@ -29,7 +37,8 @@ WorkerShadowPage::WorkerShadowPage( ...@@ -29,7 +37,8 @@ WorkerShadowPage::WorkerShadowPage(
nullptr /* opener */, nullptr /* opener */,
g_empty_atom, g_empty_atom,
WebSandboxFlags::kNone)), WebSandboxFlags::kNone)),
loader_factory_(std::move(loader_factory)) { loader_factory_(std::move(loader_factory)),
preferences_(std::move(preferences)) {
DCHECK(IsMainThread()); DCHECK(IsMainThread());
// TODO(http://crbug.com/363843): This needs to find a better way to // TODO(http://crbug.com/363843): This needs to find a better way to
...@@ -93,6 +102,15 @@ base::UnguessableToken WorkerShadowPage::GetDevToolsFrameToken() { ...@@ -93,6 +102,15 @@ base::UnguessableToken WorkerShadowPage::GetDevToolsFrameToken() {
return client_->GetDevToolsWorkerToken(); return client_->GetDevToolsWorkerToken();
} }
void WorkerShadowPage::WillSendRequest(WebURLRequest& request) {
if (preferences_.enable_do_not_track) {
request.SetHTTPHeaderField(WebString::FromUTF8(kDoNotTrackHeader), "1");
}
if (!preferences_.enable_referrers) {
request.SetHTTPReferrer(WebString(), kWebReferrerPolicyDefault);
}
}
bool WorkerShadowPage::WasInitialized() const { bool WorkerShadowPage::WasInitialized() const {
return state_ == State::kInitialized; return state_ == State::kInitialized;
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define THIRD_PARTY_BLINK_RENDERER_CORE_EXPORTED_WORKER_SHADOW_PAGE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_EXPORTED_WORKER_SHADOW_PAGE_H_
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
#include "third_party/blink/public/common/privacy_preferences.h"
#include "third_party/blink/public/web/web_document_loader.h" #include "third_party/blink/public/web/web_document_loader.h"
#include "third_party/blink/public/web/web_local_frame_client.h" #include "third_party/blink/public/web/web_local_frame_client.h"
#include "third_party/blink/public/web/web_view.h" #include "third_party/blink/public/web/web_view.h"
...@@ -56,7 +57,8 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient { ...@@ -56,7 +57,8 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient {
// requests. // requests.
WorkerShadowPage( WorkerShadowPage(
Client* client, Client* client,
scoped_refptr<network::SharedURLLoaderFactory> loader_factory); scoped_refptr<network::SharedURLLoaderFactory> loader_factory,
PrivacyPreferences preferences);
~WorkerShadowPage() override; ~WorkerShadowPage() override;
// Initializes this instance and calls Client::OnShadowPageInitialized() when // Initializes this instance and calls Client::OnShadowPageInitialized() when
...@@ -74,6 +76,7 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient { ...@@ -74,6 +76,7 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient {
void DidFinishDocumentLoad() override; void DidFinishDocumentLoad() override;
std::unique_ptr<blink::WebURLLoaderFactory> CreateURLLoaderFactory() override; std::unique_ptr<blink::WebURLLoaderFactory> CreateURLLoaderFactory() override;
base::UnguessableToken GetDevToolsFrameToken() override; base::UnguessableToken GetDevToolsFrameToken() override;
void WillSendRequest(WebURLRequest&) override;
Document* GetDocument() { return main_frame_->GetFrame()->GetDocument(); } Document* GetDocument() { return main_frame_->GetFrame()->GetDocument(); }
WebSettings* GetSettings() { return web_view_->GetSettings(); } WebSettings* GetSettings() { return web_view_->GetSettings(); }
...@@ -93,6 +96,10 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient { ...@@ -93,6 +96,10 @@ class CORE_EXPORT WorkerShadowPage : public WebLocalFrameClient {
Persistent<WebLocalFrameImpl> main_frame_; Persistent<WebLocalFrameImpl> main_frame_;
scoped_refptr<network::SharedURLLoaderFactory> loader_factory_; scoped_refptr<network::SharedURLLoaderFactory> loader_factory_;
// TODO(crbug.com/862854): Update the values when the browser process changes
// the preferences.
const PrivacyPreferences preferences_;
State state_ = State::kUninitialized; State state_ = State::kUninitialized;
}; };
......
...@@ -153,8 +153,9 @@ void WebEmbeddedWorkerImpl::StartWorkerContext( ...@@ -153,8 +153,9 @@ void WebEmbeddedWorkerImpl::StartWorkerContext(
// shadow page's loader. This is different to shared workers, which use the // shadow page's loader. This is different to shared workers, which use the
// script loader factory for the main script only, and the shadow page loader // script loader factory for the main script only, and the shadow page loader
// for importScripts(). // for importScripts().
shadow_page_ = shadow_page_ = std::make_unique<WorkerShadowPage>(
std::make_unique<WorkerShadowPage>(this, nullptr /* loader_factory */); this, nullptr /* loader_factory */,
std::move(worker_start_data_.privacy_preferences));
WebSettings* settings = shadow_page_->GetSettings(); WebSettings* settings = shadow_page_->GetSettings();
// Currently we block all mixed-content requests from a ServiceWorker. // Currently we block all mixed-content requests from a ServiceWorker.
......
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