diff options
Diffstat (limited to 'chromium/base/task/sequence_manager/sequence_manager.h')
-rw-r--r-- | chromium/base/task/sequence_manager/sequence_manager.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/chromium/base/task/sequence_manager/sequence_manager.h b/chromium/base/task/sequence_manager/sequence_manager.h index cd2163d7793..6e1cb0b752b 100644 --- a/chromium/base/task/sequence_manager/sequence_manager.h +++ b/chromium/base/task/sequence_manager/sequence_manager.h @@ -11,6 +11,7 @@ #include "base/macros.h" #include "base/message_loop/message_pump_type.h" #include "base/message_loop/timer_slack.h" +#include "base/sequenced_task_runner.h" #include "base/single_thread_task_runner.h" #include "base/task/sequence_manager/task_queue_impl.h" #include "base/task/sequence_manager/task_time_observer.h" @@ -19,6 +20,7 @@ namespace base { class MessagePump; +class TaskObserver; namespace sequence_manager { @@ -102,6 +104,11 @@ class BASE_EXPORT SequenceManager { kNone, kEnabled, kEnabledWithBacktrace, + + // Logs high priority tasks and the lower priority tasks they skipped + // past. Useful for debugging test failures caused by scheduler policy + // changes. + kReorderedOnly, }; TaskLogging task_execution_logging = TaskLogging::kNone; @@ -141,6 +148,10 @@ class BASE_EXPORT SequenceManager { // performs this initialization automatically. virtual void BindToCurrentThread() = 0; + // Returns the task runner the current task was posted on. Returns null if no + // task is currently running. Must be called on the bound thread. + virtual scoped_refptr<SequencedTaskRunner> GetTaskRunnerForCurrentTask() = 0; + // Finishes the initialization for a SequenceManager created via // CreateUnboundSequenceManagerWithPump(). Must not be called in any other // circumstances. The ownership of the pump is transferred to SequenceManager. @@ -238,6 +249,14 @@ class BASE_EXPORT SequenceManager { virtual std::unique_ptr<NativeWorkHandle> OnNativeWorkPending( TaskQueue::QueuePriority priority) = 0; + // Adds an observer which reports task execution. Can only be called on the + // same thread that |this| is running on. + virtual void AddTaskObserver(TaskObserver* task_observer) = 0; + + // Removes an observer which reports task execution. Can only be called on the + // same thread that |this| is running on. + virtual void RemoveTaskObserver(TaskObserver* task_observer) = 0; + protected: virtual std::unique_ptr<internal::TaskQueueImpl> CreateTaskQueueImpl( const TaskQueue::Spec& spec) = 0; |