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

Unified Diff: content/renderer/scheduler/renderer_scheduler_impl.cc

Issue 847883002: Reland "Throttle resource message requests during user interaction" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Flush throttled on sync message Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/scheduler/renderer_scheduler_impl.cc
diff --git a/content/renderer/scheduler/renderer_scheduler_impl.cc b/content/renderer/scheduler/renderer_scheduler_impl.cc
index f17cc4607a5f02733791b9d9420fe76c19694d26..83437d4113f41ca490973f1ef265bb75c6c5183f 100644
--- a/content/renderer/scheduler/renderer_scheduler_impl.cc
+++ b/content/renderer/scheduler/renderer_scheduler_impl.cc
@@ -64,38 +64,38 @@ RendererSchedulerImpl::~RendererSchedulerImpl() {
}
void RendererSchedulerImpl::Shutdown() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
task_queue_manager_.reset();
}
scoped_refptr<base::SingleThreadTaskRunner>
RendererSchedulerImpl::DefaultTaskRunner() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
return default_task_runner_;
}
scoped_refptr<base::SingleThreadTaskRunner>
RendererSchedulerImpl::CompositorTaskRunner() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
return compositor_task_runner_;
}
scoped_refptr<SingleThreadIdleTaskRunner>
RendererSchedulerImpl::IdleTaskRunner() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
return idle_task_runner_;
}
scoped_refptr<base::SingleThreadTaskRunner>
RendererSchedulerImpl::LoadingTaskRunner() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
return loading_task_runner_;
}
void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) {
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
"RendererSchedulerImpl::WillBeginFrame", "args", args.AsValue());
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
if (!task_queue_manager_)
return;
@@ -106,7 +106,7 @@ void RendererSchedulerImpl::WillBeginFrame(const cc::BeginFrameArgs& args) {
void RendererSchedulerImpl::DidCommitFrameToCompositor() {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
"RendererSchedulerImpl::DidCommitFrameToCompositor");
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
if (!task_queue_manager_)
return;
@@ -147,8 +147,17 @@ void RendererSchedulerImpl::UpdateForInputEvent() {
last_input_time_ = Now();
}
+bool RendererSchedulerImpl::IsHighPriorityWorkAnticipated() {
+ DCHECK(main_thread_checker_.CalledOnValidThread());
+ if (!task_queue_manager_)
+ return false;
+
+ MaybeUpdatePolicy();
+ return SchedulerPolicy() == COMPOSITOR_PRIORITY_POLICY;
+}
+
bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
if (!task_queue_manager_)
return false;
@@ -157,23 +166,25 @@ bool RendererSchedulerImpl::ShouldYieldForHighPriorityWork() {
// work outstanding. Note: even though the control queue is higher priority
// we don't yield for it since these tasks are not user-provided work and they
// are only intended to run before the next task, not interrupt the tasks.
+ // Note: This function could conceivably be implemented in terms of
+ // |IsHighPriorityWorkAnticipated|, but for clarity is not.
return SchedulerPolicy() == COMPOSITOR_PRIORITY_POLICY &&
!task_queue_manager_->IsQueueEmpty(COMPOSITOR_TASK_QUEUE);
}
void RendererSchedulerImpl::CurrentIdleTaskDeadlineCallback(
base::TimeTicks* deadline_out) const {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
*deadline_out = estimated_next_frame_begin_;
}
RendererSchedulerImpl::Policy RendererSchedulerImpl::SchedulerPolicy() const {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
return current_policy_;
}
void RendererSchedulerImpl::MaybeUpdatePolicy() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
if (policy_may_need_update_.IsSet()) {
UpdatePolicy();
}
@@ -186,7 +197,7 @@ void RendererSchedulerImpl::PostUpdatePolicyOnControlRunner(
}
void RendererSchedulerImpl::UpdatePolicy() {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
if (!task_queue_manager_)
return;
@@ -243,7 +254,7 @@ void RendererSchedulerImpl::UpdatePolicy() {
void RendererSchedulerImpl::StartIdlePeriod() {
TRACE_EVENT_ASYNC_BEGIN0("renderer.scheduler",
"RendererSchedulerIdlePeriod", this);
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
renderer_task_queue_selector_->EnableQueue(
IDLE_TASK_QUEUE, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY);
task_queue_manager_->PumpQueue(IDLE_TASK_QUEUE);
@@ -252,7 +263,7 @@ void RendererSchedulerImpl::StartIdlePeriod() {
void RendererSchedulerImpl::EndIdlePeriod() {
TRACE_EVENT_ASYNC_END0("renderer.scheduler",
"RendererSchedulerIdlePeriod", this);
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
end_idle_period_closure_.Cancel();
renderer_task_queue_selector_->DisableQueue(IDLE_TASK_QUEUE);
}
@@ -320,7 +331,7 @@ const char* RendererSchedulerImpl::PolicyToString(Policy policy) {
scoped_refptr<base::debug::ConvertableToTraceFormat>
RendererSchedulerImpl::AsValueLocked(base::TimeTicks optional_now) const {
- main_thread_checker_.CalledOnValidThread();
+ DCHECK(main_thread_checker_.CalledOnValidThread());
incoming_signals_lock_.AssertAcquired();
if (optional_now.is_null())

Powered by Google App Engine
This is Rietveld 408576698