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

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

Issue 969373002: [content]: Add CanExceedIdleDeadlineIfRequired function to RendererScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@long_idle_5
Patch Set: Rebased Created 5 years, 9 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 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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/scheduler/renderer_scheduler_impl.h ('k') | content/renderer/scheduler/renderer_scheduler_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698