Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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/renderer/scheduler/renderer_scheduler_impl.h" | 5 #include "content/renderer/scheduler/renderer_scheduler_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
| 9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 10 #include "base/trace_event/trace_event_argument.h" | 10 #include "base/trace_event/trace_event_argument.h" |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 493 control_task_runner_->PostTask( | 493 control_task_runner_->PostTask( |
| 494 FROM_HERE, | 494 FROM_HERE, |
| 495 initiate_next_long_idle_period_closure_.callback()); | 495 initiate_next_long_idle_period_closure_.callback()); |
| 496 } | 496 } |
| 497 | 497 |
| 498 void RendererSchedulerImpl::StartIdlePeriod(IdlePeriodState new_state) { | 498 void RendererSchedulerImpl::StartIdlePeriod(IdlePeriodState new_state) { |
| 499 TRACE_EVENT_ASYNC_BEGIN0("renderer.scheduler", | 499 TRACE_EVENT_ASYNC_BEGIN0("renderer.scheduler", |
| 500 "RendererSchedulerIdlePeriod", this); | 500 "RendererSchedulerIdlePeriod", this); |
| 501 DCHECK(main_thread_checker_.CalledOnValidThread()); | 501 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 502 DCHECK(IsInIdlePeriod(new_state)); | 502 DCHECK(IsInIdlePeriod(new_state)); |
| 503 | |
| 503 renderer_task_queue_selector_->EnableQueue( | 504 renderer_task_queue_selector_->EnableQueue( |
| 504 IDLE_TASK_QUEUE, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY); | 505 IDLE_TASK_QUEUE, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY); |
| 505 task_queue_manager_->PumpQueue(IDLE_TASK_QUEUE); | 506 task_queue_manager_->PumpQueue(IDLE_TASK_QUEUE); |
| 506 idle_period_state_ = new_state; | 507 idle_period_state_ = new_state; |
| 507 } | 508 } |
| 508 | 509 |
| 509 void RendererSchedulerImpl::EndIdlePeriod() { | 510 void RendererSchedulerImpl::EndIdlePeriod() { |
| 510 DCHECK(main_thread_checker_.CalledOnValidThread()); | 511 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 511 | 512 |
| 512 end_idle_period_closure_.Cancel(); | 513 end_idle_period_closure_.Cancel(); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 537 | 538 |
| 538 renderer_task_queue_selector_->DisableQueue(IDLE_TASK_QUEUE); | 539 renderer_task_queue_selector_->DisableQueue(IDLE_TASK_QUEUE); |
| 539 idle_period_state_ = IdlePeriodState::NOT_IN_IDLE_PERIOD; | 540 idle_period_state_ = IdlePeriodState::NOT_IN_IDLE_PERIOD; |
| 540 } | 541 } |
| 541 | 542 |
| 542 // static | 543 // static |
| 543 bool RendererSchedulerImpl::IsInIdlePeriod(IdlePeriodState state) { | 544 bool RendererSchedulerImpl::IsInIdlePeriod(IdlePeriodState state) { |
| 544 return state != IdlePeriodState::NOT_IN_IDLE_PERIOD; | 545 return state != IdlePeriodState::NOT_IN_IDLE_PERIOD; |
| 545 } | 546 } |
| 546 | 547 |
| 548 bool RendererSchedulerImpl::CanExceedIdleDeadlineIfRequired() const { | |
| 549 DCHECK(main_thread_checker_.CalledOnValidThread()); | |
| 550 return idle_period_state_ == | |
|
Sami
2015/03/05 19:18:07
Could you add a trace event here so we can see if
rmcilroy
2015/03/16 22:08:04
Done.
| |
| 551 IdlePeriodState::IN_LONG_IDLE_PERIOD_WITH_MAX_DEADLINE; | |
| 552 } | |
| 553 | |
| 547 void RendererSchedulerImpl::SetTimeSourceForTesting( | 554 void RendererSchedulerImpl::SetTimeSourceForTesting( |
| 548 scoped_refptr<cc::TestNowSource> time_source) { | 555 scoped_refptr<cc::TestNowSource> time_source) { |
| 549 DCHECK(main_thread_checker_.CalledOnValidThread()); | 556 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 550 time_source_ = time_source; | 557 time_source_ = time_source; |
| 551 task_queue_manager_->SetTimeSourceForTesting(time_source); | 558 task_queue_manager_->SetTimeSourceForTesting(time_source); |
| 552 } | 559 } |
| 553 | 560 |
| 554 void RendererSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) { | 561 void RendererSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) { |
| 555 DCHECK(main_thread_checker_.CalledOnValidThread()); | 562 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 556 task_queue_manager_->SetWorkBatchSize(work_batch_size); | 563 task_queue_manager_->SetWorkBatchSize(work_batch_size); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 721 } | 728 } |
| 722 | 729 |
| 723 void RendererSchedulerImpl::RemoveTaskObserver( | 730 void RendererSchedulerImpl::RemoveTaskObserver( |
| 724 base::MessageLoop::TaskObserver* task_observer) { | 731 base::MessageLoop::TaskObserver* task_observer) { |
| 725 DCHECK(main_thread_checker_.CalledOnValidThread()); | 732 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 726 if (task_queue_manager_) | 733 if (task_queue_manager_) |
| 727 task_queue_manager_->RemoveTaskObserver(task_observer); | 734 task_queue_manager_->RemoveTaskObserver(task_observer); |
| 728 } | 735 } |
| 729 | 736 |
| 730 } // namespace content | 737 } // namespace content |
| OLD | NEW |