| OLD | NEW |
| 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 "components/scheduler/base/task_queue_manager.h" | 5 #include "components/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 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 } | 359 } |
| 360 | 360 |
| 361 internal::EnqueueOrder TaskQueueManager::GetNextSequenceNumber() { | 361 internal::EnqueueOrder TaskQueueManager::GetNextSequenceNumber() { |
| 362 return enqueue_order_generator_.GenerateNext(); | 362 return enqueue_order_generator_.GenerateNext(); |
| 363 } | 363 } |
| 364 | 364 |
| 365 LazyNow TaskQueueManager::CreateLazyNow() const { | 365 LazyNow TaskQueueManager::CreateLazyNow() const { |
| 366 return LazyNow(delegate_.get()); | 366 return LazyNow(delegate_.get()); |
| 367 } | 367 } |
| 368 | 368 |
| 369 scoped_refptr<base::trace_event::ConvertableToTraceFormat> | 369 scoped_ptr<base::trace_event::ConvertableToTraceFormat> |
| 370 TaskQueueManager::AsValueWithSelectorResult( | 370 TaskQueueManager::AsValueWithSelectorResult( |
| 371 bool should_run, | 371 bool should_run, |
| 372 internal::WorkQueue* selected_work_queue) const { | 372 internal::WorkQueue* selected_work_queue) const { |
| 373 DCHECK(main_thread_checker_.CalledOnValidThread()); | 373 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 374 scoped_refptr<base::trace_event::TracedValue> state = | 374 scoped_ptr<base::trace_event::TracedValue> state( |
| 375 new base::trace_event::TracedValue(); | 375 new base::trace_event::TracedValue()); |
| 376 state->BeginArray("queues"); | 376 state->BeginArray("queues"); |
| 377 for (auto& queue : queues_) | 377 for (auto& queue : queues_) |
| 378 queue->AsValueInto(state.get()); | 378 queue->AsValueInto(state.get()); |
| 379 state->EndArray(); | 379 state->EndArray(); |
| 380 state->BeginDictionary("selector"); | 380 state->BeginDictionary("selector"); |
| 381 selector_.AsValueInto(state.get()); | 381 selector_.AsValueInto(state.get()); |
| 382 state->EndDictionary(); | 382 state->EndDictionary(); |
| 383 if (should_run) { | 383 if (should_run) { |
| 384 state->SetString("selected_queue", | 384 state->SetString("selected_queue", |
| 385 selected_work_queue->task_queue()->GetName()); | 385 selected_work_queue->task_queue()->GetName()); |
| 386 state->SetString("work_queue_name", selected_work_queue->name()); | 386 state->SetString("work_queue_name", selected_work_queue->name()); |
| 387 } | 387 } |
| 388 | 388 |
| 389 state->BeginArray("time_domains"); | 389 state->BeginArray("time_domains"); |
| 390 for (auto& time_domain : time_domains_) | 390 for (auto& time_domain : time_domains_) |
| 391 time_domain->AsValueInto(state.get()); | 391 time_domain->AsValueInto(state.get()); |
| 392 state->EndArray(); | 392 state->EndArray(); |
| 393 return state; | 393 return std::move(state); |
| 394 } | 394 } |
| 395 | 395 |
| 396 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) { | 396 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) { |
| 397 DCHECK(main_thread_checker_.CalledOnValidThread()); | 397 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 398 // Only schedule DoWork if there's something to do. | 398 // Only schedule DoWork if there's something to do. |
| 399 if (!queue->immediate_work_queue()->Empty() || | 399 if (!queue->immediate_work_queue()->Empty() || |
| 400 !queue->delayed_work_queue()->Empty()) { | 400 !queue->delayed_work_queue()->Empty()) { |
| 401 MaybeScheduleImmediateWork(FROM_HERE); | 401 MaybeScheduleImmediateWork(FROM_HERE); |
| 402 } | 402 } |
| 403 } | 403 } |
| 404 | 404 |
| 405 void TaskQueueManager::OnTriedToSelectBlockedWorkQueue( | 405 void TaskQueueManager::OnTriedToSelectBlockedWorkQueue( |
| 406 internal::WorkQueue* work_queue) { | 406 internal::WorkQueue* work_queue) { |
| 407 DCHECK(main_thread_checker_.CalledOnValidThread()); | 407 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 408 DCHECK(!work_queue->Empty()); | 408 DCHECK(!work_queue->Empty()); |
| 409 if (observer_) { | 409 if (observer_) { |
| 410 observer_->OnTriedToExecuteBlockedTask(*work_queue->task_queue(), | 410 observer_->OnTriedToExecuteBlockedTask(*work_queue->task_queue(), |
| 411 *work_queue->GetFrontTask()); | 411 *work_queue->GetFrontTask()); |
| 412 } | 412 } |
| 413 } | 413 } |
| 414 | 414 |
| 415 } // namespace scheduler | 415 } // namespace scheduler |
| OLD | NEW |