Chromium Code Reviews| Index: content/renderer/scheduler/renderer_scheduler_selector.h |
| diff --git a/content/renderer/scheduler/renderer_scheduler_selector.h b/content/renderer/scheduler/renderer_scheduler_selector.h |
| index 7f661308505b283fdae760cfd3dd557b753dc2fd..b768494c844f7056ae234055cfb2db59fcebe04c 100644 |
| --- a/content/renderer/scheduler/renderer_scheduler_selector.h |
| +++ b/content/renderer/scheduler/renderer_scheduler_selector.h |
| @@ -7,9 +7,17 @@ |
| #include <set> |
| +#include "base/memory/ref_counted.h" |
| #include "base/threading/thread_checker.h" |
| #include "content/renderer/scheduler/task_queue_selector.h" |
| +namespace base { |
| +namespace debug { |
| +class ConvertableToTraceFormat; |
| +class TracedValue; |
| +} |
| +} |
| + |
| namespace content { |
| // A RendererSchedulerSelector is a TaskQueueSelector which is used by the |
| @@ -54,6 +62,13 @@ class RendererSchedulerSelector : public TaskQueueSelector { |
| const std::vector<const base::TaskQueue*>& work_queues) override; |
| bool SelectWorkQueueToService(size_t* out_queue_index) override; |
| + // Serialize the selector state into the given state dictionary for tracing. |
| + void AsValueInto(base::debug::TracedValue* state) const; |
| + |
|
picksi1
2014/10/28 11:01:40
"AsValueInto" means nothing to me! Is there some i
Sami
2014/10/28 12:57:47
Agreed that it isn't very descriptive, but it's pr
|
| + // Set the name |queue_index| for tracing purposes. |name| must be a pointer |
| + // to a static string. |
| + void SetQueueName(size_t queue_index, const char* name); |
| + |
| private: |
| // Returns true if queueA contains an older task than queueB. |
| static bool IsOlder(const base::TaskQueue* queueA, |
| @@ -72,13 +87,26 @@ class RendererSchedulerSelector : public TaskQueueSelector { |
| bool QueueEnabledWithPriority(size_t queue_index, |
| QueuePriority priority) const; |
| + void DidSelectQueue(size_t selected_queue, QueuePriority priority); |
|
rmcilroy
2014/10/27 17:51:28
nit - comment when to call this.
Sami
2014/10/28 12:57:47
Done.
|
| + |
|
picksi1
2014/10/28 11:01:40
Possibly the ship has sailed, but it should the se
Sami
2014/10/28 12:57:47
I think we went back and forth with this a couple
|
| + scoped_refptr<base::debug::ConvertableToTraceFormat> AsValueWithSelectedQueue( |
| + size_t selected_queue) const; |
| + static const char* PriorityToString(QueuePriority priority); |
| + |
| // Number of high priority tasks which can be run before a normal priority |
| // task should be selected to prevent starvation. |
| // TODO(rmcilroy): Check if this is a good value. |
| static const size_t kMaxStarvationTasks = 5; |
| + struct Queue { |
| + Queue(); |
| + |
| + const base::TaskQueue* work_queue; |
| + const char* name; |
| + }; |
|
picksi1
2014/10/28 11:01:40
Does this structure need to hold a work_queue poin
Sami
2014/10/28 12:57:47
Yes, the work queues are not owned by this class s
|
| + |
| base::ThreadChecker main_thread_checker_; |
| - std::vector<const base::TaskQueue*> work_queues_; |
| + std::vector<Queue> queues_; |
| std::set<size_t> queue_priorities_[kQueuePriorityCount]; |
| size_t starvation_count_; |
| }; |