summaryrefslogtreecommitdiffstats
path: root/chromium/base/task/sequence_manager/sequence_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/task/sequence_manager/sequence_manager.h')
-rw-r--r--chromium/base/task/sequence_manager/sequence_manager.h19
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;