Index: components/scheduler/child/prioritizing_task_queue_selector.cc |
diff --git a/components/scheduler/child/prioritizing_task_queue_selector.cc b/components/scheduler/child/prioritizing_task_queue_selector.cc |
index 5275f72b65d2eda7abe4aa77b4985082215cc07b..e0634629a15f218275174d046195cc2ff087329f 100644 |
--- a/components/scheduler/child/prioritizing_task_queue_selector.cc |
+++ b/components/scheduler/child/prioritizing_task_queue_selector.cc |
@@ -11,12 +11,17 @@ |
namespace scheduler { |
PrioritizingTaskQueueSelector::PrioritizingTaskQueueSelector() |
- : starvation_count_(0), task_queue_selector_observer_(nullptr) { |
+ : starvation_count_(0), task_queue_selector_observer_(nullptr), |
+ pre_shutdown_(false) { |
} |
PrioritizingTaskQueueSelector::~PrioritizingTaskQueueSelector() { |
} |
+void PrioritizingTaskQueueSelector::PreShutdown() { |
+ pre_shutdown_ = true; |
+} |
+ |
void PrioritizingTaskQueueSelector::RegisterWorkQueues( |
const std::vector<const base::TaskQueue*>& work_queues) { |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
@@ -33,6 +38,8 @@ void PrioritizingTaskQueueSelector::RegisterWorkQueues( |
void PrioritizingTaskQueueSelector::SetQueuePriority(size_t queue_index, |
QueuePriority priority) { |
+ if (pre_shutdown_) |
+ return; |
DCHECK(main_thread_checker_.CalledOnValidThread()); |
DCHECK_LT(queue_index, work_queues_.size()); |
DCHECK_LT(priority, QUEUE_PRIORITY_COUNT); |
@@ -44,10 +51,14 @@ void PrioritizingTaskQueueSelector::SetQueuePriority(size_t queue_index, |
void PrioritizingTaskQueueSelector::EnableQueue(size_t queue_index, |
QueuePriority priority) { |
+ if (pre_shutdown_) |
+ return; |
SetQueuePriority(queue_index, priority); |
} |
void PrioritizingTaskQueueSelector::DisableQueue(size_t queue_index) { |
+ if (pre_shutdown_) |
+ return; |
DisableQueueInternal(queue_index); |
} |