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

Side by Side Diff: components/scheduler/renderer/web_frame_scheduler_impl.cc

Issue 1697523002: Allow immediate tasks to run even when virtual time can't advance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/scheduler/renderer/web_frame_scheduler_impl.h" 5 #include "components/scheduler/renderer/web_frame_scheduler_impl.h"
6 6
7 #include "components/scheduler/base/real_time_domain.h" 7 #include "components/scheduler/base/real_time_domain.h"
8 #include "components/scheduler/base/virtual_time_domain.h" 8 #include "components/scheduler/base/virtual_time_domain.h"
9 #include "components/scheduler/child/web_task_runner_impl.h" 9 #include "components/scheduler/child/web_task_runner_impl.h"
10 #include "components/scheduler/renderer/auto_advancing_virtual_time_domain.h" 10 #include "components/scheduler/renderer/auto_advancing_virtual_time_domain.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 } 43 }
44 44
45 blink::WebTaskRunner* WebFrameSchedulerImpl::loadingTaskRunner() { 45 blink::WebTaskRunner* WebFrameSchedulerImpl::loadingTaskRunner() {
46 DCHECK(parent_web_view_scheduler_); 46 DCHECK(parent_web_view_scheduler_);
47 if (!loading_web_task_runner_) { 47 if (!loading_web_task_runner_) {
48 loading_task_queue_ = 48 loading_task_queue_ =
49 renderer_scheduler_->NewLoadingTaskRunner("frame_loading_tq"); 49 renderer_scheduler_->NewLoadingTaskRunner("frame_loading_tq");
50 if (parent_web_view_scheduler_->virtual_time_domain()) { 50 if (parent_web_view_scheduler_->virtual_time_domain()) {
51 loading_task_queue_->SetTimeDomain( 51 loading_task_queue_->SetTimeDomain(
52 parent_web_view_scheduler_->virtual_time_domain()); 52 parent_web_view_scheduler_->virtual_time_domain());
53 loading_task_queue_->SetPumpPolicy(
54 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
55 } 53 }
56 loading_web_task_runner_.reset(new WebTaskRunnerImpl(loading_task_queue_)); 54 loading_web_task_runner_.reset(new WebTaskRunnerImpl(loading_task_queue_));
57 } 55 }
58 return loading_web_task_runner_.get(); 56 return loading_web_task_runner_.get();
59 } 57 }
60 58
61 blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() { 59 blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() {
62 DCHECK(parent_web_view_scheduler_); 60 DCHECK(parent_web_view_scheduler_);
63 if (!timer_web_task_runner_) { 61 if (!timer_web_task_runner_) {
64 timer_task_queue_ = 62 timer_task_queue_ =
65 renderer_scheduler_->NewTimerTaskRunner("frame_timer_tq"); 63 renderer_scheduler_->NewTimerTaskRunner("frame_timer_tq");
66 if (parent_web_view_scheduler_->virtual_time_domain()) { 64 if (parent_web_view_scheduler_->virtual_time_domain()) {
67 timer_task_queue_->SetTimeDomain( 65 timer_task_queue_->SetTimeDomain(
68 parent_web_view_scheduler_->virtual_time_domain()); 66 parent_web_view_scheduler_->virtual_time_domain());
69 timer_task_queue_->SetPumpPolicy(
70 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
71 } else if (!page_visible_) { 67 } else if (!page_visible_) {
72 renderer_scheduler_->throttling_helper()->IncreaseThrottleRefCount( 68 renderer_scheduler_->throttling_helper()->IncreaseThrottleRefCount(
73 timer_task_queue_.get()); 69 timer_task_queue_.get());
74 } 70 }
75 timer_web_task_runner_.reset(new WebTaskRunnerImpl(timer_task_queue_)); 71 timer_web_task_runner_.reset(new WebTaskRunnerImpl(timer_task_queue_));
76 } 72 }
77 return timer_web_task_runner_.get(); 73 return timer_web_task_runner_.get();
78 } 74 }
79 75
80 void WebFrameSchedulerImpl::setFrameOrigin( 76 void WebFrameSchedulerImpl::setFrameOrigin(
(...skipping 25 matching lines...) Expand all
106 102
107 void WebFrameSchedulerImpl::OnVirtualTimeDomainChanged() { 103 void WebFrameSchedulerImpl::OnVirtualTimeDomainChanged() {
108 DCHECK(parent_web_view_scheduler_); 104 DCHECK(parent_web_view_scheduler_);
109 DCHECK(parent_web_view_scheduler_->virtual_time_domain()); 105 DCHECK(parent_web_view_scheduler_->virtual_time_domain());
110 106
111 if (timer_task_queue_) { 107 if (timer_task_queue_) {
112 renderer_scheduler_->throttling_helper()->UnregisterTaskQueue( 108 renderer_scheduler_->throttling_helper()->UnregisterTaskQueue(
113 timer_task_queue_.get()); 109 timer_task_queue_.get());
114 timer_task_queue_->SetTimeDomain( 110 timer_task_queue_->SetTimeDomain(
115 parent_web_view_scheduler_->virtual_time_domain()); 111 parent_web_view_scheduler_->virtual_time_domain());
116 timer_task_queue_->SetPumpPolicy(
117 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
118 } 112 }
119 113
120 if (loading_task_queue_) { 114 if (loading_task_queue_) {
121 loading_task_queue_->SetTimeDomain( 115 loading_task_queue_->SetTimeDomain(
122 parent_web_view_scheduler_->virtual_time_domain()); 116 parent_web_view_scheduler_->virtual_time_domain());
123 loading_task_queue_->SetPumpPolicy(
124 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
125 } 117 }
126 } 118 }
127 119
128 void WebFrameSchedulerImpl::OnVirtualTimePumpPolicyChanged() {
129 if (!parent_web_view_scheduler_->virtual_time_domain())
130 return;
131
132 if (timer_task_queue_) {
133 timer_task_queue_->SetPumpPolicy(
134 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
135 }
136
137 if (loading_task_queue_) {
138 loading_task_queue_->SetPumpPolicy(
139 parent_web_view_scheduler_->GetVirtualTimePumpPolicy());
140 }
141 }
142 120
143 } // namespace scheduler 121 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/web_frame_scheduler_impl.h ('k') | components/scheduler/renderer/web_view_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698