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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/child/idle_helper.cc

Issue 2812313002: [scheduler] Remove blink::scheduler::TaskQueue from public API. (Closed)
Patch Set: Rebased & addressed skyostil@'s comment Created 3 years, 8 months 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/child/idle_helper.h" 5 #include "platform/scheduler/child/idle_helper.h"
6 6
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "base/trace_event/trace_event.h" 8 #include "base/trace_event/trace_event.h"
9 #include "base/trace_event/trace_event_argument.h" 9 #include "base/trace_event/trace_event_argument.h"
10 #include "platform/scheduler/base/real_time_domain.h" 10 #include "platform/scheduler/base/real_time_domain.h"
11 #include "public/platform/scheduler/base/task_queue.h" 11 #include "platform/scheduler/base/task_queue.h"
12 #include "platform/scheduler/base/task_queue_manager.h" 12 #include "platform/scheduler/base/task_queue_manager.h"
13 #include "platform/scheduler/child/scheduler_helper.h" 13 #include "platform/scheduler/child/scheduler_helper.h"
14 #include "platform/scheduler/child/scheduler_tqm_delegate.h" 14 #include "platform/scheduler/child/scheduler_tqm_delegate.h"
15 15
16 namespace blink { 16 namespace blink {
17 namespace scheduler { 17 namespace scheduler {
18 18
19 IdleHelper::IdleHelper( 19 IdleHelper::IdleHelper(
20 SchedulerHelper* helper, 20 SchedulerHelper* helper,
21 Delegate* delegate, 21 Delegate* delegate,
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 void IdleHelper::EnableLongIdlePeriod() { 134 void IdleHelper::EnableLongIdlePeriod() {
135 TRACE_EVENT0(disabled_by_default_tracing_category_, "EnableLongIdlePeriod"); 135 TRACE_EVENT0(disabled_by_default_tracing_category_, "EnableLongIdlePeriod");
136 helper_->CheckOnValidThread(); 136 helper_->CheckOnValidThread();
137 if (is_shutdown_) 137 if (is_shutdown_)
138 return; 138 return;
139 139
140 // End any previous idle period. 140 // End any previous idle period.
141 EndIdlePeriod(); 141 EndIdlePeriod();
142 142
143 if (ShouldWaitForQuiescence()) { 143 if (ShouldWaitForQuiescence()) {
144 helper_->ControlTaskRunner()->PostDelayedTask( 144 helper_->ControlTaskQueue()->PostDelayedTask(
145 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(), 145 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(),
146 required_quiescence_duration_before_long_idle_period_); 146 required_quiescence_duration_before_long_idle_period_);
147 delegate_->IsNotQuiescent(); 147 delegate_->IsNotQuiescent();
148 return; 148 return;
149 } 149 }
150 150
151 base::TimeTicks now(helper_->scheduler_tqm_delegate()->NowTicks()); 151 base::TimeTicks now(helper_->scheduler_tqm_delegate()->NowTicks());
152 base::TimeDelta next_long_idle_period_delay; 152 base::TimeDelta next_long_idle_period_delay;
153 IdlePeriodState new_idle_period_state = 153 IdlePeriodState new_idle_period_state =
154 ComputeNewLongIdlePeriodState(now, &next_long_idle_period_delay); 154 ComputeNewLongIdlePeriodState(now, &next_long_idle_period_delay);
155 if (IsInIdlePeriod(new_idle_period_state)) { 155 if (IsInIdlePeriod(new_idle_period_state)) {
156 StartIdlePeriod(new_idle_period_state, now, 156 StartIdlePeriod(new_idle_period_state, now,
157 now + next_long_idle_period_delay); 157 now + next_long_idle_period_delay);
158 } else { 158 } else {
159 // Otherwise wait for the next long idle period delay before trying again. 159 // Otherwise wait for the next long idle period delay before trying again.
160 helper_->ControlTaskRunner()->PostDelayedTask( 160 helper_->ControlTaskQueue()->PostDelayedTask(
161 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(), 161 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(),
162 next_long_idle_period_delay); 162 next_long_idle_period_delay);
163 } 163 }
164 } 164 }
165 165
166 void IdleHelper::StartIdlePeriod(IdlePeriodState new_state, 166 void IdleHelper::StartIdlePeriod(IdlePeriodState new_state,
167 base::TimeTicks now, 167 base::TimeTicks now,
168 base::TimeTicks idle_period_deadline) { 168 base::TimeTicks idle_period_deadline) {
169 DCHECK(!is_shutdown_); 169 DCHECK(!is_shutdown_);
170 DCHECK_GT(idle_period_deadline, now); 170 DCHECK_GT(idle_period_deadline, now);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 } else { 265 } else {
266 // Otherwise ensure that we kick the scheduler at the right time to 266 // Otherwise ensure that we kick the scheduler at the right time to
267 // initiate the next idle period. 267 // initiate the next idle period.
268 next_long_idle_period_delay = std::max( 268 next_long_idle_period_delay = std::max(
269 base::TimeDelta(), state_.idle_period_deadline() - 269 base::TimeDelta(), state_.idle_period_deadline() -
270 helper_->scheduler_tqm_delegate()->NowTicks()); 270 helper_->scheduler_tqm_delegate()->NowTicks());
271 } 271 }
272 if (next_long_idle_period_delay.is_zero()) { 272 if (next_long_idle_period_delay.is_zero()) {
273 EnableLongIdlePeriod(); 273 EnableLongIdlePeriod();
274 } else { 274 } else {
275 helper_->ControlTaskRunner()->PostDelayedTask( 275 helper_->ControlTaskQueue()->PostDelayedTask(
276 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(), 276 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback(),
277 next_long_idle_period_delay); 277 next_long_idle_period_delay);
278 } 278 }
279 } 279 }
280 } 280 }
281 281
282 base::TimeTicks IdleHelper::CurrentIdleTaskDeadline() const { 282 base::TimeTicks IdleHelper::CurrentIdleTaskDeadline() const {
283 helper_->CheckOnValidThread(); 283 helper_->CheckOnValidThread();
284 return state_.idle_period_deadline(); 284 return state_.idle_period_deadline();
285 } 285 }
286 286
287 void IdleHelper::OnIdleTaskPosted() { 287 void IdleHelper::OnIdleTaskPosted() {
288 TRACE_EVENT0(disabled_by_default_tracing_category_, "OnIdleTaskPosted"); 288 TRACE_EVENT0(disabled_by_default_tracing_category_, "OnIdleTaskPosted");
289 if (is_shutdown_) 289 if (is_shutdown_)
290 return; 290 return;
291 if (idle_task_runner_->RunsTasksOnCurrentThread()) { 291 if (idle_task_runner_->RunsTasksOnCurrentThread()) {
292 OnIdleTaskPostedOnMainThread(); 292 OnIdleTaskPostedOnMainThread();
293 } else { 293 } else {
294 helper_->ControlTaskRunner()->PostTask( 294 helper_->ControlTaskQueue()->PostTask(
295 FROM_HERE, on_idle_task_posted_closure_.GetCallback()); 295 FROM_HERE, on_idle_task_posted_closure_.GetCallback());
296 } 296 }
297 } 297 }
298 298
299 void IdleHelper::OnIdleTaskPostedOnMainThread() { 299 void IdleHelper::OnIdleTaskPostedOnMainThread() {
300 TRACE_EVENT0(disabled_by_default_tracing_category_, 300 TRACE_EVENT0(disabled_by_default_tracing_category_,
301 "OnIdleTaskPostedOnMainThread"); 301 "OnIdleTaskPostedOnMainThread");
302 if (is_shutdown_) 302 if (is_shutdown_)
303 return; 303 return;
304 if (state_.idle_period_state() == 304 if (state_.idle_period_state() ==
305 IdlePeriodState::IN_LONG_IDLE_PERIOD_PAUSED) { 305 IdlePeriodState::IN_LONG_IDLE_PERIOD_PAUSED) {
306 // Restart long idle period ticks. 306 // Restart long idle period ticks.
307 helper_->ControlTaskRunner()->PostTask( 307 helper_->ControlTaskQueue()->PostTask(
308 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback()); 308 FROM_HERE, enable_next_long_idle_period_closure_.GetCallback());
309 } 309 }
310 } 310 }
311 311
312 base::TimeTicks IdleHelper::WillProcessIdleTask() { 312 base::TimeTicks IdleHelper::WillProcessIdleTask() {
313 helper_->CheckOnValidThread(); 313 helper_->CheckOnValidThread();
314 DCHECK(!is_shutdown_); 314 DCHECK(!is_shutdown_);
315 state_.TraceIdleIdleTaskStart(); 315 state_.TraceIdleIdleTaskStart();
316 return CurrentIdleTaskDeadline(); 316 return CurrentIdleTaskDeadline();
317 } 317 }
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 case IdlePeriodState::IN_LONG_IDLE_PERIOD_PAUSED: 503 case IdlePeriodState::IN_LONG_IDLE_PERIOD_PAUSED:
504 return "in_long_idle_period_paused"; 504 return "in_long_idle_period_paused";
505 default: 505 default:
506 NOTREACHED(); 506 NOTREACHED();
507 return nullptr; 507 return nullptr;
508 } 508 }
509 } 509 }
510 510
511 } // namespace scheduler 511 } // namespace scheduler
512 } // namespace blink 512 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698