| Index: base/task_scheduler/task_tracker.cc
|
| diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc
|
| index be54614bec03fc63c555e8435cf62c529f642904..163e87a3baa50cb5e237d6dc635588d40b59db71 100644
|
| --- a/base/task_scheduler/task_tracker.cc
|
| +++ b/base/task_scheduler/task_tracker.cc
|
| @@ -20,6 +20,10 @@
|
| #include "base/trace_event/trace_event.h"
|
| #include "base/values.h"
|
|
|
| +#if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| +#include "base/files/file_descriptor_watcher_posix.h"
|
| +#endif
|
| +
|
| namespace base {
|
| namespace internal {
|
|
|
| @@ -167,10 +171,23 @@ class TaskTracker::State {
|
| DISALLOW_COPY_AND_ASSIGN(State);
|
| };
|
|
|
| -TaskTracker::TaskTracker()
|
| +TaskTracker::TaskTracker(
|
| +#if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| + MessageLoopForIO* watch_file_descriptor_message_loop
|
| +#endif
|
| + )
|
| : state_(new State),
|
| flush_cv_(flush_lock_.CreateConditionVariable()),
|
| - shutdown_lock_(&flush_lock_) {}
|
| + shutdown_lock_(&flush_lock_)
|
| +#if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| + ,
|
| + watch_file_descriptor_message_loop_(watch_file_descriptor_message_loop)
|
| +#endif
|
| +{
|
| +#if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| + DCHECK(watch_file_descriptor_message_loop_);
|
| +#endif
|
| +}
|
| TaskTracker::~TaskTracker() = default;
|
|
|
| void TaskTracker::Shutdown() {
|
| @@ -223,6 +240,12 @@ bool TaskTracker::RunTask(std::unique_ptr<Task> task,
|
| TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN);
|
|
|
| {
|
| +#if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| + // Support FileDescriptorWatcher for the scope of the task.
|
| + FileDescriptorWatcher file_descriptor_watcher(
|
| + watch_file_descriptor_message_loop_);
|
| +#endif
|
| +
|
| // Set up SequenceToken as expected for the scope of the task.
|
| ScopedSetSequenceTokenForCurrentThread
|
| scoped_set_sequence_token_for_current_thread(sequence_token);
|
|
|