OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_impl.h" | 5 #include "platform/scheduler/base/task_queue_impl.h" |
6 | 6 |
7 #include "base/trace_event/blame_context.h" | 7 #include "base/trace_event/blame_context.h" |
8 #include "platform/scheduler/base/task_queue_manager.h" | 8 #include "platform/scheduler/base/task_queue_manager.h" |
9 #include "platform/scheduler/base/task_queue_manager_delegate.h" | 9 #include "platform/scheduler/base/task_queue_manager_delegate.h" |
10 #include "platform/scheduler/base/time_domain.h" | 10 #include "platform/scheduler/base/time_domain.h" |
11 #include "platform/scheduler/base/work_queue.h" | 11 #include "platform/scheduler/base/work_queue.h" |
12 | 12 |
13 namespace blink { | 13 namespace blink { |
14 namespace scheduler { | 14 namespace scheduler { |
15 | 15 |
| 16 // static |
| 17 const char* TaskQueue::NameForQueueType(TaskQueue::QueueType queue_type) { |
| 18 switch (queue_type) { |
| 19 case TaskQueue::QueueType::CONTROL: |
| 20 return "control_tq"; |
| 21 case TaskQueue::QueueType::DEFAULT: |
| 22 return "default_tq"; |
| 23 case TaskQueue::QueueType::DEFAULT_LOADING: |
| 24 return "default_loading_tq"; |
| 25 case TaskQueue::QueueType::DEFAULT_TIMER: |
| 26 return "default_timer_tq"; |
| 27 case TaskQueue::QueueType::UNTHROTTLED: |
| 28 return "unthrottled_tq"; |
| 29 case TaskQueue::QueueType::FRAME_LOADING: |
| 30 return "frame_loading_tq"; |
| 31 case TaskQueue::QueueType::FRAME_TIMER: |
| 32 return "frame_timer_tq"; |
| 33 case TaskQueue::QueueType::FRAME_UNTHROTTLED: |
| 34 return "frame_unthrottled_tq"; |
| 35 case TaskQueue::QueueType::COMPOSITOR: |
| 36 return "compositor_tq"; |
| 37 case TaskQueue::QueueType::IDLE: |
| 38 return "idle_tq"; |
| 39 case TaskQueue::QueueType::TEST: |
| 40 return "test_tq"; |
| 41 case TaskQueue::QueueType::COUNT: |
| 42 DCHECK(false); |
| 43 return nullptr; |
| 44 } |
| 45 DCHECK(false); |
| 46 return nullptr; |
| 47 } |
| 48 |
16 namespace internal { | 49 namespace internal { |
17 | 50 |
18 TaskQueueImpl::TaskQueueImpl( | 51 TaskQueueImpl::TaskQueueImpl( |
19 TaskQueueManager* task_queue_manager, | 52 TaskQueueManager* task_queue_manager, |
20 TimeDomain* time_domain, | 53 TimeDomain* time_domain, |
21 const Spec& spec, | 54 const Spec& spec, |
22 const char* disabled_by_default_tracing_category, | 55 const char* disabled_by_default_tracing_category, |
23 const char* disabled_by_default_verbose_tracing_category) | 56 const char* disabled_by_default_verbose_tracing_category) |
24 : thread_id_(base::PlatformThread::CurrentId()), | 57 : thread_id_(base::PlatformThread::CurrentId()), |
25 any_thread_(task_queue_manager, time_domain), | 58 any_thread_(task_queue_manager, time_domain), |
26 name_(spec.name), | 59 type_(spec.type), |
| 60 name_(NameForQueueType(spec.type)), |
27 disabled_by_default_tracing_category_( | 61 disabled_by_default_tracing_category_( |
28 disabled_by_default_tracing_category), | 62 disabled_by_default_tracing_category), |
29 disabled_by_default_verbose_tracing_category_( | 63 disabled_by_default_verbose_tracing_category_( |
30 disabled_by_default_verbose_tracing_category), | 64 disabled_by_default_verbose_tracing_category), |
31 main_thread_only_(task_queue_manager, this, time_domain), | 65 main_thread_only_(task_queue_manager, this, time_domain), |
32 should_monitor_quiescence_(spec.should_monitor_quiescence), | 66 should_monitor_quiescence_(spec.should_monitor_quiescence), |
33 should_notify_observers_(spec.should_notify_observers), | 67 should_notify_observers_(spec.should_notify_observers), |
34 should_report_when_execution_blocked_( | 68 should_report_when_execution_blocked_( |
35 spec.should_report_when_execution_blocked) { | 69 spec.should_report_when_execution_blocked) { |
36 DCHECK(time_domain); | 70 DCHECK(time_domain); |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 main_thread_only().delayed_work_queue->Size() + | 455 main_thread_only().delayed_work_queue->Size() + |
422 main_thread_only().delayed_incoming_queue.size()); | 456 main_thread_only().delayed_incoming_queue.size()); |
423 if (!is_locked) | 457 if (!is_locked) |
424 any_thread_lock_.Release(); | 458 any_thread_lock_.Release(); |
425 } | 459 } |
426 | 460 |
427 const char* TaskQueueImpl::GetName() const { | 461 const char* TaskQueueImpl::GetName() const { |
428 return name_; | 462 return name_; |
429 } | 463 } |
430 | 464 |
| 465 TaskQueue::QueueType TaskQueueImpl::GetQueueType() const { |
| 466 return type_; |
| 467 } |
| 468 |
431 void TaskQueueImpl::SetQueuePriority(QueuePriority priority) { | 469 void TaskQueueImpl::SetQueuePriority(QueuePriority priority) { |
432 if (!main_thread_only().task_queue_manager || priority == GetQueuePriority()) | 470 if (!main_thread_only().task_queue_manager || priority == GetQueuePriority()) |
433 return; | 471 return; |
434 main_thread_only().task_queue_manager->selector_.SetQueuePriority(this, | 472 main_thread_only().task_queue_manager->selector_.SetQueuePriority(this, |
435 priority); | 473 priority); |
436 } | 474 } |
437 | 475 |
438 TaskQueueImpl::QueuePriority TaskQueueImpl::GetQueuePriority() const { | 476 TaskQueueImpl::QueuePriority TaskQueueImpl::GetQueuePriority() const { |
439 size_t set_index = immediate_work_queue()->work_queue_set_index(); | 477 size_t set_index = immediate_work_queue()->work_queue_set_index(); |
440 DCHECK_EQ(set_index, delayed_work_queue()->work_queue_set_index()); | 478 DCHECK_EQ(set_index, delayed_work_queue()->work_queue_set_index()); |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 state->SetBoolean("is_cancelled", task.task.IsCancelled()); | 743 state->SetBoolean("is_cancelled", task.task.IsCancelled()); |
706 state->SetDouble( | 744 state->SetDouble( |
707 "delayed_run_time", | 745 "delayed_run_time", |
708 (task.delayed_run_time - base::TimeTicks()).InMicroseconds() / 1000.0L); | 746 (task.delayed_run_time - base::TimeTicks()).InMicroseconds() / 1000.0L); |
709 state->EndDictionary(); | 747 state->EndDictionary(); |
710 } | 748 } |
711 | 749 |
712 } // namespace internal | 750 } // namespace internal |
713 } // namespace scheduler | 751 } // namespace scheduler |
714 } // namespace blink | 752 } // namespace blink |
OLD | NEW |