Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1239)

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h

Issue 2540663002: Add the concept of QueueEnabledVoters to blink scheduler TaskQueue (Closed)
Patch Set: Added a couple of extra tests Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698