[TaskScheduler]: Implement ExecutionEnvironment.
In order to use TaskSource from TaskTracker instead of Sequence,
the sequence specific data must be encoded in a new struct
ExecutionEnvironment and returned from a virtual method.
Bug: 839091
Change-Id: I64d06c540a1eb9a7f25036ee73e7a34f024f1dbb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1524523
Commit-Queue: Etienne Pierre-Doray <[email protected]>
Reviewed-by: Gabriel Charette <[email protected]>
Reviewed-by: François Doray <[email protected]>
Cr-Commit-Position: refs/heads/master@{#641989}
diff --git a/base/task/task_scheduler/task_source.h b/base/task/task_scheduler/task_source.h
index b31ecabf..74b5bcd 100644
--- a/base/task/task_scheduler/task_source.h
+++ b/base/task/task_scheduler/task_source.h
@@ -11,15 +11,22 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/optional.h"
+#include "base/sequence_token.h"
#include "base/task/common/intrusive_heap.h"
#include "base/task/task_scheduler/scheduler_lock.h"
#include "base/task/task_scheduler/sequence_sort_key.h"
#include "base/task/task_scheduler/task.h"
#include "base/task/task_traits.h"
+#include "base/threading/sequence_local_storage_map.h"
namespace base {
namespace internal {
+struct BASE_EXPORT ExecutionEnvironment {
+ SequenceToken token;
+ SequenceLocalStorageMap* sequence_local_storage;
+};
+
// A TaskSource is a virtual class that provides a series of Tasks that must be
// executed.
//
@@ -107,6 +114,8 @@
// active TaskSource::Transaction.
Transaction BeginTransaction();
+ virtual ExecutionEnvironment GetExecutionEnvironment() = 0;
+
// Support for IntrusiveHeap.
void SetHeapHandle(const HeapHandle& handle);
void ClearHeapHandle();