Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(667)

Side by Side Diff: content/renderer/scheduler/renderer_scheduler.cc

Issue 664963002: content: Add RendererScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Even moar tests, add a null scheduler and follow review. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/renderer/scheduler/renderer_scheduler.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/message_loop/message_loop_proxy.h"
10 #include "content/public/common/content_switches.h"
11 #include "content/renderer/scheduler/renderer_scheduler_impl.h"
12
13 namespace content {
14
15 namespace {
16
17 class NullIdleTaskRunner : public SingleThreadIdleTaskRunner {
alexclarke 2014/10/24 15:56:29 Shouldn't the null scheduler be in it's own file?
rmcilroy 2014/10/27 16:25:00 I didn't think it was worth it, but OK, done.
18 public:
19 NullIdleTaskRunner(scoped_refptr<base::SingleThreadTaskRunner> task_runner);
20 void PostIdleTask(const tracked_objects::Location& from_here,
21 const IdleTask& idle_task) override;
22
23 protected:
24 virtual ~NullIdleTaskRunner();
25 };
26
27 class NullRendererScheduler : public RendererScheduler {
28 public:
29 NullRendererScheduler();
30 virtual ~NullRendererScheduler();
31
32 scoped_refptr<base::SingleThreadTaskRunner> DefaultTaskRunner() override;
33 scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override;
34 scoped_refptr<SingleThreadIdleTaskRunner> IdleTaskRunner() override;
35
36 void WillBeginFrame(const cc::BeginFrameArgs& args) override;
37 void DidCommitFrameToCompositor() override;
38 void DidReceiveInputEvent() override;
39 bool ShouldYieldForHighPriorityWork() override;
40
41 private:
42 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
43 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
44
45 DISALLOW_COPY_AND_ASSIGN(NullRendererScheduler);
46 };
47
48 NullIdleTaskRunner::NullIdleTaskRunner(
49 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
50 : SingleThreadIdleTaskRunner(task_runner,
51 base::WeakPtr<IdleTaskDeadlineSupplier>()) {
52 }
53
54 NullIdleTaskRunner::~NullIdleTaskRunner() {
55 }
56
57 void NullIdleTaskRunner::PostIdleTask(
58 const tracked_objects::Location& from_here,
59 const IdleTask& idle_task) {
60 }
61
62 NullRendererScheduler::NullRendererScheduler()
63 : task_runner_(base::MessageLoopProxy::current()),
64 idle_task_runner_(new NullIdleTaskRunner(task_runner_)) {
65 }
66
67 NullRendererScheduler::~NullRendererScheduler() {
68 }
69
70 scoped_refptr<base::SingleThreadTaskRunner>
71 NullRendererScheduler::DefaultTaskRunner() {
72 return task_runner_;
73 }
74
75 scoped_refptr<base::SingleThreadTaskRunner>
76 NullRendererScheduler::CompositorTaskRunner() {
77 return task_runner_;
78 }
79
80 scoped_refptr<SingleThreadIdleTaskRunner>
81 NullRendererScheduler::IdleTaskRunner() {
82 return idle_task_runner_;
83 }
84
85 void NullRendererScheduler::WillBeginFrame(const cc::BeginFrameArgs& args) {
86 }
87
88 void NullRendererScheduler::DidCommitFrameToCompositor() {
89 }
90
91 void NullRendererScheduler::DidReceiveInputEvent() {
92 }
93
94 bool NullRendererScheduler::ShouldYieldForHighPriorityWork() {
95 return false;
96 }
97
98 } // namespace
99
100 RendererScheduler::RendererScheduler() {
101 }
102
103 RendererScheduler::~RendererScheduler() {
104 }
105
106 // static
107 scoped_ptr<RendererScheduler> RendererScheduler::Create() {
108 CommandLine* command_line = CommandLine::ForCurrentProcess();
109 if (command_line->HasSwitch(switches::kDisableBlinkScheduler)) {
110 return make_scoped_ptr(new NullRendererScheduler());
111 } else {
112 return make_scoped_ptr(new RendererSchedulerImpl());
113 }
114 }
115
116 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698