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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc

Issue 2818533003: Make nesting/running states a RunLoop rather than a MessageLoop concept. (Closed)
Patch Set: disable more checks Created 3 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "platform/scheduler/base/task_queue_manager.h" 5 #include "platform/scheduler/base/task_queue_manager.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 for (TimeDomain* time_domain : time_domains_) { 173 for (TimeDomain* time_domain : time_domains_) {
174 if (time_domain == real_time_domain_.get()) { 174 if (time_domain == real_time_domain_.get()) {
175 time_domain->WakeUpReadyDelayedQueues(lazy_now); 175 time_domain->WakeUpReadyDelayedQueues(lazy_now);
176 } else { 176 } else {
177 LazyNow time_domain_lazy_now = time_domain->CreateLazyNow(); 177 LazyNow time_domain_lazy_now = time_domain->CreateLazyNow();
178 time_domain->WakeUpReadyDelayedQueues(&time_domain_lazy_now); 178 time_domain->WakeUpReadyDelayedQueues(&time_domain_lazy_now);
179 } 179 }
180 } 180 }
181 } 181 }
182 182
183 void TaskQueueManager::OnBeginNestedMessageLoop() { 183 void TaskQueueManager::OnBeginNestedRunLoop() {
184 // We just entered a nested message loop, make sure there's a DoWork posted or 184 // We just entered a nested message loop, make sure there's a DoWork posted or
185 // the system will grind to a halt. 185 // the system will grind to a halt.
186 { 186 {
187 base::AutoLock lock(any_thread_lock_); 187 base::AutoLock lock(any_thread_lock_);
188 any_thread().immediate_do_work_posted_count++; 188 any_thread().immediate_do_work_posted_count++;
189 any_thread().is_nested = true; 189 any_thread().is_nested = true;
190 } 190 }
191 191
192 // When a nested message loop starts, task time observers may want to ignore 192 // When a nested message loop starts, task time observers may want to ignore
193 // the current task. 193 // the current task.
194 for (auto& observer : task_time_observers_) 194 for (auto& observer : task_time_observers_)
195 observer.OnBeginNestedMessageLoop(); 195 observer.OnBeginNestedRunLoop();
196 196
197 delegate_->PostTask(FROM_HERE, immediate_do_work_closure_); 197 delegate_->PostTask(FROM_HERE, immediate_do_work_closure_);
198 } 198 }
199 199
200 void TaskQueueManager::OnQueueHasIncomingImmediateWork( 200 void TaskQueueManager::OnQueueHasIncomingImmediateWork(
201 internal::TaskQueueImpl* queue, 201 internal::TaskQueueImpl* queue,
202 internal::EnqueueOrder enqueue_order, 202 internal::EnqueueOrder enqueue_order,
203 bool queue_is_blocked) { 203 bool queue_is_blocked) {
204 MoveableAutoLock lock(any_thread_lock_); 204 MoveableAutoLock lock(any_thread_lock_);
205 any_thread().has_incoming_immediate_work.insert( 205 any_thread().has_incoming_immediate_work.insert(
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 for (const scoped_refptr<internal::TaskQueueImpl>& queue : queues_) { 711 for (const scoped_refptr<internal::TaskQueueImpl>& queue : queues_) {
712 TimeDomain* time_domain = queue->GetTimeDomain(); 712 TimeDomain* time_domain = queue->GetTimeDomain();
713 if (time_domain_now.find(time_domain) == time_domain_now.end()) 713 if (time_domain_now.find(time_domain) == time_domain_now.end())
714 time_domain_now.insert(std::make_pair(time_domain, time_domain->Now())); 714 time_domain_now.insert(std::make_pair(time_domain, time_domain->Now()));
715 queue->SweepCanceledDelayedTasks(time_domain_now[time_domain]); 715 queue->SweepCanceledDelayedTasks(time_domain_now[time_domain]);
716 } 716 }
717 } 717 }
718 718
719 } // namespace scheduler 719 } // namespace scheduler
720 } // namespace blink 720 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698