Commit 6d7b7463 authored by Nate Chapin's avatar Nate Chapin Committed by Commit Bot

ExecutionContext post-migration cleanup - core/workers/

Bug: 1029822
Change-Id: Ib8c0c21b0f4f9b10d69c394366021f4d156cf678
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2108798
Commit-Queue: Nate Chapin <japhet@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarHiroshige Hayashizaki <hiroshige@chromium.org>
Cr-Commit-Position: refs/heads/master@{#761044}
parent 98e342dd
...@@ -22,15 +22,15 @@ LayoutWorklet* LayoutWorklet::From(LocalDOMWindow& window) { ...@@ -22,15 +22,15 @@ LayoutWorklet* LayoutWorklet::From(LocalDOMWindow& window) {
LayoutWorklet* supplement = LayoutWorklet* supplement =
Supplement<LocalDOMWindow>::From<LayoutWorklet>(window); Supplement<LocalDOMWindow>::From<LayoutWorklet>(window);
if (!supplement && window.GetFrame()) { if (!supplement && window.GetFrame()) {
supplement = MakeGarbageCollected<LayoutWorklet>(window.GetFrame()); supplement = MakeGarbageCollected<LayoutWorklet>(window);
ProvideTo(window, supplement); ProvideTo(window, supplement);
} }
return supplement; return supplement;
} }
LayoutWorklet::LayoutWorklet(LocalFrame* frame) LayoutWorklet::LayoutWorklet(LocalDOMWindow& window)
: Worklet(frame->GetDocument()), : Worklet(window),
Supplement<LocalDOMWindow>(*frame->DomWindow()), Supplement<LocalDOMWindow>(window),
pending_layout_registry_(MakeGarbageCollected<PendingLayoutRegistry>()) {} pending_layout_registry_(MakeGarbageCollected<PendingLayoutRegistry>()) {}
LayoutWorklet::~LayoutWorklet() = default; LayoutWorklet::~LayoutWorklet() = default;
......
...@@ -35,7 +35,7 @@ class CORE_EXPORT LayoutWorklet : public Worklet, ...@@ -35,7 +35,7 @@ class CORE_EXPORT LayoutWorklet : public Worklet,
static const size_t kNumGlobalScopes; static const size_t kNumGlobalScopes;
static LayoutWorklet* From(LocalDOMWindow&); static LayoutWorklet* From(LocalDOMWindow&);
explicit LayoutWorklet(LocalFrame*); explicit LayoutWorklet(LocalDOMWindow&);
~LayoutWorklet() override; ~LayoutWorklet() override;
typedef HeapHashMap<String, Member<DocumentLayoutDefinition>> typedef HeapHashMap<String, Member<DocumentLayoutDefinition>>
......
...@@ -22,8 +22,8 @@ class LayoutWorkletTest : public PageTestBase { ...@@ -22,8 +22,8 @@ class LayoutWorkletTest : public PageTestBase {
public: public:
void SetUp() override { void SetUp() override {
PageTestBase::SetUp(IntSize()); PageTestBase::SetUp(IntSize());
layout_worklet_ = MakeGarbageCollected<LayoutWorklet>( layout_worklet_ =
GetDocument().domWindow()->GetFrame()); MakeGarbageCollected<LayoutWorklet>(*GetDocument().domWindow());
proxy_ = layout_worklet_->CreateGlobalScope(); proxy_ = layout_worklet_->CreateGlobalScope();
} }
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/fetch/request.h" #include "third_party/blink/renderer/core/fetch/request.h"
#include "third_party/blink/renderer/core/fileapi/public_url_manager.h" #include "third_party/blink/renderer/core/fileapi/public_url_manager.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/local_frame_client.h" #include "third_party/blink/renderer/core/frame/local_frame_client.h"
#include "third_party/blink/renderer/core/frame/web_frame_widget_base.h" #include "third_party/blink/renderer/core/frame/web_frame_widget_base.h"
...@@ -255,12 +256,12 @@ void DedicatedWorker::terminate() { ...@@ -255,12 +256,12 @@ void DedicatedWorker::terminate() {
BeginFrameProviderParams DedicatedWorker::CreateBeginFrameProviderParams() { BeginFrameProviderParams DedicatedWorker::CreateBeginFrameProviderParams() {
DCHECK(GetExecutionContext()->IsContextThread()); DCHECK(GetExecutionContext()->IsContextThread());
// If we don't have a frame or we are not in Document, some of the SinkIds // If we don't have a frame or we are not in window, some of the SinkIds
// won't be initialized. If that's the case, the Worker will initialize it by // won't be initialized. If that's the case, the Worker will initialize it by
// itself later. // itself later.
BeginFrameProviderParams begin_frame_provider_params; BeginFrameProviderParams begin_frame_provider_params;
if (auto* document = Document::DynamicFrom(GetExecutionContext())) { if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
LocalFrame* frame = document->GetFrame(); LocalFrame* frame = window->GetFrame();
if (frame) { if (frame) {
WebFrameWidgetBase* widget = WebFrameWidgetBase* widget =
WebLocalFrameImpl::FromFrame(frame)->LocalRootFrameWidget(); WebLocalFrameImpl::FromFrame(frame)->LocalRootFrameWidget();
...@@ -322,9 +323,8 @@ void DedicatedWorker::DispatchErrorEventForScriptFetchFailure() { ...@@ -322,9 +323,8 @@ void DedicatedWorker::DispatchErrorEventForScriptFetchFailure() {
std::unique_ptr<WebContentSettingsClient> std::unique_ptr<WebContentSettingsClient>
DedicatedWorker::CreateWebContentSettingsClient() { DedicatedWorker::CreateWebContentSettingsClient() {
std::unique_ptr<WebContentSettingsClient> content_settings_client; std::unique_ptr<WebContentSettingsClient> content_settings_client;
if (auto* document = Document::DynamicFrom(GetExecutionContext())) { if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
LocalFrame* frame = document->GetFrame(); return window->GetFrame()->Client()->CreateWorkerContentSettingsClient();
return frame->Client()->CreateWorkerContentSettingsClient();
} else if (GetExecutionContext()->IsWorkerGlobalScope()) { } else if (GetExecutionContext()->IsWorkerGlobalScope()) {
WebContentSettingsClient* web_worker_content_settings_client = WebContentSettingsClient* web_worker_content_settings_client =
To<WorkerGlobalScope>(GetExecutionContext())->ContentSettingsClient(); To<WorkerGlobalScope>(GetExecutionContext())->ContentSettingsClient();
...@@ -390,14 +390,14 @@ DedicatedWorker::CreateGlobalScopeCreationParams( ...@@ -390,14 +390,14 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
base::UnguessableToken parent_devtools_token; base::UnguessableToken parent_devtools_token;
std::unique_ptr<WorkerSettings> settings; std::unique_ptr<WorkerSettings> settings;
UserAgentMetadata ua_metadata; UserAgentMetadata ua_metadata;
if (auto* document = Document::DynamicFrom(GetExecutionContext())) { if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
auto* frame = document->GetFrame(); auto* frame = window->GetFrame();
if (frame) { if (frame) {
parent_devtools_token = frame->GetDevToolsFrameToken(); parent_devtools_token = frame->GetDevToolsFrameToken();
ua_metadata = frame->Loader().UserAgentMetadata().value_or( ua_metadata = frame->Loader().UserAgentMetadata().value_or(
blink::UserAgentMetadata()); blink::UserAgentMetadata());
} }
settings = std::make_unique<WorkerSettings>(document->GetSettings()); settings = std::make_unique<WorkerSettings>(frame->GetSettings());
} else { } else {
WorkerGlobalScope* worker_global_scope = WorkerGlobalScope* worker_global_scope =
To<WorkerGlobalScope>(GetExecutionContext()); To<WorkerGlobalScope>(GetExecutionContext());
...@@ -431,10 +431,10 @@ DedicatedWorker::CreateGlobalScopeCreationParams( ...@@ -431,10 +431,10 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
scoped_refptr<WebWorkerFetchContext> scoped_refptr<WebWorkerFetchContext>
DedicatedWorker::CreateWebWorkerFetchContext() { DedicatedWorker::CreateWebWorkerFetchContext() {
// This worker is being created by the document. // This worker is being created by the window.
if (auto* document = Document::DynamicFrom(GetExecutionContext())) { if (auto* window = DynamicTo<LocalDOMWindow>(GetExecutionContext())) {
scoped_refptr<WebWorkerFetchContext> web_worker_fetch_context; scoped_refptr<WebWorkerFetchContext> web_worker_fetch_context;
LocalFrame* frame = document->GetFrame(); LocalFrame* frame = window->GetFrame();
if (base::FeatureList::IsEnabled(features::kPlzDedicatedWorker)) { if (base::FeatureList::IsEnabled(features::kPlzDedicatedWorker)) {
web_worker_fetch_context = web_worker_fetch_context =
frame->Client()->CreateWorkerFetchContextForPlzDedicatedWorker( frame->Client()->CreateWorkerFetchContextForPlzDedicatedWorker(
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h" #include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_cache_options.h" #include "third_party/blink/renderer/bindings/core/v8/v8_cache_options.h"
#include "third_party/blink/renderer/core/events/message_event.h" #include "third_party/blink/renderer/core/events/message_event.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/inspector/console_message_storage.h" #include "third_party/blink/renderer/core/inspector/console_message_storage.h"
#include "third_party/blink/renderer/core/inspector/thread_debugger.h" #include "third_party/blink/renderer/core/inspector/thread_debugger.h"
#include "third_party/blink/renderer/core/script/script.h" #include "third_party/blink/renderer/core/script/script.h"
...@@ -128,7 +129,7 @@ class DedicatedWorkerMessagingProxyForTest ...@@ -128,7 +129,7 @@ class DedicatedWorkerMessagingProxyForTest
{"contentSecurityPolicy", {"contentSecurityPolicy",
network::mojom::ContentSecurityPolicyType::kReport}}; network::mojom::ContentSecurityPolicyType::kReport}};
auto worker_settings = std::make_unique<WorkerSettings>( auto worker_settings = std::make_unique<WorkerSettings>(
Document::From(GetExecutionContext())->GetSettings()); To<LocalDOMWindow>(GetExecutionContext())->GetFrame()->GetSettings());
InitializeWorkerThread( InitializeWorkerThread(
std::make_unique<GlobalScopeCreationParams>( std::make_unique<GlobalScopeCreationParams>(
script_url, mojom::ScriptType::kClassic, "fake global scope name", script_url, mojom::ScriptType::kClassic, "fake global scope name",
...@@ -175,7 +176,7 @@ class DedicatedWorkerTest : public PageTestBase { ...@@ -175,7 +176,7 @@ class DedicatedWorkerTest : public PageTestBase {
PageTestBase::SetUp(IntSize()); PageTestBase::SetUp(IntSize());
worker_messaging_proxy_ = worker_messaging_proxy_ =
MakeGarbageCollected<DedicatedWorkerMessagingProxyForTest>( MakeGarbageCollected<DedicatedWorkerMessagingProxyForTest>(
GetDocument().ToExecutionContext()); GetFrame().DomWindow());
} }
void TearDown() override { void TearDown() override {
......
...@@ -74,7 +74,7 @@ class MainThreadWorkletTest : public PageTestBase { ...@@ -74,7 +74,7 @@ class MainThreadWorkletTest : public PageTestBase {
document->IsSecureContext(), document->GetHttpsState(), document->IsSecureContext(), document->GetHttpsState(),
nullptr /* worker_clients */, nullptr /* content_settings_client */, nullptr /* worker_clients */, nullptr /* content_settings_client */,
document->GetSecurityContext().AddressSpace(), document->GetSecurityContext().AddressSpace(),
OriginTrialContext::GetTokens(document->ToExecutionContext()).get(), OriginTrialContext::GetTokens(document->GetExecutionContext()).get(),
base::UnguessableToken::Create(), nullptr /* worker_settings */, base::UnguessableToken::Create(), nullptr /* worker_settings */,
kV8CacheOptionsDefault, kV8CacheOptionsDefault,
MakeGarbageCollected<WorkletModuleResponsesMap>()); MakeGarbageCollected<WorkletModuleResponsesMap>());
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/fetch/request.h" #include "third_party/blink/renderer/core/fetch/request.h"
#include "third_party/blink/renderer/core/fileapi/public_url_manager.h" #include "third_party/blink/renderer/core/fileapi/public_url_manager.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/messaging/message_channel.h" #include "third_party/blink/renderer/core/messaging/message_channel.h"
#include "third_party/blink/renderer/core/messaging/message_port.h" #include "third_party/blink/renderer/core/messaging/message_port.h"
#include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/core/probe/core_probes.h"
...@@ -77,11 +78,10 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context, ...@@ -77,11 +78,10 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context,
DCHECK(IsMainThread()); DCHECK(IsMainThread());
// We don't currently support nested workers, so workers can only be created // We don't currently support nested workers, so workers can only be created
// from documents. // from windows.
Document* document = Document::From(context); LocalDOMWindow* window = To<LocalDOMWindow>(context);
DCHECK(document);
RecordSharedWorkerUsage(document); RecordSharedWorkerUsage(window->document());
SharedWorker* worker = MakeGarbageCollected<SharedWorker>(context); SharedWorker* worker = MakeGarbageCollected<SharedWorker>(context);
worker->UpdateStateIfNeeded(); worker->UpdateStateIfNeeded();
...@@ -90,13 +90,13 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context, ...@@ -90,13 +90,13 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context,
worker->port_ = channel->port1(); worker->port_ = channel->port1();
MessagePortChannel remote_port = channel->port2()->Disentangle(); MessagePortChannel remote_port = channel->port2()->Disentangle();
if (!document->GetSecurityOrigin()->CanAccessSharedWorkers()) { if (!window->GetSecurityOrigin()->CanAccessSharedWorkers()) {
exception_state.ThrowSecurityError( exception_state.ThrowSecurityError(
"Access to shared workers is denied to origin '" + "Access to shared workers is denied to origin '" +
document->GetSecurityOrigin()->ToString() + "'."); window->GetSecurityOrigin()->ToString() + "'.");
return nullptr; return nullptr;
} else if (document->GetSecurityOrigin()->IsLocal()) { } else if (window->GetSecurityOrigin()->IsLocal()) {
UseCounter::Count(document, WebFeature::kFileAccessedSharedWorker); UseCounter::Count(window, WebFeature::kFileAccessedSharedWorker);
} }
KURL script_url = ResolveURL(context, url, exception_state, KURL script_url = ResolveURL(context, url, exception_state,
...@@ -106,7 +106,7 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context, ...@@ -106,7 +106,7 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context,
mojo::PendingRemote<mojom::blink::BlobURLToken> blob_url_token; mojo::PendingRemote<mojom::blink::BlobURLToken> blob_url_token;
if (script_url.ProtocolIs("blob")) { if (script_url.ProtocolIs("blob")) {
document->GetPublicURLManager().Resolve( window->GetPublicURLManager().Resolve(
script_url, blob_url_token.InitWithNewPipeAndPassReceiver()); script_url, blob_url_token.InitWithNewPipeAndPassReceiver());
} }
...@@ -136,13 +136,13 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context, ...@@ -136,13 +136,13 @@ SharedWorker* SharedWorker::Create(ExecutionContext* context,
} }
DCHECK(!options->name.IsNull()); DCHECK(!options->name.IsNull());
if (options->type == mojom::blink::ScriptType::kClassic) if (options->type == mojom::blink::ScriptType::kClassic)
UseCounter::Count(document, WebFeature::kClassicSharedWorker); UseCounter::Count(window, WebFeature::kClassicSharedWorker);
else if (options->type == mojom::blink::ScriptType::kModule) else if (options->type == mojom::blink::ScriptType::kModule)
UseCounter::Count(document, WebFeature::kModuleSharedWorker); UseCounter::Count(window, WebFeature::kModuleSharedWorker);
SharedWorkerClientHolder::From(*document)->Connect( SharedWorkerClientHolder::From(*window->document())
worker, std::move(remote_port), script_url, std::move(blob_url_token), ->Connect(worker, std::move(remote_port), script_url,
std::move(options)); std::move(blob_url_token), std::move(options));
return worker; return worker;
} }
......
...@@ -72,8 +72,8 @@ SharedWorkerClientHolder* SharedWorkerClientHolder::From(Document& document) { ...@@ -72,8 +72,8 @@ SharedWorkerClientHolder* SharedWorkerClientHolder::From(Document& document) {
} }
SharedWorkerClientHolder::SharedWorkerClientHolder(Document& document) SharedWorkerClientHolder::SharedWorkerClientHolder(Document& document)
: connector_(document.ToExecutionContext()), : connector_(document.GetExecutionContext()),
client_receivers_(document.ToExecutionContext()), client_receivers_(document.GetExecutionContext()),
task_runner_(document.GetTaskRunner(blink::TaskType::kDOMManipulation)) { task_runner_(document.GetTaskRunner(blink::TaskType::kDOMManipulation)) {
DCHECK(IsMainThread()); DCHECK(IsMainThread());
document.GetBrowserInterfaceBroker().GetInterface( document.GetBrowserInterfaceBroker().GetInterface(
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/execution_context/security_context.h" #include "third_party/blink/renderer/core/execution_context/security_context.h"
#include "third_party/blink/renderer/core/frame/csp/content_security_policy.h" #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame_client.h" #include "third_party/blink/renderer/core/frame/local_frame_client.h"
#include "third_party/blink/renderer/core/inspector/thread_debugger.h" #include "third_party/blink/renderer/core/inspector/thread_debugger.h"
#include "third_party/blink/renderer/core/loader/worker_fetch_context.h" #include "third_party/blink/renderer/core/loader/worker_fetch_context.h"
...@@ -51,28 +52,28 @@ void ThreadedWorkletMessagingProxy::Initialize( ...@@ -51,28 +52,28 @@ void ThreadedWorkletMessagingProxy::Initialize(
// LayoutWorklet and PaintWorklet. // LayoutWorklet and PaintWorklet.
const String global_scope_name = g_empty_string; const String global_scope_name = g_empty_string;
Document* document = Document::From(GetExecutionContext()); LocalDOMWindow* window = To<LocalDOMWindow>(GetExecutionContext());
ContentSecurityPolicy* csp = document->GetContentSecurityPolicy(); ContentSecurityPolicy* csp = window->GetContentSecurityPolicy();
DCHECK(csp); DCHECK(csp);
auto global_scope_creation_params = auto global_scope_creation_params =
std::make_unique<GlobalScopeCreationParams>( std::make_unique<GlobalScopeCreationParams>(
document->Url(), mojom::blink::ScriptType::kModule, global_scope_name, window->Url(), mojom::blink::ScriptType::kModule, global_scope_name,
document->UserAgent(), window->UserAgent(),
document->GetFrame()->Client()->UserAgentMetadata(), window->GetFrame()->Client()->UserAgentMetadata(),
document->GetFrame()->Client()->CreateWorkerFetchContext(), window->GetFrame()->Client()->CreateWorkerFetchContext(),
csp->Headers(), document->GetReferrerPolicy(), csp->Headers(), window->GetReferrerPolicy(),
document->GetSecurityOrigin(), document->IsSecureContext(), window->GetSecurityOrigin(), window->IsSecureContext(),
document->GetHttpsState(), worker_clients, window->GetHttpsState(), worker_clients,
document->GetFrame()->Client()->CreateWorkerContentSettingsClient(), window->GetFrame()->Client()->CreateWorkerContentSettingsClient(),
document->GetSecurityContext().AddressSpace(), window->GetSecurityContext().AddressSpace(),
OriginTrialContext::GetTokens(document->ToExecutionContext()).get(), OriginTrialContext::GetTokens(window).get(),
base::UnguessableToken::Create(), base::UnguessableToken::Create(),
std::make_unique<WorkerSettings>(document->GetSettings()), std::make_unique<WorkerSettings>(window->GetFrame()->GetSettings()),
kV8CacheOptionsDefault, module_responses_map, kV8CacheOptionsDefault, module_responses_map,
mojo::NullRemote() /* browser_interface_broker */, mojo::NullRemote() /* browser_interface_broker */,
BeginFrameProviderParams(), nullptr /* parent_feature_policy */, BeginFrameProviderParams(), nullptr /* parent_feature_policy */,
document->ToExecutionContext()->GetAgentClusterID()); window->GetAgentClusterID());
// Worklets share the pre-initialized backing thread so that we don't have to // Worklets share the pre-initialized backing thread so that we don't have to
// specify the backing thread startup data. // specify the backing thread startup data.
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_cache_options.h" #include "third_party/blink/renderer/bindings/core/v8/v8_cache_options.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/inspector/console_message_storage.h" #include "third_party/blink/renderer/core/inspector/console_message_storage.h"
#include "third_party/blink/renderer/core/inspector/thread_debugger.h" #include "third_party/blink/renderer/core/inspector/thread_debugger.h"
#include "third_party/blink/renderer/core/origin_trials/origin_trial_context.h" #include "third_party/blink/renderer/core/origin_trials/origin_trial_context.h"
...@@ -192,22 +193,26 @@ class ThreadedWorkletMessagingProxyForTest ...@@ -192,22 +193,26 @@ class ThreadedWorkletMessagingProxyForTest
~ThreadedWorkletMessagingProxyForTest() override = default; ~ThreadedWorkletMessagingProxyForTest() override = default;
void Start() { void Start() {
Document* document = Document::From(GetExecutionContext());
std::unique_ptr<Vector<char>> cached_meta_data = nullptr; std::unique_ptr<Vector<char>> cached_meta_data = nullptr;
WorkerClients* worker_clients = nullptr; WorkerClients* worker_clients = nullptr;
std::unique_ptr<WorkerSettings> worker_settings = nullptr; std::unique_ptr<WorkerSettings> worker_settings = nullptr;
InitializeWorkerThread( InitializeWorkerThread(
std::make_unique<GlobalScopeCreationParams>( std::make_unique<GlobalScopeCreationParams>(
document->Url(), mojom::blink::ScriptType::kModule, GetExecutionContext()->Url(), mojom::blink::ScriptType::kModule,
"threaded_worklet", document->UserAgent(), "threaded_worklet", GetExecutionContext()->UserAgent(),
document->GetFrame()->Loader().UserAgentMetadata(), To<LocalDOMWindow>(GetExecutionContext())
->GetFrame()
->Loader()
.UserAgentMetadata(),
nullptr /* web_worker_fetch_context */, nullptr /* web_worker_fetch_context */,
document->GetContentSecurityPolicy()->Headers(), GetExecutionContext()->GetContentSecurityPolicy()->Headers(),
document->GetReferrerPolicy(), document->GetSecurityOrigin(), GetExecutionContext()->GetReferrerPolicy(),
document->IsSecureContext(), document->GetHttpsState(), GetExecutionContext()->GetSecurityOrigin(),
worker_clients, nullptr /* content_settings_client */, GetExecutionContext()->IsSecureContext(),
document->GetSecurityContext().AddressSpace(), GetExecutionContext()->GetHttpsState(), worker_clients,
OriginTrialContext::GetTokens(document->ToExecutionContext()).get(), nullptr /* content_settings_client */,
GetExecutionContext()->GetSecurityContext().AddressSpace(),
OriginTrialContext::GetTokens(GetExecutionContext()).get(),
base::UnguessableToken::Create(), std::move(worker_settings), base::UnguessableToken::Create(), std::move(worker_settings),
kV8CacheOptionsDefault, kV8CacheOptionsDefault,
MakeGarbageCollected<WorkletModuleResponsesMap>()), MakeGarbageCollected<WorkletModuleResponsesMap>()),
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
#include "third_party/blink/public/platform/web_url_request.h" #include "third_party/blink/public/platform/web_url_request.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_worklet_options.h" #include "third_party/blink/renderer/bindings/core/v8/v8_worklet_options.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h" #include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/fetch/request.h" #include "third_party/blink/renderer/core/fetch/request.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/loader/worker_resource_timing_notifier_impl.h" #include "third_party/blink/renderer/core/loader/worker_resource_timing_notifier_impl.h"
#include "third_party/blink/renderer/core/workers/worklet_pending_tasks.h" #include "third_party/blink/renderer/core/workers/worklet_pending_tasks.h"
#include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap.h"
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
namespace blink { namespace blink {
Worklet::Worklet(Document* document) Worklet::Worklet(LocalDOMWindow& window)
: ExecutionContextLifecycleObserver(document), : ExecutionContextLifecycleObserver(&window),
module_responses_map_(MakeGarbageCollected<WorkletModuleResponsesMap>()) { module_responses_map_(MakeGarbageCollected<WorkletModuleResponsesMap>()) {
DCHECK(IsMainThread()); DCHECK(IsMainThread());
} }
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace blink { namespace blink {
class Document; class LocalDOMWindow;
class WorkletOptions; class WorkletOptions;
// This is the base implementation of Worklet interface defined in the spec: // This is the base implementation of Worklet interface defined in the spec:
...@@ -54,7 +54,7 @@ class CORE_EXPORT Worklet : public ScriptWrappable, ...@@ -54,7 +54,7 @@ class CORE_EXPORT Worklet : public ScriptWrappable,
void Trace(Visitor*) override; void Trace(Visitor*) override;
protected: protected:
explicit Worklet(Document*); explicit Worklet(LocalDOMWindow&);
// Returns one of available global scopes. // Returns one of available global scopes.
WorkletGlobalScopeProxy* FindAvailableGlobalScope(); WorkletGlobalScopeProxy* FindAvailableGlobalScope();
......
...@@ -22,8 +22,8 @@ int NextId() { ...@@ -22,8 +22,8 @@ int NextId() {
namespace blink { namespace blink {
AnimationWorklet::AnimationWorklet(Document* document) AnimationWorklet::AnimationWorklet(LocalDOMWindow& window)
: Worklet(document), worklet_id_(NextId()), last_animation_id_(0) {} : Worklet(window), worklet_id_(NextId()), last_animation_id_(0) {}
AnimationWorklet::~AnimationWorklet() = default; AnimationWorklet::~AnimationWorklet() = default;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
namespace blink { namespace blink {
class Document; class LocalDOMWindow;
// Represents the animation worklet on the main thread. All the logic for // Represents the animation worklet on the main thread. All the logic for
// loading a new source module is implemented in its parent class |Worklet|. The // loading a new source module is implemented in its parent class |Worklet|. The
...@@ -23,7 +23,7 @@ class Document; ...@@ -23,7 +23,7 @@ class Document;
// corresponding |AnimationWorkletGlobalScope| on the worklet thread. // corresponding |AnimationWorkletGlobalScope| on the worklet thread.
class MODULES_EXPORT AnimationWorklet final : public Worklet { class MODULES_EXPORT AnimationWorklet final : public Worklet {
public: public:
explicit AnimationWorklet(Document*); explicit AnimationWorklet(LocalDOMWindow&);
~AnimationWorklet() override; ~AnimationWorklet() override;
WorkletAnimationId NextWorkletAnimationId(); WorkletAnimationId NextWorkletAnimationId();
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "third_party/blink/renderer/modules/animationworklet/css_animation_worklet.h" #include "third_party/blink/renderer/modules/animationworklet/css_animation_worklet.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/frame/local_frame.h"
...@@ -45,16 +44,15 @@ CSSAnimationWorklet& CSSAnimationWorklet::From(LocalDOMWindow& window) { ...@@ -45,16 +44,15 @@ CSSAnimationWorklet& CSSAnimationWorklet::From(LocalDOMWindow& window) {
CSSAnimationWorklet* supplement = CSSAnimationWorklet* supplement =
Supplement<LocalDOMWindow>::From<CSSAnimationWorklet>(window); Supplement<LocalDOMWindow>::From<CSSAnimationWorklet>(window);
if (!supplement) { if (!supplement) {
supplement = MakeGarbageCollected<CSSAnimationWorklet>( supplement = MakeGarbageCollected<CSSAnimationWorklet>(window);
window.GetFrame()->GetDocument());
ProvideTo(window, supplement); ProvideTo(window, supplement);
} }
return *supplement; return *supplement;
} }
CSSAnimationWorklet::CSSAnimationWorklet(Document* document) CSSAnimationWorklet::CSSAnimationWorklet(LocalDOMWindow& window)
: ExecutionContextLifecycleObserver(document), : ExecutionContextLifecycleObserver(&window),
animation_worklet_(MakeGarbageCollected<AnimationWorklet>(document)) { animation_worklet_(MakeGarbageCollected<AnimationWorklet>(window)) {
DCHECK(GetExecutionContext()); DCHECK(GetExecutionContext());
} }
......
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
namespace blink { namespace blink {
class Document;
class MODULES_EXPORT CSSAnimationWorklet final class MODULES_EXPORT CSSAnimationWorklet final
: public GarbageCollected<CSSAnimationWorklet>, : public GarbageCollected<CSSAnimationWorklet>,
public Supplement<LocalDOMWindow>, public Supplement<LocalDOMWindow>,
...@@ -27,7 +25,7 @@ class MODULES_EXPORT CSSAnimationWorklet final ...@@ -27,7 +25,7 @@ class MODULES_EXPORT CSSAnimationWorklet final
static AnimationWorklet* animationWorklet(ScriptState*); static AnimationWorklet* animationWorklet(ScriptState*);
explicit CSSAnimationWorklet(Document*); explicit CSSAnimationWorklet(LocalDOMWindow&);
void ContextDestroyed() override; void ContextDestroyed() override;
......
...@@ -38,15 +38,15 @@ PaintWorklet* PaintWorklet::From(LocalDOMWindow& window) { ...@@ -38,15 +38,15 @@ PaintWorklet* PaintWorklet::From(LocalDOMWindow& window) {
PaintWorklet* supplement = PaintWorklet* supplement =
Supplement<LocalDOMWindow>::From<PaintWorklet>(window); Supplement<LocalDOMWindow>::From<PaintWorklet>(window);
if (!supplement && window.GetFrame()) { if (!supplement && window.GetFrame()) {
supplement = MakeGarbageCollected<PaintWorklet>(window.GetFrame()); supplement = MakeGarbageCollected<PaintWorklet>(window);
ProvideTo(window, supplement); ProvideTo(window, supplement);
} }
return supplement; return supplement;
} }
PaintWorklet::PaintWorklet(LocalFrame* frame) PaintWorklet::PaintWorklet(LocalDOMWindow& window)
: Worklet(frame->GetDocument()), : Worklet(window),
Supplement<LocalDOMWindow>(*frame->DomWindow()), Supplement<LocalDOMWindow>(window),
pending_generator_registry_( pending_generator_registry_(
MakeGarbageCollected<PaintWorkletPendingGeneratorRegistry>()), MakeGarbageCollected<PaintWorkletPendingGeneratorRegistry>()),
worklet_id_(NextId()), worklet_id_(NextId()),
......
...@@ -34,7 +34,7 @@ class MODULES_EXPORT PaintWorklet : public Worklet, ...@@ -34,7 +34,7 @@ class MODULES_EXPORT PaintWorklet : public Worklet,
static const wtf_size_t kNumGlobalScopesPerThread; static const wtf_size_t kNumGlobalScopesPerThread;
static PaintWorklet* From(LocalDOMWindow&); static PaintWorklet* From(LocalDOMWindow&);
explicit PaintWorklet(LocalFrame*); explicit PaintWorklet(LocalDOMWindow&);
~PaintWorklet() override; ~PaintWorklet() override;
void AddPendingGenerator(const String& name, CSSPaintImageGeneratorImpl*); void AddPendingGenerator(const String& name, CSSPaintImageGeneratorImpl*);
......
...@@ -55,7 +55,8 @@ class PaintWorkletProxyClientTest : public RenderingTest { ...@@ -55,7 +55,8 @@ class PaintWorkletProxyClientTest : public RenderingTest {
void SetUp() override { void SetUp() override {
RenderingTest::SetUp(); RenderingTest::SetUp();
paint_worklet_ = MakeGarbageCollected<PaintWorklet>(&GetFrame()); paint_worklet_ =
MakeGarbageCollected<PaintWorklet>(*GetFrame().DomWindow());
dispatcher_ = std::make_unique<PaintWorkletPaintDispatcher>(); dispatcher_ = std::make_unique<PaintWorkletPaintDispatcher>();
fake_compositor_thread_runner_ = base::MakeRefCounted<FakeTaskRunner>(); fake_compositor_thread_runner_ = base::MakeRefCounted<FakeTaskRunner>();
proxy_client_ = MakeGarbageCollected<PaintWorkletProxyClient>( proxy_client_ = MakeGarbageCollected<PaintWorkletProxyClient>(
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
namespace blink { namespace blink {
class TestPaintWorklet : public PaintWorklet { class TestPaintWorklet : public PaintWorklet {
public: public:
explicit TestPaintWorklet(LocalFrame* frame) : PaintWorklet(frame) { explicit TestPaintWorklet(LocalDOMWindow& window) : PaintWorklet(window) {
ResetIsPaintOffThreadForTesting(); ResetIsPaintOffThreadForTesting();
} }
...@@ -51,8 +51,8 @@ class PaintWorkletTest : public PageTestBase { ...@@ -51,8 +51,8 @@ class PaintWorkletTest : public PageTestBase {
public: public:
void SetUp() override { void SetUp() override {
PageTestBase::SetUp(IntSize()); PageTestBase::SetUp(IntSize());
test_paint_worklet_ = MakeGarbageCollected<TestPaintWorklet>( test_paint_worklet_ =
GetDocument().domWindow()->GetFrame()); MakeGarbageCollected<TestPaintWorklet>(*GetDocument().domWindow());
proxy_ = test_paint_worklet_->CreateGlobalScope(); proxy_ = test_paint_worklet_->CreateGlobalScope();
} }
...@@ -304,7 +304,7 @@ TEST_P(MainOrOffThreadPaintWorkletTest, ConsistentGlobalScopeOnMainThread) { ...@@ -304,7 +304,7 @@ TEST_P(MainOrOffThreadPaintWorkletTest, ConsistentGlobalScopeOnMainThread) {
TEST_P(MainOrOffThreadPaintWorkletTest, AllGlobalScopesMustBeCreated) { TEST_P(MainOrOffThreadPaintWorkletTest, AllGlobalScopesMustBeCreated) {
PaintWorklet* paint_worklet_to_test = PaintWorklet* paint_worklet_to_test =
MakeGarbageCollected<PaintWorklet>(&GetFrame()); MakeGarbageCollected<PaintWorklet>(*GetFrame().DomWindow());
paint_worklet_to_test->ResetIsPaintOffThreadForTesting(); paint_worklet_to_test->ResetIsPaintOffThreadForTesting();
EXPECT_TRUE(paint_worklet_to_test->GetGlobalScopesForTesting().IsEmpty()); EXPECT_TRUE(paint_worklet_to_test->GetGlobalScopesForTesting().IsEmpty());
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" #include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
#include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/workers/worker_clients.h" #include "third_party/blink/renderer/core/workers/worker_clients.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_messaging_proxy.h" #include "third_party/blink/renderer/modules/webaudio/audio_worklet_messaging_proxy.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_node.h" #include "third_party/blink/renderer/modules/webaudio/audio_worklet_node.h"
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
namespace blink { namespace blink {
AudioWorklet::AudioWorklet(BaseAudioContext* context) AudioWorklet::AudioWorklet(BaseAudioContext* context)
: Worklet(Document::From(context->GetExecutionContext())), : Worklet(*To<LocalDOMWindow>(context->GetExecutionContext())),
context_(context) {} context_(context) {}
void AudioWorklet::CreateProcessor( void AudioWorklet::CreateProcessor(
......
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