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

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: Fix test crashes and address feedback. 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..55bfa458b03c385b67c74f85e6a725b4a5dd569e 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> CreateQueueEnabledVoter() override;
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_; }
@@ -195,6 +194,23 @@ class BLINK_PLATFORM_EXPORT TaskQueueImpl final : public TaskQueue {
EnqueueOrder GetFenceForTest() const;
+ class QueueEnabledVoterImpl : public QueueEnabledVoter {
+ public:
+ explicit QueueEnabledVoterImpl(TaskQueueImpl* task_queue);
+ ~QueueEnabledVoterImpl() override;
+
+ // QueueEnabledVoter implementation.
+ void SetQueueEnabled(bool enabled) override;
+
+ TaskQueueImpl* GetTaskQueueForTest() const { return task_queue_.get(); }
+
+ private:
+ friend class TaskQueueImpl;
+
+ scoped_refptr<TaskQueueImpl> task_queue_;
+ bool enabled_;
+ };
+
private:
friend class WorkQueue;
friend class WorkQueueTest;
@@ -234,7 +250,8 @@ 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;
@@ -284,6 +301,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 OnQueueEnabledVoteChanged(bool enabled);
+ void EnableOrDisableWithSelector(bool enable);
+
const base::PlatformThreadId thread_id_;
mutable base::Lock any_thread_lock_;
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698