summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc69
1 files changed, 69 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc b/chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc
new file mode 100644
index 00000000000..a6371c7adb4
--- /dev/null
+++ b/chromium/third_party/blink/renderer/core/workers/experimental/thread_pool_thread.cc
@@ -0,0 +1,69 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/workers/experimental/thread_pool_thread.h"
+
+#include "third_party/blink/renderer/core/execution_context/execution_context.h"
+#include "third_party/blink/renderer/core/workers/experimental/task_worklet_global_scope.h"
+#include "third_party/blink/renderer/core/workers/global_scope_creation_params.h"
+#include "third_party/blink/renderer/core/workers/threaded_object_proxy_base.h"
+#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
+#include "third_party/blink/renderer/core/workers/worker_thread.h"
+#include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h"
+#include "third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler.h"
+
+namespace blink {
+
+namespace {
+
+class ThreadPoolWorkerGlobalScope final : public WorkerGlobalScope {
+ public:
+ ThreadPoolWorkerGlobalScope(
+ std::unique_ptr<GlobalScopeCreationParams> creation_params,
+ WorkerThread* thread)
+ : WorkerGlobalScope(std::move(creation_params),
+ thread,
+ CurrentTimeTicks()) {}
+
+ ~ThreadPoolWorkerGlobalScope() override = default;
+
+ // EventTarget
+ const AtomicString& InterfaceName() const override {
+ // TODO(japhet): Replaces this with
+ // EventTargetNames::ThreadPoolWorkerGlobalScope.
+ return event_target_names::kDedicatedWorkerGlobalScope;
+ }
+
+ // WorkerGlobalScope
+ void ImportModuleScript(
+ const KURL& module_url_record,
+ FetchClientSettingsObjectSnapshot* outside_settings_object,
+ network::mojom::FetchCredentialsMode) override {
+ // TODO(japhet): Consider whether modules should be supported.
+ NOTREACHED();
+ }
+
+ void ExceptionThrown(ErrorEvent*) override {}
+};
+
+} // anonymous namespace
+
+ThreadPoolThread::ThreadPoolThread(ExecutionContext* parent_execution_context,
+ ThreadedObjectProxyBase& object_proxy,
+ ThreadBackingPolicy backing_policy)
+ : WorkerThread(object_proxy), backing_policy_(backing_policy) {
+ DCHECK(parent_execution_context);
+ worker_backing_thread_ = WorkerBackingThread::Create(
+ ThreadCreationParams(GetThreadType())
+ .SetFrameOrWorkerScheduler(parent_execution_context->GetScheduler()));
+}
+
+WorkerOrWorkletGlobalScope* ThreadPoolThread::CreateWorkerGlobalScope(
+ std::unique_ptr<GlobalScopeCreationParams> creation_params) {
+ if (backing_policy_ == kWorker)
+ return new ThreadPoolWorkerGlobalScope(std::move(creation_params), this);
+ return new TaskWorkletGlobalScope(std::move(creation_params), this);
+}
+
+} // namespace blink