| Index: third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| diff --git a/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp b/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| index 43ac12846daf9ddca9a6050301035f5223636844..c9fdce745f04cecfc5c363ca86e816631f820de6 100644
|
| --- a/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| @@ -67,15 +67,14 @@ void MainThreadWorklet::FetchAndInvokeScript(const KURL& module_url_record,
|
| // 10.2: "Add the WorkletGlobalScope to worklet's WorkletGlobalScopes."
|
| // "Depending on the type of worklet the user agent may create additional
|
| // WorkletGlobalScopes at this time."
|
| - // TODO(nhiroki): Create WorkletGlobalScopes at this point.
|
| + while (NeedsToCreateGlobalScope())
|
| + global_scope_proxies_.insert(CreateGlobalScope());
|
| + DCHECK(!global_scope_proxies_.IsEmpty());
|
|
|
| // Step 11: "Let pendingTaskStruct be a new pending tasks struct with counter
|
| // initialized to the length of worklet's WorkletGlobalScopes."
|
| - // TODO(nhiroki): Introduce the concept of "worklet's WorkletGlobalScopes" and
|
| - // use the length of it here.
|
| - constexpr int number_of_global_scopes = 1;
|
| WorkletPendingTasks* pending_tasks =
|
| - new WorkletPendingTasks(number_of_global_scopes, resolver);
|
| + new WorkletPendingTasks(global_scope_proxies_.size(), resolver);
|
|
|
| // Step 12: "For each workletGlobalScope in the worklet's
|
| // WorkletGlobalScopes, queue a task on the workletGlobalScope to fetch and
|
| @@ -83,13 +82,16 @@ void MainThreadWorklet::FetchAndInvokeScript(const KURL& module_url_record,
|
| // moduleResponsesMap, credentialOptions, outsideSettings, pendingTaskStruct,
|
| // and promise."
|
| // TODO(nhiroki): Queue a task instead of executing this here.
|
| - GetWorkletGlobalScopeProxy()->FetchAndInvokeScript(
|
| - module_url_record, credentials_mode, pending_tasks);
|
| + for (const auto& proxy : global_scope_proxies_) {
|
| + proxy->FetchAndInvokeScript(module_url_record, credentials_mode,
|
| + pending_tasks);
|
| + }
|
| }
|
|
|
| void MainThreadWorklet::ContextDestroyed(ExecutionContext* execution_context) {
|
| DCHECK(IsMainThread());
|
| - GetWorkletGlobalScopeProxy()->TerminateWorkletGlobalScope();
|
| + for (const auto& proxy : global_scope_proxies_)
|
| + proxy->TerminateWorkletGlobalScope();
|
| }
|
|
|
| DEFINE_TRACE(MainThreadWorklet) {
|
|
|