| 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 2c24ab8124d9529f8242cbbe431ac03de9836152..a6a929bd7568ed97ef6ab3797c53b616aa129062 100644
|
| --- a/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/MainThreadWorklet.cpp
|
| @@ -94,15 +94,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
|
| @@ -111,13 +110,14 @@ void MainThreadWorklet::FetchAndInvokeScript(const KURL& module_url_record,
|
| // and promise."
|
| // TODO(nhiroki): Pass the remaining parameters (e.g., credentialOptions).
|
| // TODO(nhiroki): Queue a task instead of executing this here.
|
| - GetWorkletGlobalScopeProxy()->FetchAndInvokeScript(module_url_record,
|
| - pending_tasks);
|
| + for (const auto& proxy : global_scope_proxies_)
|
| + proxy->FetchAndInvokeScript(module_url_record, pending_tasks);
|
| }
|
|
|
| void MainThreadWorklet::ContextDestroyed(ExecutionContext* execution_context) {
|
| DCHECK(IsMainThread());
|
| - GetWorkletGlobalScopeProxy()->TerminateWorkletGlobalScope();
|
| + for (const auto& proxy : global_scope_proxies_)
|
| + proxy->TerminateWorkletGlobalScope();
|
| Worklet::ContextDestroyed(execution_context);
|
| }
|
|
|
|
|