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

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

Issue 2345483002: [scheduler] Throttle background frames with 1% CPU limit (Closed)
Patch Set: [scheduler] Throttle background frames with 1% CPU limit Created 4 years, 3 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/web_frame_scheduler_impl.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
index 1fd96aeb5b86f08773944a9cbdf750ac3db5f5cd..79cb6810a87701360b0c8af07652ca079d4219fa 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
@@ -36,6 +36,12 @@ WebFrameSchedulerImpl::~WebFrameSchedulerImpl() {
}
if (timer_task_queue_) {
+ if (parent_web_view_scheduler_ &&
+ parent_web_view_scheduler_->background_time_budget_pool_) {
+ parent_web_view_scheduler_->background_time_budget_pool_->RemoveQueue(
+ renderer_scheduler_->tick_clock()->NowTicks(),
+ timer_task_queue_.get());
+ }
timer_task_queue_->UnregisterTaskQueue();
timer_task_queue_->SetBlameContext(nullptr);
}
@@ -50,6 +56,13 @@ WebFrameSchedulerImpl::~WebFrameSchedulerImpl() {
}
void WebFrameSchedulerImpl::DetachFromWebViewScheduler() {
+ TaskQueueThrottler::TimeBudgetPool* time_budget_pool =
Sami 2016/09/27 17:11:56 Why do we need to do this here and also the destru
altimin 2016/09/27 17:38:23 Because: a) We need to do it here because we're lo
Sami 2016/09/29 09:32:29 I see. Could we instead call DetachFromWebViewSche
altimin 2016/09/29 12:32:38 It will be ugly. Lets just call RemoveTimerQueueFr
+ parent_web_view_scheduler_->background_time_budget_pool_;
+ if (time_budget_pool && timer_task_queue_) {
+ time_budget_pool->RemoveQueue(renderer_scheduler_->tick_clock()->NowTicks(),
+ timer_task_queue_.get());
+ }
+
parent_web_view_scheduler_ = nullptr;
}
@@ -88,6 +101,14 @@ blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() {
timer_task_queue_ =
renderer_scheduler_->NewTimerTaskRunner("frame_timer_tq");
timer_task_queue_->SetBlameContext(blame_context_);
+
+ TaskQueueThrottler::TimeBudgetPool* time_budget_pool =
+ parent_web_view_scheduler_->background_time_budget_pool_;
+ if (time_budget_pool) {
+ time_budget_pool->AddQueue(renderer_scheduler_->tick_clock()->NowTicks(),
+ timer_task_queue_.get());
+ }
+
if (ShouldThrottleTimers()) {
renderer_scheduler_->task_queue_throttler()->IncreaseThrottleRefCount(
timer_task_queue_.get());

Powered by Google App Engine
This is Rietveld 408576698