| Index: base/task_scheduler/sequence.h | 
| diff --git a/base/task_scheduler/sequence.h b/base/task_scheduler/sequence.h | 
| index 8717336080e623dfde5ce8e5acc108ebcc9e61c0..408d99f9c6426167cd44ffad579c9fa2555e924b 100644 | 
| --- a/base/task_scheduler/sequence.h | 
| +++ b/base/task_scheduler/sequence.h | 
| @@ -22,7 +22,10 @@ | 
| namespace base { | 
| namespace internal { | 
|  | 
| -// A sequence holds tasks that must be executed in posting order. | 
| +// A Sequence holds slots each containing up to a single Task that must be | 
| +// executed in posting order. | 
| +// | 
| +// In comments below, an "empty Sequence" is a Sequence with no slot. | 
| // | 
| // Note: there is a known refcounted-ownership cycle in the Scheduler | 
| // architecture: Sequence -> Task -> TaskRunner -> Sequence -> ... | 
| @@ -41,20 +44,27 @@ class BASE_EXPORT Sequence : public RefCountedThreadSafe<Sequence> { | 
| public: | 
| Sequence(); | 
|  | 
| -  // Adds |task| at the end of the sequence's queue. Returns true if the | 
| -  // sequence was empty before this operation. | 
| +  // Adds |task| in a new slot at the end of the Sequence. Returns true if the | 
| +  // Sequence was empty before this operation. | 
| bool PushTask(std::unique_ptr<Task> task); | 
|  | 
| -  // Returns the task in front of the sequence's queue, if any. | 
| -  const Task* PeekTask() const; | 
| +  // Transfers ownership of the Task in the front slot of the Sequence to the | 
| +  // caller. The front slot of the Sequence will be nullptr and remain until | 
| +  // Pop(). Cannot be called on an empty Sequence or a Sequence whose front slot | 
| +  // is already nullptr. | 
| +  std::unique_ptr<Task> TakeTask(); | 
| + | 
| +  // Returns the TaskTraits of the Task in front of the Sequence. Cannot be | 
| +  // called on an empty Sequence or on a Sequence whose front slot is empty. | 
| +  TaskTraits PeekTaskTraits() const; | 
|  | 
| -  // Removes the task in front of the sequence's queue. Returns true if the | 
| -  // sequence is empty after this operation. Cannot be called on an empty | 
| -  // sequence. | 
| -  bool PopTask(); | 
| +  // Removes the front slot of the Sequence. The front slot must have been | 
| +  // emptied by TakeTask() before this is called. Cannot be called on an empty | 
| +  // Sequence. Returns true if the Sequence is empty after this operation. | 
| +  bool Pop(); | 
|  | 
| -  // Returns a SequenceSortKey representing the priority of the sequence. Cannot | 
| -  // be called on an empty sequence. | 
| +  // Returns a SequenceSortKey representing the priority of the Sequence. Cannot | 
| +  // be called on an empty Sequence. | 
| SequenceSortKey GetSortKey() const; | 
|  | 
| // Returns a token that uniquely identifies this Sequence. | 
| @@ -72,7 +82,7 @@ class BASE_EXPORT Sequence : public RefCountedThreadSafe<Sequence> { | 
| // Queue of tasks to execute. | 
| std::queue<std::unique_ptr<Task>> queue_; | 
|  | 
| -  // Number of tasks contained in the sequence for each priority. | 
| +  // Number of tasks contained in the Sequence for each priority. | 
| size_t num_tasks_per_priority_[static_cast<int>(TaskPriority::HIGHEST) + 1] = | 
| {}; | 
|  | 
|  |