summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h')
-rw-r--r--chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h143
1 files changed, 0 insertions, 143 deletions
diff --git a/chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h b/chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h
deleted file mode 100644
index fed347c79a1..00000000000
--- a/chromium/third_party/blink/renderer/platform/scheduler/public/non_main_thread_scheduler.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2015 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.
-
-#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_NON_MAIN_THREAD_SCHEDULER_H_
-#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_NON_MAIN_THREAD_SCHEDULER_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "third_party/blink/public/platform/scheduler/single_thread_idle_task_runner.h"
-#include "third_party/blink/public/platform/scheduler/web_thread_scheduler.h"
-#include "third_party/blink/public/platform/web_thread_type.h"
-#include "third_party/blink/renderer/platform/platform_export.h"
-#include "third_party/blink/renderer/platform/scheduler/base/task_queue.h"
-#include "third_party/blink/renderer/platform/scheduler/child/worker_task_queue.h"
-#include "third_party/blink/renderer/platform/scheduler/common/thread_scheduler_impl.h"
-#include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
-#include "third_party/blink/renderer/platform/scheduler/util/tracing_helper.h"
-#include "third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_helper.h"
-
-namespace blink {
-namespace scheduler {
-class TaskQueueWithTaskType;
-class WorkerSchedulerProxy;
-class WorkerScheduler;
-class TaskQueueThrottler;
-class WakeUpBudgetPool;
-
-// TODO(yutak): Rename this class to NonMainThreadSchedulerImpl and consider
-// changing all non-impl scheduler classes to have only static methods.
-class PLATFORM_EXPORT NonMainThreadScheduler : public ThreadSchedulerImpl {
- public:
- ~NonMainThreadScheduler() override;
-
- static std::unique_ptr<NonMainThreadScheduler> Create(
- WebThreadType thread_type,
- WorkerSchedulerProxy* proxy);
-
- // Same as ThreadScheduler::Current(), but this asserts the caller is on
- // a non-main thread.
- static NonMainThreadScheduler* Current();
-
- // Blink should use NonMainThreadScheduler::DefaultTaskQueue instead of
- // WebThreadScheduler::DefaultTaskRunner.
- virtual scoped_refptr<WorkerTaskQueue> DefaultTaskQueue() = 0;
-
- // Must be called before the scheduler can be used. Does any post construction
- // initialization needed such as initializing idle period detection.
- void Init();
-
- virtual void OnTaskCompleted(
- WorkerTaskQueue* worker_task_queue,
- const base::sequence_manager::TaskQueue::Task& task,
- base::TimeTicks start,
- base::TimeTicks end,
- base::Optional<base::TimeDelta> thread_time) = 0;
-
- // ThreadSchedulerImpl:
- scoped_refptr<base::SingleThreadTaskRunner> ControlTaskRunner() override;
- void RegisterTimeDomain(
- base::sequence_manager::TimeDomain* time_domain) override;
- void UnregisterTimeDomain(
- base::sequence_manager::TimeDomain* time_domain) override;
- base::sequence_manager::TimeDomain* GetActiveTimeDomain() override;
- const base::TickClock* GetTickClock() override;
-
- // ThreadScheduler implementation.
- // TODO(yutak): Some functions are only meaningful in main thread. Move them
- // to MainThreadScheduler.
- void PostIdleTask(const base::Location& location,
- WebThread::IdleTask task) override;
- void PostNonNestableIdleTask(const base::Location& location,
- WebThread::IdleTask task) override;
- scoped_refptr<base::SingleThreadTaskRunner> V8TaskRunner() override;
- scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
- std::unique_ptr<PageScheduler> CreatePageScheduler(
- PageScheduler::Delegate*) override;
- std::unique_ptr<RendererPauseHandle> PauseScheduler() override
- WARN_UNUSED_RESULT;
-
- // Returns TimeTicks::Now() by default.
- base::TimeTicks MonotonicallyIncreasingVirtualTime() override;
-
- NonMainThreadScheduler* AsNonMainThreadScheduler() override { return this; }
-
- // The following virtual methods are defined in *both* WebThreadScheduler
- // and ThreadScheduler, with identical interfaces and semantics. They are
- // overriden in a subclass, effectively implementing the virtual methods
- // in both classes at the same time. This is allowed in C++, as long as
- // there is only one final overrider (i.e. definitions in base classes are
- // not used in instantiated objects, since otherwise they may have multiple
- // definitions of the virtual function in question).
- //
- // virtual void Shutdown();
-
- scoped_refptr<WorkerTaskQueue> CreateTaskRunner();
-
- // TaskQueueThrottler might be null if throttling is not enabled or
- // not supported.
- TaskQueueThrottler* task_queue_throttler() const {
- return task_queue_throttler_.get();
- }
- WakeUpBudgetPool* wake_up_budget_pool() const { return wake_up_budget_pool_; }
-
- protected:
- explicit NonMainThreadScheduler(
- std::unique_ptr<NonMainThreadSchedulerHelper> helper);
-
- friend class WorkerScheduler;
-
- // Each WorkerScheduler should notify NonMainThreadScheduler when it is
- // created or destroyed.
- virtual void RegisterWorkerScheduler(WorkerScheduler* worker_scheduler);
- virtual void UnregisterWorkerScheduler(WorkerScheduler* worker_scheduler);
-
- // Called during Init() for delayed initialization for subclasses.
- virtual void InitImpl() = 0;
-
- // This controller should be initialized before any TraceableVariables
- // because they require one to initialize themselves.
- TraceableVariableController traceable_variable_controller_;
-
- std::unique_ptr<NonMainThreadSchedulerHelper> helper_;
-
- // Worker schedulers associated with this thread.
- std::unordered_set<WorkerScheduler*> worker_schedulers_;
-
- std::unique_ptr<TaskQueueThrottler> task_queue_throttler_;
- // Owned by |task_queue_throttler_|.
- WakeUpBudgetPool* wake_up_budget_pool_ = nullptr;
-
- private:
- static void RunIdleTask(WebThread::IdleTask task, base::TimeTicks deadline);
- scoped_refptr<TaskQueueWithTaskType> v8_task_runner_;
-
- DISALLOW_COPY_AND_ASSIGN(NonMainThreadScheduler);
-};
-
-} // namespace scheduler
-} // namespace blink
-
-#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_NON_MAIN_THREAD_SCHEDULER_H_