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

Unified Diff: components/scheduler/base/task_queue_manager.cc

Issue 1646583002: [Reland] Per WebViewScheduler virtual time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: WebViewSchedulerImpl to unregister the virtual_time_domain_ in the destructor Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: components/scheduler/base/task_queue_manager.cc
diff --git a/components/scheduler/base/task_queue_manager.cc b/components/scheduler/base/task_queue_manager.cc
index 584eb703646e0173c5e79b748993e49a56760677..19c0209a89efbd9e5a2ad82905aed1986cb1f6ae 100644
--- a/components/scheduler/base/task_queue_manager.cc
+++ b/components/scheduler/base/task_queue_manager.cc
@@ -48,6 +48,7 @@ TaskQueueManager::TaskQueueManager(
disabled_by_default_tracing_category),
disabled_by_default_verbose_tracing_category_(
disabled_by_default_verbose_tracing_category),
+ current_selected_task_queue_(nullptr),
observer_(nullptr),
deletion_sentinel_(new DeletionSentinel()),
weak_factory_(this) {
@@ -218,12 +219,8 @@ void TaskQueueManager::DoWork(base::TimeTicks run_time, bool from_main_thread) {
// TODO(alexclarke): Consider refactoring the above loop to terminate only
// when there's no more work left to be done, rather than posting a
// continuation task.
- if (!selector_.EnabledWorkQueuesEmpty() || TryAdvanceTimeDomains()) {
+ if (!selector_.EnabledWorkQueuesEmpty() || TryAdvanceTimeDomains())
MaybeScheduleImmediateWork(FROM_HERE);
- } else {
- // Tell the task runner we have no more work.
- delegate_->OnNoMoreImmediateWork();
- }
}
bool TaskQueueManager::TryAdvanceTimeDomains() {
@@ -280,7 +277,11 @@ TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue(
}
TRACE_EVENT1(tracing_category_,
"TaskQueueManager::RunTask", "queue", queue->GetName());
+ internal::TaskQueueImpl* prev_selected_task_queue =
+ current_selected_task_queue_;
+ current_selected_task_queue_ = queue;
task_annotator_.RunTask("TaskQueueManager::PostTask", pending_task);
+ current_selected_task_queue_ = prev_selected_task_queue;
Sami 2016/02/01 11:15:06 Should we guard against prev_selected_task_queue g
alex clarke (OOO till 29th) 2016/02/01 14:16:54 Done.
// Detect if the TaskQueueManager just got deleted. If this happens we must
// not access any member variables after this point.

Powered by Google App Engine
This is Rietveld 408576698