Chromium Code Reviews| Index: content/child/blink_platform_impl.cc |
| diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc |
| index 75ac1489d92152578b6eb70a33921fcf3ad52010..68c748fcbc6e67e9c049d90edf06c632c0eb0e33 100644 |
| --- a/content/child/blink_platform_impl.cc |
| +++ b/content/child/blink_platform_impl.cc |
| @@ -37,6 +37,7 @@ |
| #include "components/mime_util/mime_util.h" |
| #include "components/scheduler/child/web_task_runner_impl.h" |
| #include "components/scheduler/child/webthread_impl_for_worker_scheduler.h" |
| +#include "components/scheduler/child/worker_scheduler.h" |
| #include "content/app/resources/grit/content_resources.h" |
| #include "content/app/strings/grit/content_strings.h" |
| #include "content/child/background_sync/background_sync_provider.h" |
| @@ -89,6 +90,43 @@ namespace content { |
| namespace { |
| +class CompositorWorkerScheduler : public scheduler::WorkerScheduler { |
|
Sami
2016/01/14 13:55:05
Would you mind putting this to components/schedule
sadrul
2016/01/14 15:20:40
Done (moved to */child/* instead of in */renderer/
|
| + public: |
| + explicit CompositorWorkerScheduler(base::Thread* thread) : thread_(thread) {} |
| + ~CompositorWorkerScheduler() override {} |
| + |
| + // WorkerScheduler: |
| + scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override { |
| + return thread_->task_runner(); |
|
Sami
2016/01/14 13:55:05
If we do decide to land this pass through schedule
sadrul
2016/01/14 15:20:40
Done.
|
| + } |
| + |
| + scoped_refptr<scheduler::SingleThreadIdleTaskRunner> IdleTaskRunner() |
| + override { |
| + return nullptr; |
|
Sami
2016/01/14 13:55:05
Presumably the compositor worker will need to do s
sadrul
2016/01/14 15:20:40
Done.
|
| + } |
| + |
| + bool CanExceedIdleDeadlineIfRequired() const override { return false; } |
| + |
| + bool ShouldYieldForHighPriorityWork() override { return false; } |
| + |
| + void AddTaskObserver( |
| + base::MessageLoop::TaskObserver* task_observer) override { |
| + thread_->message_loop()->AddTaskObserver(task_observer); |
| + } |
| + |
| + void RemoveTaskObserver( |
| + base::MessageLoop::TaskObserver* task_observer) override { |
| + thread_->message_loop()->RemoveTaskObserver(task_observer); |
| + } |
| + |
| + void Init() override {} |
| + void Shutdown() override {} |
| + |
| + private: |
| + base::Thread* thread_; |
| + DISALLOW_COPY_AND_ASSIGN(CompositorWorkerScheduler); |
| +}; |
| + |
| class WebThreadForCompositor : public WebThreadImplForWorkerScheduler { |
| public: |
| explicit WebThreadForCompositor(base::Thread::Options options) |
| @@ -99,7 +137,9 @@ class WebThreadForCompositor : public WebThreadImplForWorkerScheduler { |
| private: |
| // WebThreadImplForWorkerScheduler: |
| - bool UseThreadTaskRunnerAsDefault() const override { return true; } |
| + scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override { |
| + return make_scoped_ptr(new CompositorWorkerScheduler(thread())); |
| + } |
| DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor); |
| }; |