Index: components/scheduler/child/task_queue_manager.cc |
diff --git a/components/scheduler/child/task_queue_manager.cc b/components/scheduler/child/task_queue_manager.cc |
index 5f06d6a7fe98298be636e572ff14068acad98f60..55bd4f74d7eab2af51214e93b185530a32b2046d 100644 |
--- a/components/scheduler/child/task_queue_manager.cc |
+++ b/components/scheduler/child/task_queue_manager.cc |
@@ -155,6 +155,11 @@ void TaskQueueManager::DoWork(bool posted_from_main_thread) { |
TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES; |
if (!UpdateWorkQueues(should_trigger_wakeup, &previous_task)) |
return; |
+ |
+ // Only run a single task per batch in nested run loops so that we can |
+ // properly exit the nested loop when someone calls RunLoop::Quit(). |
+ if (main_task_runner_->IsNested()) |
+ break; |
} |
} |