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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc

Issue 2345483002: [scheduler] Throttle background frames with 1% CPU limit (Closed)
Patch Set: Rebased Created 4 years, 2 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: third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc
index d3ef352f0bb74f49478fa55f5da49f9161e9c526..983142792b38b9f993ef878f83666d6a545d1c7a 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc
@@ -88,13 +88,16 @@ void TaskQueueThrottler::TimeBudgetPool::SetTimeBudget(base::TimeTicks now,
void TaskQueueThrottler::TimeBudgetPool::AddQueue(base::TimeTicks now,
TaskQueue* queue) {
- Metadata& metadata = task_queue_throttler_->queue_details_[queue];
+ std::pair<TaskQueueMap::iterator, bool> insert_result =
+ task_queue_throttler_->queue_details_.insert(
+ std::make_pair(queue, Metadata(0, queue->IsQueueEnabled())));
+ Metadata& metadata = insert_result.first->second;
DCHECK(!metadata.time_budget_pool);
metadata.time_budget_pool = this;
associated_task_queues_.insert(queue);
- if (!metadata.IsThrottled())
+ if (!is_enabled_ || !metadata.IsThrottled())
return;
queue->SetQueueEnabled(false);
@@ -114,7 +117,7 @@ void TaskQueueThrottler::TimeBudgetPool::RemoveQueue(base::TimeTicks now,
task_queue_throttler_->MaybeDeleteQueueMetadata(find_it);
associated_task_queues_.erase(queue);
- if (is_throttled)
+ if (!is_enabled_ || !is_throttled)
return;
task_queue_throttler_->MaybeSchedulePumpQueue(FROM_HERE, now, queue,
@@ -266,8 +269,10 @@ void TaskQueueThrottler::SetQueueEnabled(TaskQueue* task_queue, bool enabled) {
find_it->second.enabled = enabled;
- if (!find_it->second.IsThrottled())
+ if (!find_it->second.IsThrottled()) {
+ task_queue->SetQueueEnabled(enabled);
return;
+ }
// We don't enable the queue here because it's throttled and there might be
// tasks in it's work queue that would execute immediatly rather than after

Powered by Google App Engine
This is Rietveld 408576698