diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc b/chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc index faf398bfb77..45c42286143 100644 --- a/chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc +++ b/chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc @@ -39,23 +39,17 @@ WorkerTaskQueue::WorkerTaskQueue(Document* document, TaskType task_type) ScriptPromise WorkerTaskQueue::postFunction( ScriptState* script_state, - const ScriptValue& task, + const ScriptValue& function, AbortSignal* signal, const Vector<ScriptValue>& arguments) { DCHECK(document_->IsContextThread()); - DCHECK(task.IsFunction()); - - ThreadPoolTask* thread_pool_task = new ThreadPoolTask( - ThreadPool::From(*document_), script_state->GetIsolate(), task, arguments, - task_type_); - if (signal) { - signal->AddAlgorithm( - WTF::Bind(&ThreadPoolTask::Cancel, thread_pool_task->GetWeakPtr())); - } - ScriptValue value = thread_pool_task->GetResult(script_state); - DCHECK(value.V8Value()->IsPromise()); + DCHECK(function.IsFunction()); - return ScriptPromise(script_state, value.V8Value()); + Task* task = new Task(ThreadPool::From(*document_), script_state, function, + arguments, task_type_); + if (signal) + signal->AddAlgorithm(WTF::Bind(&Task::cancel, WrapWeakPersistent(task))); + return task->result(script_state); } Task* WorkerTaskQueue::postTask(ScriptState* script_state, @@ -63,11 +57,8 @@ Task* WorkerTaskQueue::postTask(ScriptState* script_state, const Vector<ScriptValue>& arguments) { DCHECK(document_->IsContextThread()); DCHECK(function.IsFunction()); - - ThreadPoolTask* thread_pool_task = new ThreadPoolTask( - ThreadPool::From(*document_), script_state->GetIsolate(), function, - arguments, task_type_); - return new Task(thread_pool_task); + return new Task(ThreadPool::From(*document_), script_state, function, + arguments, task_type_); } void WorkerTaskQueue::Trace(blink::Visitor* visitor) { |