Chromium Code Reviews| 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()); |