Index: components/scheduler/base/task_queue.h |
diff --git a/components/scheduler/base/task_queue.h b/components/scheduler/base/task_queue.h |
index abc3665e581e62d247b06dc27ffc7570ea50c959..393cc5077374a1b4f35302de9c1e6647b8273470 100644 |
--- a/components/scheduler/base/task_queue.h |
+++ b/components/scheduler/base/task_queue.h |
@@ -10,6 +10,7 @@ |
#include "components/scheduler/scheduler_export.h" |
namespace scheduler { |
+class TimeDomain; |
class SCHEDULER_EXPORT TaskQueue : public base::SingleThreadTaskRunner { |
public: |
@@ -102,6 +103,7 @@ class SCHEDULER_EXPORT TaskQueue : public base::SingleThreadTaskRunner { |
should_monitor_quiescence(false), |
pump_policy(TaskQueue::PumpPolicy::AUTO), |
wakeup_policy(TaskQueue::WakeupPolicy::CAN_WAKE_OTHER_QUEUES), |
+ time_domain(nullptr), |
should_notify_observers(true) {} |
Spec SetShouldMonitorQuiescence(bool should_monitor) { |
@@ -124,10 +126,16 @@ class SCHEDULER_EXPORT TaskQueue : public base::SingleThreadTaskRunner { |
return *this; |
} |
+ Spec SetTimeDomain(TimeDomain* domain) { |
+ time_domain = domain; |
+ return *this; |
+ } |
+ |
const char* name; |
bool should_monitor_quiescence; |
TaskQueue::PumpPolicy pump_policy; |
TaskQueue::WakeupPolicy wakeup_policy; |
+ TimeDomain* time_domain; |
bool should_notify_observers; |
}; |
@@ -173,6 +181,10 @@ class SCHEDULER_EXPORT TaskQueue : public base::SingleThreadTaskRunner { |
virtual void RemoveTaskObserver( |
base::MessageLoop::TaskObserver* task_observer) = 0; |
+ // Removes the task queue from the previous TimeDomain and adds it to |
+ // |domain|. This is a moderately expensive operation. |
+ virtual void SetTimeDomain(const scoped_refptr<TimeDomain>& domain) = 0; |
+ |
protected: |
~TaskQueue() override {} |