| Index: third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| index 35c20d8fae12d01d0d2445fcd25b548d1aa2ecde..dbfc73ef79be4c1ca44deb429f80fb8e79036f1d 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.cc
|
| @@ -9,29 +9,135 @@
|
| #include "base/callback.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/threading/thread.h"
|
| -#include "platform/scheduler/child/scheduler_helper.h"
|
| -#include "platform/scheduler/child/scheduler_tqm_delegate.h"
|
| -#include "platform/wtf/PtrUtil.h"
|
|
|
| namespace blink {
|
| namespace scheduler {
|
|
|
| -CompositorWorkerScheduler::CompositorWorkerScheduler(
|
| - base::Thread* thread,
|
| - scoped_refptr<SchedulerTqmDelegate> main_task_runner)
|
| - : WorkerScheduler(WTF::MakeUnique<SchedulerHelper>(
|
| - main_task_runner,
|
| - "compositor.scheduler",
|
| - TRACE_DISABLED_BY_DEFAULT("compositor.scheduler"),
|
| - TRACE_DISABLED_BY_DEFAULT("compositor.scheduler.debug"))),
|
| - thread_(thread) {}
|
| +// TODO(scheduler-dev): Get rid of this asap!
|
| +namespace {
|
| +class CompositorWorkerTaskRunnerWrapper : public TaskQueue {
|
| + public:
|
| + explicit CompositorWorkerTaskRunnerWrapper(
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
| + : task_runner_(task_runner) {}
|
| +
|
| + // TaskQueue implementation:
|
| + void UnregisterTaskQueue() override { NOTREACHED(); }
|
| +
|
| + bool RunsTasksOnCurrentThread() const override {
|
| + return task_runner_->RunsTasksOnCurrentThread();
|
| + }
|
| +
|
| + bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| + base::OnceClosure task,
|
| + base::TimeDelta delay) override {
|
| + return task_runner_->PostDelayedTask(from_here, std::move(task), delay);
|
| + }
|
| +
|
| + bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
|
| + base::OnceClosure task,
|
| + base::TimeDelta delay) override {
|
| + return task_runner_->PostNonNestableDelayedTask(from_here, std::move(task),
|
| + delay);
|
| + }
|
| +
|
| + std::unique_ptr<QueueEnabledVoter> CreateQueueEnabledVoter() override {
|
| + NOTREACHED();
|
| + return nullptr;
|
| + }
|
| +
|
| + void InsertFence(InsertFencePosition position) override { NOTREACHED(); }
|
| +
|
| + void RemoveFence() override { NOTREACHED(); }
|
| +
|
| + bool BlockedByFence() const override {
|
| + NOTREACHED();
|
| + return false;
|
| + }
|
| +
|
| + bool IsQueueEnabled() const override {
|
| + NOTREACHED();
|
| + return true;
|
| + }
|
| +
|
| + bool IsEmpty() const override {
|
| + NOTREACHED();
|
| + return false;
|
| + };
|
| +
|
| + size_t GetNumberOfPendingTasks() const override {
|
| + NOTREACHED();
|
| + return 0;
|
| + };
|
| +
|
| + bool HasPendingImmediateWork() const override {
|
| + NOTREACHED();
|
| + return false;
|
| + };
|
| +
|
| + base::Optional<base::TimeTicks> GetNextScheduledWakeUp() override {
|
| + NOTREACHED();
|
| + return base::nullopt;
|
| + }
|
| +
|
| + const char* GetName() const override {
|
| + NOTREACHED();
|
| + return nullptr;
|
| + };
|
| +
|
| + QueueType GetQueueType() const override {
|
| + NOTREACHED();
|
| + return QueueType::DEFAULT;
|
| + }
|
| +
|
| + void SetQueuePriority(QueuePriority priority) override { NOTREACHED(); }
|
| +
|
| + QueuePriority GetQueuePriority() const override {
|
| + NOTREACHED();
|
| + return QueuePriority::NORMAL_PRIORITY;
|
| + };
|
| +
|
| + void AddTaskObserver(
|
| + base::MessageLoop::TaskObserver* task_observer) override {
|
| + NOTREACHED();
|
| + }
|
| +
|
| + void RemoveTaskObserver(
|
| + base::MessageLoop::TaskObserver* task_observer) override {
|
| + NOTREACHED();
|
| + }
|
| +
|
| + void SetTimeDomain(TimeDomain* domain) override { NOTREACHED(); }
|
| +
|
| + TimeDomain* GetTimeDomain() const override {
|
| + return nullptr;
|
| + }
|
| +
|
| + void SetBlameContext(base::trace_event::BlameContext*) override {
|
| + NOTREACHED();
|
| + }
|
| +
|
| + void SetObserver(Observer* observer) override { NOTREACHED(); }
|
| +
|
| + private:
|
| + ~CompositorWorkerTaskRunnerWrapper() override {}
|
| +
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| +};
|
| +} // namespace
|
| +
|
| +CompositorWorkerScheduler::CompositorWorkerScheduler(base::Thread* thread)
|
| + : thread_(thread) {}
|
|
|
| CompositorWorkerScheduler::~CompositorWorkerScheduler() {}
|
|
|
| void CompositorWorkerScheduler::Init() {}
|
|
|
| scoped_refptr<TaskQueue> CompositorWorkerScheduler::DefaultTaskRunner() {
|
| - return helper_->DefaultTaskRunner();
|
| + // TODO(sad): Implement a more robust scheduler that can do idle tasks for GC
|
| + // without regressing performance of the rest of the system.
|
| + return make_scoped_refptr(
|
| + new CompositorWorkerTaskRunnerWrapper(thread_->task_runner()));
|
| }
|
|
|
| scoped_refptr<scheduler::SingleThreadIdleTaskRunner>
|
| @@ -54,12 +160,12 @@
|
|
|
| void CompositorWorkerScheduler::AddTaskObserver(
|
| base::MessageLoop::TaskObserver* task_observer) {
|
| - helper_->AddTaskObserver(task_observer);
|
| + thread_->message_loop()->AddTaskObserver(task_observer);
|
| }
|
|
|
| void CompositorWorkerScheduler::RemoveTaskObserver(
|
| base::MessageLoop::TaskObserver* task_observer) {
|
| - helper_->RemoveTaskObserver(task_observer);
|
| + thread_->message_loop()->RemoveTaskObserver(task_observer);
|
| }
|
|
|
| void CompositorWorkerScheduler::Shutdown() {}
|
|
|