Chromium Code Reviews| Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h |
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h |
| index d4db9b663066386143aba5c31dd3b592a25e567f..4ace7a39f4b1674c182396245df2e8a3d2576b86 100644 |
| --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h |
| +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h |
| @@ -119,7 +119,7 @@ class BLINK_PLATFORM_EXPORT TaskQueueImpl final : public TaskQueue { |
| bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, |
| const base::Closure& task, |
| base::TimeDelta delay) override; |
| - void SetQueueEnabled(bool enabled) override; |
| + std::unique_ptr<QueueEnabledVoter> GetQueueEnabledVoter() override; |
|
Sami
2016/11/29 14:45:17
s/Get/Create/ to make this a bit more obvious.
alex clarke (OOO till 29th)
2016/11/29 16:49:11
Done.
|
| bool IsQueueEnabled() const override; |
| bool IsEmpty() const override; |
| size_t GetNumberOfPendingTasks() const override; |
| @@ -136,14 +136,13 @@ class BLINK_PLATFORM_EXPORT TaskQueueImpl final : public TaskQueue { |
| void InsertFence(InsertFencePosition position) override; |
| void RemoveFence() override; |
| bool BlockedByFence() const override; |
| + const char* GetName() const override; |
| + QueueType GetQueueType() const override; |
| // If this returns false then future updates for this queue are not needed |
| // unless requested. |
| bool MaybeUpdateImmediateWorkQueues(); |
| - const char* GetName() const override; |
| - QueueType GetQueueType() const override; |
| - |
| void AsValueInto(base::trace_event::TracedValue* state) const; |
| bool GetQuiescenceMonitored() const { return should_monitor_quiescence_; } |
| @@ -234,12 +233,29 @@ class BLINK_PLATFORM_EXPORT TaskQueueImpl final : public TaskQueue { |
| base::ObserverList<base::MessageLoop::TaskObserver> task_observers; |
| size_t set_index; |
| HeapHandle heap_handle; |
| - bool is_enabled; |
| + int is_enabled_refcount; |
| + int voter_refcount; |
| base::trace_event::BlameContext* blame_context; // Not owned. |
| EnqueueOrder current_fence; |
| base::TimeTicks scheduled_time_domain_wakeup; |
| }; |
| + class QueueEnabledVoterImpl : public QueueEnabledVoter { |
| + public: |
| + explicit QueueEnabledVoterImpl(TaskQueueImpl* task_queue); |
| + ~QueueEnabledVoterImpl() override; |
| + |
| + // QueueEnabledVoter implementation. |
| + void SetQueueEnabled(bool enabled) override; |
| + TaskQueue* GetTaskQueue() const override; |
| + |
| + private: |
| + friend class TaskQueueImpl; |
| + |
| + scoped_refptr<TaskQueueImpl> task_queue_; |
| + bool enabled_; |
| + }; |
| + |
| ~TaskQueueImpl() override; |
| bool PostImmediateTaskImpl(const tracked_objects::Location& from_here, |
| @@ -284,6 +300,10 @@ class BLINK_PLATFORM_EXPORT TaskQueueImpl final : public TaskQueue { |
| static void TaskAsValueInto(const Task& task, |
| base::trace_event::TracedValue* state); |
| + void RemoveQueueEnabledVoter(const QueueEnabledVoterImpl* voter); |
| + void QueueEnabledVoteChanged(bool enabled); |
|
Sami
2016/11/29 14:45:16
nit: OnQueueEnabledVoteChanged?
alex clarke (OOO till 29th)
2016/11/29 16:49:11
Done.
|
| + void EnableOrDisableWithSelector(bool enable); |
| + |
| const base::PlatformThreadId thread_id_; |
| mutable base::Lock any_thread_lock_; |