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

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

Issue 2273703002: Force events to be non blocking if main thread is unresponsive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 208
209 for (int i = 0; i < work_batch_size_; i++) { 209 for (int i = 0; i < work_batch_size_; i++) {
210 internal::WorkQueue* work_queue; 210 internal::WorkQueue* work_queue;
211 if (!SelectWorkQueueToService(&work_queue)) { 211 if (!SelectWorkQueueToService(&work_queue)) {
212 break; 212 break;
213 } 213 }
214 214
215 bool should_trigger_wakeup = work_queue->task_queue()->wakeup_policy() == 215 bool should_trigger_wakeup = work_queue->task_queue()->wakeup_policy() ==
216 TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES; 216 TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES;
217 217
218 if (!delegate_->IsNested() && task_time_tracker_)
219 task_time_tracker_->ReportTaskStartTime(task_start_time);
220
218 switch (ProcessTaskFromWorkQueue(work_queue, &previous_task)) { 221 switch (ProcessTaskFromWorkQueue(work_queue, &previous_task)) {
219 case ProcessTaskResult::DEFERRED: 222 case ProcessTaskResult::DEFERRED:
220 // If a task was deferred, try again with another task. Note that this 223 // If a task was deferred, try again with another task. Note that this
221 // means deferred tasks (i.e. non-nestable tasks) will never trigger 224 // means deferred tasks (i.e. non-nestable tasks) will never trigger
222 // queue wake-ups. 225 // queue wake-ups.
223 continue; 226 continue;
224 case ProcessTaskResult::EXECUTED: 227 case ProcessTaskResult::EXECUTED:
225 break; 228 break;
226 case ProcessTaskResult::TASK_QUEUE_MANAGER_DELETED: 229 case ProcessTaskResult::TASK_QUEUE_MANAGER_DELETED:
227 return; // The TaskQueueManager got deleted, we must bail out. 230 return; // The TaskQueueManager got deleted, we must bail out.
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 DCHECK(main_thread_checker_.CalledOnValidThread()); 437 DCHECK(main_thread_checker_.CalledOnValidThread());
435 DCHECK(!work_queue->Empty()); 438 DCHECK(!work_queue->Empty());
436 if (observer_) { 439 if (observer_) {
437 observer_->OnTriedToExecuteBlockedTask(*work_queue->task_queue(), 440 observer_->OnTriedToExecuteBlockedTask(*work_queue->task_queue(),
438 *work_queue->GetFrontTask()); 441 *work_queue->GetFrontTask());
439 } 442 }
440 } 443 }
441 444
442 } // namespace scheduler 445 } // namespace scheduler
443 } // namespace blink 446 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698