summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/workers/experimental/worker_task_queue.cc
diff options
context:
space:
mode:
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.cc27
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) {