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

Side by Side Diff: content/child/scheduler/scheduler_helper.cc

Issue 1098033002: Remove dependency on cc::TestNowSource from scheduler code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates Created 5 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 "content/child/scheduler/scheduler_helper.h" 5 #include "content/child/scheduler/scheduler_helper.h"
6 6
7 #include "base/trace_event/trace_event.h" 7 #include "base/trace_event/trace_event.h"
8 #include "base/trace_event/trace_event_argument.h" 8 #include "base/trace_event/trace_event_argument.h"
9 #include "content/child/scheduler/nestable_single_thread_task_runner.h" 9 #include "content/child/scheduler/nestable_single_thread_task_runner.h"
10 #include "content/child/scheduler/prioritizing_task_queue_selector.h" 10 #include "content/child/scheduler/prioritizing_task_queue_selector.h"
11 #include "content/child/scheduler/time_source.h"
11 12
12 namespace content { 13 namespace content {
13 14
14 SchedulerHelper::SchedulerHelper( 15 SchedulerHelper::SchedulerHelper(
15 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, 16 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner,
16 SchedulerHelperDelegate* scheduler_helper_delegate, 17 SchedulerHelperDelegate* scheduler_helper_delegate,
17 const char* tracing_category, 18 const char* tracing_category,
18 const char* disabled_by_default_tracing_category, 19 const char* disabled_by_default_tracing_category,
19 const char* idle_period_tracing_name, 20 const char* idle_period_tracing_name,
20 size_t total_task_queue_count, 21 size_t total_task_queue_count,
(...skipping 12 matching lines...) Expand all
33 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), 34 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)),
34 default_task_runner_( 35 default_task_runner_(
35 task_queue_manager_->TaskRunnerForQueue(QueueId::DEFAULT_TASK_QUEUE)), 36 task_queue_manager_->TaskRunnerForQueue(QueueId::DEFAULT_TASK_QUEUE)),
36 quiescence_monitored_task_queue_mask_( 37 quiescence_monitored_task_queue_mask_(
37 ((1ull << total_task_queue_count) - 1ull) & 38 ((1ull << total_task_queue_count) - 1ull) &
38 ~(1ull << QueueId::IDLE_TASK_QUEUE) & 39 ~(1ull << QueueId::IDLE_TASK_QUEUE) &
39 ~(1ull << QueueId::CONTROL_TASK_QUEUE) & 40 ~(1ull << QueueId::CONTROL_TASK_QUEUE) &
40 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), 41 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)),
41 required_quiescence_duration_before_long_idle_period_( 42 required_quiescence_duration_before_long_idle_period_(
42 required_quiescence_duration_before_long_idle_period), 43 required_quiescence_duration_before_long_idle_period),
44 time_source_(new TimeSource),
43 tracing_category_(tracing_category), 45 tracing_category_(tracing_category),
44 disabled_by_default_tracing_category_( 46 disabled_by_default_tracing_category_(
45 disabled_by_default_tracing_category), 47 disabled_by_default_tracing_category),
46 idle_period_tracing_name_(idle_period_tracing_name), 48 idle_period_tracing_name_(idle_period_tracing_name),
47 weak_factory_(this) { 49 weak_factory_(this) {
48 DCHECK_GE(total_task_queue_count, 50 DCHECK_GE(total_task_queue_count,
49 static_cast<size_t>(QueueId::TASK_QUEUE_COUNT)); 51 static_cast<size_t>(QueueId::TASK_QUEUE_COUNT));
50 weak_scheduler_ptr_ = weak_factory_.GetWeakPtr(); 52 weak_scheduler_ptr_ = weak_factory_.GetWeakPtr();
51 end_idle_period_closure_.Reset( 53 end_idle_period_closure_.Reset(
52 base::Bind(&SchedulerHelper::EndIdlePeriod, weak_scheduler_ptr_)); 54 base::Bind(&SchedulerHelper::EndIdlePeriod, weak_scheduler_ptr_));
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 } 307 }
306 308
307 bool SchedulerHelper::CanExceedIdleDeadlineIfRequired() const { 309 bool SchedulerHelper::CanExceedIdleDeadlineIfRequired() const {
308 TRACE_EVENT0(tracing_category_, "CanExceedIdleDeadlineIfRequired"); 310 TRACE_EVENT0(tracing_category_, "CanExceedIdleDeadlineIfRequired");
309 CheckOnValidThread(); 311 CheckOnValidThread();
310 return idle_period_state_ == 312 return idle_period_state_ ==
311 IdlePeriodState::IN_LONG_IDLE_PERIOD_WITH_MAX_DEADLINE; 313 IdlePeriodState::IN_LONG_IDLE_PERIOD_WITH_MAX_DEADLINE;
312 } 314 }
313 315
314 void SchedulerHelper::SetTimeSourceForTesting( 316 void SchedulerHelper::SetTimeSourceForTesting(
315 scoped_refptr<cc::TestNowSource> time_source) { 317 scoped_ptr<TimeSource> time_source) {
316 CheckOnValidThread(); 318 CheckOnValidThread();
317 time_source_ = time_source; 319 time_source_ = time_source.Pass();
318 task_queue_manager_->SetTimeSourceForTesting(time_source);
319 } 320 }
320 321
321 void SchedulerHelper::SetWorkBatchSizeForTesting(size_t work_batch_size) { 322 void SchedulerHelper::SetWorkBatchSizeForTesting(size_t work_batch_size) {
322 CheckOnValidThread(); 323 CheckOnValidThread();
323 task_queue_manager_->SetWorkBatchSize(work_batch_size); 324 task_queue_manager_->SetWorkBatchSize(work_batch_size);
324 } 325 }
325 326
327 TaskQueueManager* SchedulerHelper::GetTaskQueueManagerForTesting() {
328 CheckOnValidThread();
329 return task_queue_manager_.get();
330 }
331
326 base::TimeTicks SchedulerHelper::Now() const { 332 base::TimeTicks SchedulerHelper::Now() const {
327 return UNLIKELY(time_source_) ? time_source_->Now() : base::TimeTicks::Now(); 333 return time_source_->Now();
328 } 334 }
329 335
330 SchedulerHelper::IdlePeriodState 336 SchedulerHelper::IdlePeriodState
331 SchedulerHelper::SchedulerIdlePeriodState() const { 337 SchedulerHelper::SchedulerIdlePeriodState() const {
332 return idle_period_state_; 338 return idle_period_state_;
333 } 339 }
334 340
335 PrioritizingTaskQueueSelector* 341 PrioritizingTaskQueueSelector*
336 SchedulerHelper::SchedulerTaskQueueSelector() const { 342 SchedulerHelper::SchedulerTaskQueueSelector() const {
337 return task_queue_selector_.get(); 343 return task_queue_selector_.get();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 } 404 }
399 405
400 void SchedulerHelper::RemoveTaskObserver( 406 void SchedulerHelper::RemoveTaskObserver(
401 base::MessageLoop::TaskObserver* task_observer) { 407 base::MessageLoop::TaskObserver* task_observer) {
402 CheckOnValidThread(); 408 CheckOnValidThread();
403 if (task_queue_manager_) 409 if (task_queue_manager_)
404 task_queue_manager_->RemoveTaskObserver(task_observer); 410 task_queue_manager_->RemoveTaskObserver(task_observer);
405 } 411 }
406 412
407 } // namespace content 413 } // namespace content
OLDNEW
« no previous file with comments | « content/child/scheduler/scheduler_helper.h ('k') | content/child/scheduler/scheduler_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698