Index: components/scheduler/renderer/web_frame_scheduler_impl.cc |
diff --git a/components/scheduler/renderer/web_frame_scheduler_impl.cc b/components/scheduler/renderer/web_frame_scheduler_impl.cc |
index fba6b691b5c96ded5f4c44566bfd3f9bd137b95e..1b4a45579bc0aaef1225291de4f14d959e1db2c1 100644 |
--- a/components/scheduler/renderer/web_frame_scheduler_impl.cc |
+++ b/components/scheduler/renderer/web_frame_scheduler_impl.cc |
@@ -27,16 +27,21 @@ WebFrameSchedulerImpl::WebFrameSchedulerImpl( |
page_visible_(true) {} |
WebFrameSchedulerImpl::~WebFrameSchedulerImpl() { |
- if (loading_task_queue_.get()) { |
+ if (loading_task_queue_) { |
loading_task_queue_->UnregisterTaskQueue(); |
loading_task_queue_->SetBlameContext(nullptr); |
} |
- if (timer_task_queue_.get()) { |
+ if (timer_task_queue_) { |
timer_task_queue_->UnregisterTaskQueue(); |
timer_task_queue_->SetBlameContext(nullptr); |
} |
+ if (unthrottled_task_queue_) { |
+ unthrottled_task_queue_->UnregisterTaskQueue(); |
+ unthrottled_task_queue_->SetBlameContext(nullptr); |
+ } |
+ |
if (parent_web_view_scheduler_) |
parent_web_view_scheduler_->Unregister(this); |
} |
@@ -83,6 +88,22 @@ blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() { |
return timer_web_task_runner_.get(); |
} |
+blink::WebTaskRunner* WebFrameSchedulerImpl::unthrottledTaskRunner() { |
+ DCHECK(parent_web_view_scheduler_); |
+ if (!unthrottled_web_task_runner_) { |
+ unthrottled_task_queue_ = |
+ renderer_scheduler_->NewUnthrottledTaskRunner("frame_unthrottled_tq"); |
+ unthrottled_task_queue_->SetBlameContext(blame_context_); |
+ if (parent_web_view_scheduler_->virtual_time_domain()) { |
+ unthrottled_task_queue_->SetTimeDomain( |
+ parent_web_view_scheduler_->virtual_time_domain()); |
+ } |
+ unthrottled_web_task_runner_.reset( |
+ new WebTaskRunnerImpl(unthrottled_task_queue_)); |
+ } |
+ return unthrottled_web_task_runner_.get(); |
+} |
+ |
void WebFrameSchedulerImpl::setPageVisible(bool page_visible) { |
DCHECK(parent_web_view_scheduler_); |
if (page_visible_ == page_visible) |