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

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: Address nits. Created 4 years 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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 UpdateWorkQueues(&lazy_now); 285 UpdateWorkQueues(&lazy_now);
286 286
287 internal::WorkQueue* work_queue = nullptr; 287 internal::WorkQueue* work_queue = nullptr;
288 if (!SelectWorkQueueToService(&work_queue)) 288 if (!SelectWorkQueueToService(&work_queue))
289 break; 289 break;
290 290
291 // NB this may unregister the queue. 291 // NB this may unregister the queue.
292 switch (ProcessTaskFromWorkQueue(work_queue, is_nested, &lazy_now)) { 292 switch (ProcessTaskFromWorkQueue(work_queue, is_nested, &lazy_now)) {
293 case ProcessTaskResult::DEFERRED: 293 case ProcessTaskResult::DEFERRED:
294 // If a task was deferred, try again with another task. 294 // If a task was deferred, try again with another task.
295 DCHECK(delegate_->IsNested());
295 continue; 296 continue;
296 case ProcessTaskResult::EXECUTED: 297 case ProcessTaskResult::EXECUTED:
297 break; 298 break;
298 case ProcessTaskResult::TASK_QUEUE_MANAGER_DELETED: 299 case ProcessTaskResult::TASK_QUEUE_MANAGER_DELETED:
299 return; // The TaskQueueManager got deleted, we must bail out. 300 return; // The TaskQueueManager got deleted, we must bail out.
300 } 301 }
301 302
302 // Only run a single task per batch in nested run loops so that we can 303 // Only run a single task per batch in nested run loops so that we can
303 // properly exit the nested loop when someone calls RunLoop::Quit(). 304 // properly exit the nested loop when someone calls RunLoop::Quit().
304 if (is_nested) 305 if (is_nested)
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 } 637 }
637 638
638 void TaskQueueManager::SetRecordTaskDelayHistograms( 639 void TaskQueueManager::SetRecordTaskDelayHistograms(
639 bool record_task_delay_histograms) { 640 bool record_task_delay_histograms) {
640 DCHECK(main_thread_checker_.CalledOnValidThread()); 641 DCHECK(main_thread_checker_.CalledOnValidThread());
641 record_task_delay_histograms_ = record_task_delay_histograms; 642 record_task_delay_histograms_ = record_task_delay_histograms;
642 } 643 }
643 644
644 } // namespace scheduler 645 } // namespace scheduler
645 } // namespace blink 646 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698