LeOSium_webview/LeOS/patches/Revert-removal-of-execution...

916 lines
52 KiB
Diff
Raw Permalink Normal View History

2023-11-18 11:46:19 +01:00
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Fri, 24 Jun 2022 22:24:22 +0200
Subject: Revert removal of execution context address space
Revert "[Private Network Access] Remove ExecutionContext::SetAddressSpace()."
This reverts commit dfa3a4a6c0d023e5126dad31f6c479dc8d20e416.
Revert "[Private Network Access] Remove ExecutionContext::AddressSpace()."
This reverts commit a5c64b9f5f985cfebab3375b53062321a62e3e31.
Revert "[Private Network Access] Remove GlobalScopeCreationParams address space."
This reverts commit c32df617780283942d49ca5574fcd6b7f691e9c1.
Revert "[Private Network Access] Remove WorkerClassicScriptLoader address space."
This reverts commit 11f6a3e29bee9a6590a4fd56b28e8048200c18d0.
Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
content/public/common/content_features.cc | 2 +-
.../execution_context/execution_context.cc | 9 +++++
.../execution_context/execution_context.h | 4 +++
.../core/exported/web_shared_worker_impl.cc | 1 +
.../renderer/core/frame/policy_container.cc | 10 ++++++
.../renderer/core/frame/policy_container.h | 11 ++++++
.../renderer/core/frame/web_frame_test.cc | 34 +++++++++++++++++++
.../layout_worklet_global_scope_proxy.cc | 2 +-
...ed_service_worker_module_script_fetcher.cc | 1 +
.../modulescript/module_script_loader_test.cc | 1 +
.../worker_module_script_fetcher.cc | 3 +-
.../renderer/core/workers/dedicated_worker.cc | 22 +++++++-----
.../renderer/core/workers/dedicated_worker.h | 4 ++-
.../workers/dedicated_worker_global_scope.cc | 9 ++++-
.../workers/dedicated_worker_global_scope.h | 1 +
.../workers/global_scope_creation_params.cc | 2 ++
.../workers/global_scope_creation_params.h | 7 ++++
.../core/workers/installed_scripts_manager.cc | 16 +++++++++
.../core/workers/installed_scripts_manager.h | 5 +++
.../core/workers/main_thread_worklet_test.cc | 1 +
.../workers/shared_worker_global_scope.cc | 7 ++++
.../core/workers/shared_worker_global_scope.h | 1 +
.../threaded_worklet_messaging_proxy.cc | 2 ++
.../core/workers/threaded_worklet_test.cc | 1 +
.../workers/worker_classic_script_loader.cc | 5 ++-
.../workers/worker_classic_script_loader.h | 6 ++++
.../core/workers/worker_global_scope.h | 2 ++
.../core/workers/worker_thread_test.cc | 2 ++
.../core/workers/worker_thread_test_helper.h | 6 ++++
.../paint_worklet_global_scope_proxy.cc | 2 +-
.../exported/web_embedded_worker_impl.cc | 4 ++-
.../service_worker_global_scope.cc | 25 +++++++++-----
.../service_worker_global_scope.h | 2 ++
.../audio_worklet_global_scope_test.cc | 1 +
.../webaudio/audio_worklet_thread_test.cc | 1 +
.../worklet/worklet_thread_test_common.cc | 2 +-
36 files changed, 189 insertions(+), 25 deletions(-)
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -125,7 +125,7 @@ BASE_FEATURE(kBlockInsecurePrivateNetworkRequests,
// - kBlockInsecurePrivateNetworkRequests
BASE_FEATURE(kBlockInsecurePrivateNetworkRequestsFromPrivate,
"BlockInsecurePrivateNetworkRequestsFromPrivate",
- base::FEATURE_DISABLED_BY_DEFAULT);
+ base::FEATURE_ENABLED_BY_DEFAULT);
// Enables use of the PrivateNetworkAccessNonSecureContextsAllowed deprecation
// trial. This is a necessary yet insufficient condition: documents that wish to
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
+++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -516,6 +516,15 @@ void ExecutionContext::SetReferrerPolicy(
policy_container_->UpdateReferrerPolicy(referrer_policy);
}
+network::mojom::IPAddressSpace ExecutionContext::AddressSpace() const {
+ return policy_container_->GetIPAddressSpace();
+}
+
+void ExecutionContext::SetAddressSpace(
+ network::mojom::blink::IPAddressSpace ip_address_space) {
+ GetPolicyContainer()->SetIPAddressSpace(ip_address_space);
+}
+
void ExecutionContext::SetPolicyContainer(
std::unique_ptr<PolicyContainer> container) {
policy_container_ = std::move(container);
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -33,6 +33,7 @@
#include "base/notreached.h"
#include "base/task/single_thread_task_runner.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h"
#include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/public/common/tokens/tokens.h"
@@ -386,6 +387,9 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
const String& message = g_empty_string,
const String& source_file = g_empty_string) const {}
+ network::mojom::IPAddressSpace AddressSpace() const;
+ void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space);
+
HeapObserverSet<ContextLifecycleObserver>& ContextLifecycleObserverSet();
unsigned ContextLifecycleStateObserverCountForTesting() const;
diff --git a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
--- a/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_shared_worker_impl.cc
@@ -251,6 +251,7 @@ void WebSharedWorkerImpl::StartWorkerContext(
MakeGarbageCollected<WorkerClients>(),
std::make_unique<SharedWorkerContentSettingsProxy>(
std::move(content_settings)),
+ absl::nullopt /* response_address_space */,
nullptr /* inherited_trial_features */, devtools_worker_token,
std::move(worker_settings), mojom::blink::V8CacheOptions::kDefault,
nullptr /* worklet_module_response_map */,
diff --git a/third_party/blink/renderer/core/frame/policy_container.cc b/third_party/blink/renderer/core/frame/policy_container.cc
--- a/third_party/blink/renderer/core/frame/policy_container.cc
+++ b/third_party/blink/renderer/core/frame/policy_container.cc
@@ -56,12 +56,22 @@ network::mojom::blink::ReferrerPolicy PolicyContainer::GetReferrerPolicy()
return policies_->referrer_policy;
}
+network::mojom::blink::IPAddressSpace PolicyContainer::GetIPAddressSpace()
+ const {
+ return policies_->ip_address_space;
+}
+
void PolicyContainer::UpdateReferrerPolicy(
network::mojom::blink::ReferrerPolicy policy) {
policies_->referrer_policy = policy;
policy_container_host_remote_->SetReferrerPolicy(policy);
}
+void PolicyContainer::SetIPAddressSpace(
+ network::mojom::IPAddressSpace ip_address_space) {
+ policies_->ip_address_space = ip_address_space;
+}
+
const mojom::blink::PolicyContainerPolicies& PolicyContainer::GetPolicies()
const {
return *policies_;
diff --git a/third_party/blink/renderer/core/frame/policy_container.h b/third_party/blink/renderer/core/frame/policy_container.h
--- a/third_party/blink/renderer/core/frame/policy_container.h
+++ b/third_party/blink/renderer/core/frame/policy_container.h
@@ -8,6 +8,7 @@
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/network/public/mojom/content_security_policy.mojom-blink-forward.h"
+#include "services/network/public/mojom/ip_address_space.mojom-shared.h"
#include "services/network/public/mojom/referrer_policy.mojom-shared.h"
#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h"
#include "third_party/blink/public/mojom/frame/policy_container.mojom-blink.h"
@@ -44,6 +45,16 @@ class CORE_EXPORT PolicyContainer {
void UpdateReferrerPolicy(network::mojom::blink::ReferrerPolicy policy);
network::mojom::blink::ReferrerPolicy GetReferrerPolicy() const;
+ // This setter is used only by worklets and workers, which do not sync the
+ // PolicyContainer with the browser.
+ //
+ // TODO(https://crbug.com/1177199): Remove this when we implement policy
+ // inheritance for workers/worklets using the PolicyContainer.
+ void SetIPAddressSpace(
+ network::mojom::IPAddressSpace ip_address_space);
+
+ network::mojom::blink::IPAddressSpace GetIPAddressSpace() const;
+
// Append |policies| to the list of Content Security Policy and sync them with
// the PolicyContainerHost.
void AddContentSecurityPolicies(
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -8069,6 +8069,40 @@ TEST_F(WebFrameTest, PushStateStartsAndStops) {
EXPECT_EQ(client.StopLoadingCount(), 2);
}
+TEST_F(WebFrameTest, IPAddressSpace) {
+ frame_test_helpers::WebViewHelper web_view_helper;
+ WebViewImpl* web_view =
+ web_view_helper.InitializeAndLoad("data:text/html,ip_address_space");
+
+ network::mojom::IPAddressSpace values[] = {
+ network::mojom::IPAddressSpace::kUnknown,
+ network::mojom::IPAddressSpace::kLocal,
+ network::mojom::IPAddressSpace::kPrivate,
+ network::mojom::IPAddressSpace::kPublic};
+
+ for (auto value : values) {
+ auto params = std::make_unique<WebNavigationParams>();
+ params->url = url_test_helpers::ToKURL("about:blank");
+ params->navigation_timings.navigation_start = base::TimeTicks::Now();
+ params->navigation_timings.fetch_start = base::TimeTicks::Now();
+ params->is_browser_initiated = true;
+ MockPolicyContainerHost mock_policy_container_host;
+ params->policy_container = std::make_unique<WebPolicyContainer>(
+ WebPolicyContainerPolicies(),
+ mock_policy_container_host.BindNewEndpointAndPassDedicatedRemote());
+ params->policy_container->policies.ip_address_space = value;
+ params->sandbox_flags = network::mojom::WebSandboxFlags::kNone;
+ web_view_helper.LocalMainFrame()->CommitNavigation(std::move(params),
+ nullptr);
+ frame_test_helpers::PumpPendingRequestsForFrameToLoad(
+ web_view_helper.LocalMainFrame());
+
+ ExecutionContext* context =
+ web_view->MainFrameImpl()->GetFrame()->DomWindow();
+ EXPECT_EQ(value, context->AddressSpace());
+ }
+}
+
TEST_F(WebFrameTest,
CommitSynchronousNavigationForAboutBlankAndCheckStorageKeyNonce) {
frame_test_helpers::WebViewHelper web_view_helper;
diff --git a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope_proxy.cc b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope_proxy.cc
--- a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope_proxy.cc
+++ b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope_proxy.cc
@@ -48,7 +48,7 @@ LayoutWorkletGlobalScopeProxy::LayoutWorkletGlobalScopeProxy(
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(),
nullptr /* worker_clients */,
- frame_client->CreateWorkerContentSettingsClient(),
+ frame_client->CreateWorkerContentSettingsClient(), window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault, module_responses_map,
diff --git a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc
--- a/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/installed_service_worker_module_script_fetcher.cc
@@ -69,6 +69,7 @@ void InstalledServiceWorkerModuleScriptFetcher::Fetch(
global_scope_->Initialize(
response_url, response_referrer_policy,
+ script_data->GetResponseAddressSpace(),
ParseContentSecurityPolicyHeaders(
script_data->GetContentSecurityPolicyResponseHeaders()),
script_data->CreateOriginTrialTokens().get());
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader_test.cc
@@ -208,6 +208,7 @@ void ModuleScriptLoaderTest::InitializeForWorklet() {
network::mojom::ReferrerPolicy::kDefault, security_origin_.get(),
true /* is_secure_context */, HttpsState::kModern,
nullptr /* worker_clients */, nullptr /* content_settings_client */,
+ network::mojom::IPAddressSpace::kLocal,
nullptr /* inherited_trial_features */, base::UnguessableToken::Create(),
nullptr /* worker_settings */, mojom::blink::V8CacheOptions::kDefault,
MakeGarbageCollected<WorkletModuleResponsesMap>(),
diff --git a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc
--- a/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/worker_module_script_fetcher.cc
@@ -6,6 +6,7 @@
#include <memory>
+#include "services/network/public/mojom/ip_address_space.mojom-blink.h"
#include "services/network/public/mojom/referrer_policy.mojom-blink.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/loader/network_utils.h"
@@ -182,7 +183,7 @@ void WorkerModuleScriptFetcher::NotifyClient(
// Step 12.3-12.6 are implemented in Initialize().
global_scope_->Initialize(
- response_url, response_referrer_policy,
+ response_url, response_referrer_policy, response.AddressSpace(),
ParseContentSecurityPolicyHeaders(
ContentSecurityPolicyResponseHeaders(response)),
response_origin_trial_tokens.get());
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc
--- a/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -276,12 +276,12 @@ void DedicatedWorker::OnHostCreated(
if (options_->type() == script_type_names::kModule) {
// Specify empty source code etc. here because scripts will be fetched on
// the worker thread.
- ContinueStart(script_request_url_,
- nullptr /* worker_main_script_load_params */,
- network::mojom::ReferrerPolicy::kDefault,
- Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
- String() /* source_code */, reject_coep_unsafe_none,
- std::move(back_forward_cache_controller_host));
+ ContinueStart(
+ script_request_url_, nullptr /* worker_main_script_load_params */,
+ network::mojom::ReferrerPolicy::kDefault,
+ Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
+ absl::nullopt /* response_address_space */, String() /* source_code */,
+ reject_coep_unsafe_none, std::move(back_forward_cache_controller_host));
return;
}
NOTREACHED() << "Invalid type: " << IDLEnumAsString(options_->type());
@@ -329,6 +329,7 @@ void DedicatedWorker::OnScriptLoadStarted(
ContinueStart(script_request_url_, std::move(worker_main_script_load_params),
network::mojom::ReferrerPolicy::kDefault,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
+ absl::nullopt /* response_address_space */,
String() /* source_code */, RejectCoepUnsafeNone(false),
std::move(back_forward_cache_controller_host));
}
@@ -392,6 +393,7 @@ void DedicatedWorker::OnFinished(
? mojo::Clone(classic_script_loader_->GetContentSecurityPolicy()
->GetParsedPolicies())
: Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
+ classic_script_loader_->ResponseAddressSpace(),
classic_script_loader_->SourceText(), RejectCoepUnsafeNone(false),
std::move(back_forward_cache_controller_host));
probe::ScriptImported(GetExecutionContext(),
@@ -408,6 +410,7 @@ void DedicatedWorker::ContinueStart(
network::mojom::ReferrerPolicy referrer_policy,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
response_content_security_policies,
+ absl::optional<network::mojom::IPAddressSpace> response_address_space,
const String& source_code,
RejectCoepUnsafeNone reject_coep_unsafe_none,
mojo::PendingRemote<mojom::blink::BackForwardCacheControllerHost>
@@ -415,7 +418,8 @@ void DedicatedWorker::ContinueStart(
context_proxy_->StartWorkerGlobalScope(
CreateGlobalScopeCreationParams(
script_url, referrer_policy,
- std::move(response_content_security_policies)),
+ std::move(response_content_security_policies),
+ response_address_space),
std::move(worker_main_script_load_params), options_, script_url,
*outside_fetch_client_settings_object_, v8_stack_trace_id_, source_code,
reject_coep_unsafe_none, token_,
@@ -452,7 +456,8 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
const KURL& script_url,
network::mojom::ReferrerPolicy referrer_policy,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
- response_content_security_policies) {
+ response_content_security_policies,
+ absl::optional<network::mojom::IPAddressSpace> response_address_space) {
base::UnguessableToken parent_devtools_token;
std::unique_ptr<WorkerSettings> settings;
ExecutionContext* execution_context = GetExecutionContext();
@@ -501,6 +506,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
execution_context->GetSecurityOrigin(),
execution_context->IsSecureContext(), execution_context->GetHttpsState(),
MakeGarbageCollected<WorkerClients>(), CreateWebContentSettingsClient(),
+ response_address_space,
OriginTrialContext::GetInheritedTrialFeatures(execution_context).get(),
parent_devtools_token, std::move(settings),
mojom::blink::V8CacheOptions::kDefault,
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.h b/third_party/blink/renderer/core/workers/dedicated_worker.h
--- a/third_party/blink/renderer/core/workers/dedicated_worker.h
+++ b/third_party/blink/renderer/core/workers/dedicated_worker.h
@@ -137,6 +137,7 @@ class CORE_EXPORT DedicatedWorker final
network::mojom::ReferrerPolicy,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
response_content_security_policies,
+ absl::optional<network::mojom::IPAddressSpace> response_address_space,
const String& source_code,
RejectCoepUnsafeNone reject_coep_unsafe_none,
mojo::PendingRemote<mojom::blink::BackForwardCacheControllerHost>
@@ -145,7 +146,8 @@ class CORE_EXPORT DedicatedWorker final
const KURL& script_url,
network::mojom::ReferrerPolicy,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
- response_content_security_policies);
+ response_content_security_policies,
+ absl::optional<network::mojom::IPAddressSpace> response_address_space);
scoped_refptr<WebWorkerFetchContext> CreateWebWorkerFetchContext();
// May return nullptr.
std::unique_ptr<WebContentSettingsClient> CreateWebContentSettingsClient();
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc
--- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.cc
@@ -82,6 +82,8 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create(
KURL response_script_url = creation_params->script_url;
network::mojom::ReferrerPolicy response_referrer_policy =
creation_params->referrer_policy;
+ absl::optional<network::mojom::IPAddressSpace> response_address_space =
+ creation_params->response_address_space;
const bool parent_cross_origin_isolated_capability =
creation_params->parent_cross_origin_isolated_capability;
const bool parent_is_isolated_context =
@@ -101,7 +103,7 @@ DedicatedWorkerGlobalScope* DedicatedWorkerGlobalScope::Create(
// Pass dummy origin trial tokens here as it is already set to outside's
// origin trial tokens in DedicatedWorkerGlobalScope's constructor.
global_scope->Initialize(response_script_url, response_referrer_policy,
- std::move(response_csp),
+ *response_address_space, std::move(response_csp),
nullptr /* response_origin_trial_tokens */);
return global_scope;
} else {
@@ -218,6 +220,7 @@ const AtomicString& DedicatedWorkerGlobalScope::InterfaceName() const {
void DedicatedWorkerGlobalScope::Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* /* response_origin_trial_tokens */) {
// Step 14.3. "Set worker global scope's url to response's url."
@@ -231,6 +234,9 @@ void DedicatedWorkerGlobalScope::Initialize(
// parsing the `Referrer-Policy` header of response."
SetReferrerPolicy(response_referrer_policy);
+ // https://wicg.github.io/cors-rfc1918/#integration-html
+ SetAddressSpace(response_address_space);
+
// The following is the Content-Security-Policy part of "Initialize worker
// global scope's policy container"
// https://html.spec.whatwg.org/#initialize-worker-policy-container
@@ -443,6 +449,7 @@ void DedicatedWorkerGlobalScope::DidFetchClassicScript(
// Pass dummy origin trial tokens here as it is already set to outside's
// origin trial tokens in DedicatedWorkerGlobalScope's constructor.
Initialize(classic_script_loader->ResponseURL(), response_referrer_policy,
+ classic_script_loader->ResponseAddressSpace(),
classic_script_loader->GetContentSecurityPolicy()
? mojo::Clone(classic_script_loader->GetContentSecurityPolicy()
->GetParsedPolicies())
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h
--- a/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/dedicated_worker_global_scope.h
@@ -107,6 +107,7 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
void Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) override;
void FetchAndRunClassicScript(
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.cc
@@ -31,6 +31,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams(
HttpsState starter_https_state,
WorkerClients* worker_clients,
std::unique_ptr<WebContentSettingsClient> content_settings_client,
+ absl::optional<network::mojom::IPAddressSpace> response_address_space,
const Vector<OriginTrialFeature>* inherited_trial_features,
const base::UnguessableToken& parent_devtools_token,
std::unique_ptr<WorkerSettings> worker_settings,
@@ -67,6 +68,7 @@ GlobalScopeCreationParams::GlobalScopeCreationParams(
starter_https_state(starter_https_state),
worker_clients(worker_clients),
content_settings_client(std::move(content_settings_client)),
+ response_address_space(response_address_space),
parent_devtools_token(parent_devtools_token),
worker_settings(std::move(worker_settings)),
v8_cache_options(v8_cache_options),
diff --git a/third_party/blink/renderer/core/workers/global_scope_creation_params.h b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
--- a/third_party/blink/renderer/core/workers/global_scope_creation_params.h
+++ b/third_party/blink/renderer/core/workers/global_scope_creation_params.h
@@ -11,6 +11,7 @@
#include "base/unguessable_token.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h"
#include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
@@ -61,6 +62,7 @@ struct CORE_EXPORT GlobalScopeCreationParams final {
HttpsState starter_https_state,
WorkerClients*,
std::unique_ptr<WebContentSettingsClient>,
+ absl::optional<network::mojom::IPAddressSpace>,
const Vector<OriginTrialFeature>* inherited_trial_features,
const base::UnguessableToken& parent_devtools_token,
std::unique_ptr<WorkerSettings>,
@@ -167,6 +169,11 @@ struct CORE_EXPORT GlobalScopeCreationParams final {
std::unique_ptr<WebContentSettingsClient> content_settings_client;
+ // Worker script response's address space. This is valid only when the worker
+ // script is fetched on the main thread (i.e., when
+ // |off_main_thread_fetch_option| is kDisabled).
+ absl::optional<network::mojom::IPAddressSpace> response_address_space;
+
base::UnguessableToken parent_devtools_token;
std::unique_ptr<WorkerSettings> worker_settings;
diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
--- a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
+++ b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
@@ -4,6 +4,7 @@
#include "third_party/blink/renderer/core/workers/installed_scripts_manager.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink.h"
#include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
#include "third_party/blink/renderer/core/origin_trials/origin_trial_context.h"
#include "third_party/blink/renderer/platform/network/http_names.h"
@@ -20,6 +21,21 @@ InstalledScriptsManager::ScriptData::ScriptData(
source_text_(std::move(source_text)),
meta_data_(std::move(meta_data)) {
headers_.Adopt(std::move(header_data));
+
+ // Calculate an address space from worker script's response url according to
+ // the "CORS and RFC1918" spec:
+ // https://wicg.github.io/cors-rfc1918/#integration-html
+ //
+ // Currently this implementation is not fully consistent with the spec for
+ // historical reasons.
+ // TODO(https://crbug.com/955213): Make this consistent with the spec.
+ // TODO(https://crbug.com/955213): Move this function to a more appropriate
+ // place so that this is shareable out of worker code.
+ response_address_space_ = network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(script_url_.Host()))
+ response_address_space_ = network::mojom::IPAddressSpace::kLocal;
+ if (SecurityOrigin::Create(script_url_)->IsLocalhost())
+ response_address_space_ = network::mojom::IPAddressSpace::kLoopback;
}
ContentSecurityPolicyResponseHeaders
diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.h b/third_party/blink/renderer/core/workers/installed_scripts_manager.h
--- a/third_party/blink/renderer/core/workers/installed_scripts_manager.h
+++ b/third_party/blink/renderer/core/workers/installed_scripts_manager.h
@@ -5,6 +5,7 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_INSTALLED_SCRIPTS_MANAGER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_INSTALLED_SCRIPTS_MANAGER_H_
+#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/platform/network/content_security_policy_response_headers.h"
#include "third_party/blink/renderer/platform/network/http_header_map.h"
@@ -45,6 +46,9 @@ class InstalledScriptsManager {
GetContentSecurityPolicyResponseHeaders();
String GetReferrerPolicy();
String GetHttpContentType();
+ network::mojom::IPAddressSpace GetResponseAddressSpace() const {
+ return response_address_space_;
+ }
std::unique_ptr<Vector<String>> CreateOriginTrialTokens();
private:
@@ -52,6 +56,7 @@ class InstalledScriptsManager {
String source_text_;
std::unique_ptr<Vector<uint8_t>> meta_data_;
HTTPHeaderMap headers_;
+ network::mojom::IPAddressSpace response_address_space_;
};
// Used on the main or worker thread. Returns true if the script has been
diff --git a/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc b/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
--- a/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
+++ b/third_party/blink/renderer/core/workers/main_thread_worklet_test.cc
@@ -72,6 +72,7 @@ class MainThreadWorkletTest : public PageTestBase {
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(),
nullptr /* worker_clients */, nullptr /* content_settings_client */,
+ window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault,
diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
--- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.cc
@@ -76,6 +76,7 @@ const AtomicString& SharedWorkerGlobalScope::InterfaceName() const {
void SharedWorkerGlobalScope::Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) {
// Step 12.3. "Set worker global scope's url to response's url."
@@ -89,6 +90,9 @@ void SharedWorkerGlobalScope::Initialize(
// parsing the `Referrer-Policy` header of response."
SetReferrerPolicy(response_referrer_policy);
+ // https://wicg.github.io/cors-rfc1918/#integration-html
+ SetAddressSpace(response_address_space);
+
// Step 12.6. "Execute the Initialize a global object's CSP list algorithm
// on worker global scope and response. [CSP]"
// SharedWorkerGlobalScope inherits the outside's CSP instead of the response
@@ -98,6 +102,8 @@ void SharedWorkerGlobalScope::Initialize(
// https://fetch.spec.whatwg.org/#local-scheme
//
// https://w3c.github.io/webappsec-csp/#initialize-global-object-csp
+ // These should be called after SetAddressSpace() to correctly override the
+ // address space by the "treat-as-public-address" CSP directive.
Vector<network::mojom::blink::ContentSecurityPolicyPtr> csp_headers =
response_url.ProtocolIsAbout() || response_url.ProtocolIsData() ||
response_url.ProtocolIs("blob")
@@ -245,6 +251,7 @@ void SharedWorkerGlobalScope::DidFetchClassicScript(
// Step 12.3-12.6 are implemented in Initialize().
Initialize(classic_script_loader->ResponseURL(), response_referrer_policy,
+ classic_script_loader->ResponseAddressSpace(),
classic_script_loader->GetContentSecurityPolicy()
? mojo::Clone(classic_script_loader->GetContentSecurityPolicy()
->GetParsedPolicies())
diff --git a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
--- a/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/shared_worker_global_scope.h
@@ -64,6 +64,7 @@ class CORE_EXPORT SharedWorkerGlobalScope final : public WorkerGlobalScope {
void Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) override;
void FetchAndRunClassicScript(
diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc b/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
--- a/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
+++ b/third_party/blink/renderer/core/workers/threaded_worklet_messaging_proxy.cc
@@ -85,6 +85,7 @@ void ThreadedWorkletMessagingProxy::Initialize(
/*starter_https_state=*/HttpsState::kNone,
/*worker_clients=*/nullptr,
/*content_settings_client=*/nullptr,
+ /*response_address_space*/network::mojom::IPAddressSpace::kUnknown,
/*inherited_trial_features=*/nullptr,
/*parent_devtools_token=*/
client_provided_global_scope_creation_params->devtools_token,
@@ -130,6 +131,7 @@ void ThreadedWorkletMessagingProxy::Initialize(
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(), worker_clients,
frame_client->CreateWorkerContentSettingsClient(),
+ window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(),
std::make_unique<WorkerSettings>(window->GetFrame()->GetSettings()),
diff --git a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
--- a/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
+++ b/third_party/blink/renderer/core/workers/threaded_worklet_test.cc
@@ -217,6 +217,7 @@ class ThreadedWorkletMessagingProxyForTest
GetExecutionContext()->IsSecureContext(),
GetExecutionContext()->GetHttpsState(), worker_clients,
nullptr /* content_settings_client */,
+ GetExecutionContext()->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(GetExecutionContext())
.get(),
base::UnguessableToken::Create(), std::move(worker_settings),
diff --git a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
--- a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
+++ b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
@@ -29,6 +29,7 @@
#include <memory>
#include "base/memory/scoped_refptr.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
@@ -98,7 +99,8 @@ String CheckSameOriginEnforcement(const KURL& request_url,
} // namespace
-WorkerClassicScriptLoader::WorkerClassicScriptLoader() {}
+WorkerClassicScriptLoader::WorkerClassicScriptLoader()
+ : response_address_space_(network::mojom::IPAddressSpace::kPublic) {}
void WorkerClassicScriptLoader::LoadSynchronously(
ExecutionContext& execution_context,
@@ -238,6 +240,7 @@ void WorkerClassicScriptLoader::DidReceiveResponse(
identifier_ = identifier;
response_url_ = response.ResponseUrl();
response_encoding_ = response.TextEncodingName();
+ response_address_space_ = response.AddressSpace();
referrer_policy_ = response.HttpHeaderField(http_names::kReferrerPolicy);
ProcessContentSecurityPolicy(response);
diff --git a/third_party/blink/renderer/core/workers/worker_classic_script_loader.h b/third_party/blink/renderer/core/workers/worker_classic_script_loader.h
--- a/third_party/blink/renderer/core/workers/worker_classic_script_loader.h
+++ b/third_party/blink/renderer/core/workers/worker_classic_script_loader.h
@@ -32,6 +32,7 @@
#include "base/memory/scoped_refptr.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h"
#include "services/network/public/mojom/url_loader_factory.mojom-blink.h"
#include "third_party/blink/public/mojom/loader/resource_load_info_notifier.mojom-shared.h"
#include "third_party/blink/public/platform/cross_variant_mojo_util.h"
@@ -122,6 +123,10 @@ class CORE_EXPORT WorkerClassicScriptLoader final
const String& GetReferrerPolicy() const { return referrer_policy_; }
+ network::mojom::IPAddressSpace ResponseAddressSpace() const {
+ return response_address_space_;
+ }
+
const Vector<String>* OriginTrialTokens() const {
return origin_trial_tokens_.get();
}
@@ -177,6 +182,7 @@ class CORE_EXPORT WorkerClassicScriptLoader final
uint64_t identifier_ = 0;
std::unique_ptr<Vector<uint8_t>> cached_metadata_;
Member<ContentSecurityPolicy> content_security_policy_;
+ network::mojom::IPAddressSpace response_address_space_;
std::unique_ptr<Vector<String>> origin_trial_tokens_;
String referrer_policy_;
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.h b/third_party/blink/renderer/core/workers/worker_global_scope.h
--- a/third_party/blink/renderer/core/workers/worker_global_scope.h
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.h
@@ -32,6 +32,7 @@
#include "base/task/single_thread_task_runner.h"
#include "base/time/time.h"
#include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink-forward.h"
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/public/common/loader/worker_main_script_load_parameters.h"
#include "third_party/blink/public/common/tokens/tokens.h"
@@ -172,6 +173,7 @@ class CORE_EXPORT WorkerGlobalScope
virtual void Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) = 0;
diff --git a/third_party/blink/renderer/core/workers/worker_thread_test.cc b/third_party/blink/renderer/core/workers/worker_thread_test.cc
--- a/third_party/blink/renderer/core/workers/worker_thread_test.cc
+++ b/third_party/blink/renderer/core/workers/worker_thread_test.cc
@@ -9,6 +9,7 @@
#include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-blink.h"
@@ -372,6 +373,7 @@ TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) {
CalculateHttpsState(security_origin_.get()),
MakeGarbageCollected<WorkerClients>(),
nullptr /* content_settings_client */,
+ network::mojom::IPAddressSpace::kLocal,
nullptr /* inherited_trial_features */,
base::UnguessableToken::Create(),
std::make_unique<WorkerSettings>(std::make_unique<Settings>().get()),
diff --git a/third_party/blink/renderer/core/workers/worker_thread_test_helper.h b/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
--- a/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
+++ b/third_party/blink/renderer/core/workers/worker_thread_test_helper.h
@@ -9,6 +9,7 @@
#include "base/synchronization/waitable_event.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
+#include "services/network/public/mojom/ip_address_space.mojom-blink.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h"
@@ -80,11 +81,15 @@ class FakeWorkerGlobalScope : public WorkerGlobalScope {
void Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) override {
InitializeURL(response_url);
SetReferrerPolicy(response_referrer_policy);
+ SetAddressSpace(response_address_space);
+ // These should be called after SetAddressSpace() to correctly override the
+ // address space by the "treat-as-public-address" CSP directive.
InitContentSecurityPolicyFromVector(std::move(response_csp));
BindContentSecurityPolicyToExecutionContext();
@@ -162,6 +167,7 @@ class WorkerThreadForTest : public WorkerThread {
false /* starter_secure_context */,
CalculateHttpsState(security_origin), worker_clients,
nullptr /* content_settings_client */,
+ network::mojom::IPAddressSpace::kLocal,
nullptr /* inherited_trial_features */,
base::UnguessableToken::Create(),
std::make_unique<WorkerSettings>(std::make_unique<Settings>().get()),
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope_proxy.cc
@@ -47,7 +47,7 @@ PaintWorkletGlobalScopeProxy::PaintWorkletGlobalScopeProxy(
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(),
nullptr /* worker_clients */,
- frame_client->CreateWorkerContentSettingsClient(),
+ frame_client->CreateWorkerContentSettingsClient(), window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault, module_responses_map,
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
--- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
+++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.cc
@@ -205,7 +205,9 @@ void WebEmbeddedWorkerImpl::StartWorkerThread(
Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
network::mojom::ReferrerPolicy::kDefault, starter_origin.get(),
starter_secure_context, starter_https_state, nullptr /* worker_clients */,
- std::move(content_settings_proxy), nullptr /* inherited_trial_features */,
+ std::move(content_settings_proxy),
+ absl::nullopt /* response_address_space */,
+ nullptr /* inherited_trial_features */,
worker_start_data->devtools_worker_token, std::move(worker_settings),
// Generate the full code cache in the first execution of the script.
mojom::blink::V8CacheOptions::kFullCodeWithoutHeatCheck,
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
--- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
+++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.cc
@@ -474,6 +474,7 @@ void ServiceWorkerGlobalScope::DidFetchClassicScript(
// is set, and with the following callback steps given evaluationStatus:"
RunClassicScript(
classic_script_loader->ResponseURL(), referrer_policy,
+ classic_script_loader->ResponseAddressSpace(),
classic_script_loader->GetContentSecurityPolicy()
? mojo::Clone(classic_script_loader->GetContentSecurityPolicy()
->GetParsedPolicies())
@@ -487,6 +488,7 @@ void ServiceWorkerGlobalScope::DidFetchClassicScript(
void ServiceWorkerGlobalScope::Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) {
// Step 4.5. "Set workerGlobalScope's url to serviceWorker's script url."
@@ -500,6 +502,9 @@ void ServiceWorkerGlobalScope::Initialize(
// script resource's referrer policy."
SetReferrerPolicy(response_referrer_policy);
+ // https://wicg.github.io/cors-rfc1918/#integration-html
+ SetAddressSpace(response_address_space);
+
// This is quoted from the "Content Security Policy" algorithm in the service
// workers spec:
// "Whenever a user agent invokes Run Service Worker algorithm with a service
@@ -510,6 +515,9 @@ void ServiceWorkerGlobalScope::Initialize(
// - If serviceWorker's script resource was delivered with a
// Content-Security-Policy-Report-Only HTTP header containing the value
// policy, the user agent must monitor policy for serviceWorker."
+ //
+ // These should be called after SetAddressSpace() to correctly override the
+ // address space by the "treat-as-public-address" CSP directive.
InitContentSecurityPolicyFromVector(std::move(response_csp));
BindContentSecurityPolicyToExecutionContext();
@@ -550,26 +558,27 @@ void ServiceWorkerGlobalScope::LoadAndRunInstalledClassicScript(
kDoNotSupportReferrerPolicyLegacyKeywords, &referrer_policy);
}
- RunClassicScript(script_url, referrer_policy,
- ParseContentSecurityPolicyHeaders(
- script_data->GetContentSecurityPolicyResponseHeaders()),
- script_data->CreateOriginTrialTokens().get(),
- script_data->TakeSourceText(), script_data->TakeMetaData(),
- stack_id);
+ RunClassicScript(
+ script_url, referrer_policy, script_data->GetResponseAddressSpace(),
+ ParseContentSecurityPolicyHeaders(
+ script_data->GetContentSecurityPolicyResponseHeaders()),
+ script_data->CreateOriginTrialTokens().get(),
+ script_data->TakeSourceText(), script_data->TakeMetaData(), stack_id);
}
// https://w3c.github.io/ServiceWorker/#run-service-worker-algorithm
void ServiceWorkerGlobalScope::RunClassicScript(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens,
const String& source_code,
std::unique_ptr<Vector<uint8_t>> cached_meta_data,
const v8_inspector::V8StackTraceId& stack_id) {
// Step 4.5-4.11 are implemented in Initialize().
- Initialize(response_url, response_referrer_policy, std::move(response_csp),
- response_origin_trial_tokens);
+ Initialize(response_url, response_referrer_policy, response_address_space,
+ std::move(response_csp), response_origin_trial_tokens);
// Step 4.12. "Let evaluationStatus be the result of running the classic
// script script if script is a classic script, otherwise, the result of
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
--- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
+++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
@@ -129,6 +129,7 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
void Initialize(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens) override;
// Fetches and runs the top-level classic worker script.
@@ -400,6 +401,7 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
void RunClassicScript(
const KURL& response_url,
network::mojom::ReferrerPolicy response_referrer_policy,
+ network::mojom::IPAddressSpace response_address_space,
Vector<network::mojom::blink::ContentSecurityPolicyPtr> response_csp,
const Vector<String>* response_origin_trial_tokens,
const String& source_code,
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope_test.cc
@@ -86,6 +86,7 @@ class AudioWorkletGlobalScopeTest : public PageTestBase, public ModuleTestBase {
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(),
nullptr /* worker_clients */, nullptr /* content_settings_client */,
+ window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault,
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_thread_test.cc
@@ -100,6 +100,7 @@ class AudioWorkletThreadTest : public PageTestBase, public ModuleTestBase {
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(),
nullptr /* worker_clients */, nullptr /* content_settings_client */,
+ window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault,
diff --git a/third_party/blink/renderer/modules/worklet/worklet_thread_test_common.cc b/third_party/blink/renderer/modules/worklet/worklet_thread_test_common.cc
--- a/third_party/blink/renderer/modules/worklet/worklet_thread_test_common.cc
+++ b/third_party/blink/renderer/modules/worklet/worklet_thread_test_common.cc
@@ -38,7 +38,7 @@ CreateAnimationAndPaintWorkletThread(
Vector<network::mojom::blink::ContentSecurityPolicyPtr>(),
window->GetReferrerPolicy(), window->GetSecurityOrigin(),
window->IsSecureContext(), window->GetHttpsState(), clients,
- nullptr /* content_settings_client */,
+ nullptr /* content_settings_client */, window->AddressSpace(),
OriginTrialContext::GetInheritedTrialFeatures(window).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */,
mojom::blink::V8CacheOptions::kDefault,
--
2.25.1