| 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..0f4158f23c38b0cce6614865c82b25f90de9fa3d 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,7 @@ WebFrameSchedulerImpl::~WebFrameSchedulerImpl() {
|
| }
|
|
|
| if (timer_task_queue_) {
|
| + RemoveTimerQueueFromBackgroundTimeBudgetPool();
|
| timer_task_queue_->UnregisterTaskQueue();
|
| timer_task_queue_->SetBlameContext(nullptr);
|
| }
|
| @@ -50,9 +51,28 @@ WebFrameSchedulerImpl::~WebFrameSchedulerImpl() {
|
| }
|
|
|
| void WebFrameSchedulerImpl::DetachFromWebViewScheduler() {
|
| + RemoveTimerQueueFromBackgroundTimeBudgetPool();
|
| +
|
| parent_web_view_scheduler_ = nullptr;
|
| }
|
|
|
| +void WebFrameSchedulerImpl::RemoveTimerQueueFromBackgroundTimeBudgetPool() {
|
| + if (!timer_task_queue_)
|
| + return;
|
| +
|
| + if (!parent_web_view_scheduler_)
|
| + return;
|
| +
|
| + TaskQueueThrottler::TimeBudgetPool* time_budget_pool =
|
| + parent_web_view_scheduler_->background_time_budget_pool();
|
| +
|
| + if (!time_budget_pool)
|
| + return;
|
| +
|
| + time_budget_pool->RemoveQueue(renderer_scheduler_->tick_clock()->NowTicks(),
|
| + timer_task_queue_.get());
|
| +}
|
| +
|
| void WebFrameSchedulerImpl::setFrameVisible(bool frame_visible) {
|
| DCHECK(parent_web_view_scheduler_);
|
| if (frame_visible_ == frame_visible)
|
| @@ -88,6 +108,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());
|
|
|