| Index: cc/test/ordered_simple_task_runner.cc
 | 
| diff --git a/cc/test/ordered_simple_task_runner.cc b/cc/test/ordered_simple_task_runner.cc
 | 
| index 9dc4bbcd2dacb680d586699576a632e286aab037..dcf6f5fd4069e3b3b912df29e6a6f18b454dc2d8 100644
 | 
| --- a/cc/test/ordered_simple_task_runner.cc
 | 
| +++ b/cc/test/ordered_simple_task_runner.cc
 | 
| @@ -28,33 +28,28 @@
 | 
|  namespace cc {
 | 
|  
 | 
|  // TestOrderablePendingTask implementation
 | 
| -TestOrderablePendingTask::TestOrderablePendingTask()
 | 
| -    : base::TestPendingTask(),
 | 
| -      task_id_(TestOrderablePendingTask::task_id_counter++) {
 | 
| -}
 | 
| +TestOrderablePendingTaskInfo::TestOrderablePendingTaskInfo()
 | 
| +    : task_id_(TestOrderablePendingTaskInfo::task_id_counter++) {}
 | 
|  
 | 
| -TestOrderablePendingTask::TestOrderablePendingTask(
 | 
| +TestOrderablePendingTaskInfo::TestOrderablePendingTaskInfo(
 | 
|      const tracked_objects::Location& location,
 | 
| -    const base::Closure& task,
 | 
|      base::TimeTicks post_time,
 | 
|      base::TimeDelta delay,
 | 
|      TestNestability nestability)
 | 
| -    : base::TestPendingTask(location, task, post_time, delay, nestability),
 | 
| -      task_id_(TestOrderablePendingTask::task_id_counter++) {
 | 
| -}
 | 
| +    : base::TestPendingTaskInfo(location, post_time, delay, nestability),
 | 
| +      task_id_(TestOrderablePendingTaskInfo::task_id_counter++) {}
 | 
|  
 | 
| -size_t TestOrderablePendingTask::task_id_counter = 0;
 | 
| +size_t TestOrderablePendingTaskInfo::task_id_counter = 0;
 | 
|  
 | 
| -TestOrderablePendingTask::~TestOrderablePendingTask() {
 | 
| -}
 | 
| +TestOrderablePendingTaskInfo::~TestOrderablePendingTaskInfo() {}
 | 
|  
 | 
| -bool TestOrderablePendingTask::operator==(
 | 
| -    const TestOrderablePendingTask& other) const {
 | 
| +bool TestOrderablePendingTaskInfo::operator==(
 | 
| +    const TestOrderablePendingTaskInfo& other) const {
 | 
|    return task_id_ == other.task_id_;
 | 
|  }
 | 
|  
 | 
| -bool TestOrderablePendingTask::operator<(
 | 
| -    const TestOrderablePendingTask& other) const {
 | 
| +bool TestOrderablePendingTaskInfo::operator<(
 | 
| +    const TestOrderablePendingTaskInfo& other) const {
 | 
|    if (*this == other)
 | 
|      return false;
 | 
|  
 | 
| @@ -65,14 +60,14 @@ bool TestOrderablePendingTask::operator<(
 | 
|  }
 | 
|  
 | 
|  std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
 | 
| -TestOrderablePendingTask::AsValue() const {
 | 
| +TestOrderablePendingTaskInfo::AsValue() const {
 | 
|    std::unique_ptr<base::trace_event::TracedValue> state(
 | 
|        new base::trace_event::TracedValue());
 | 
|    AsValueInto(state.get());
 | 
|    return std::move(state);
 | 
|  }
 | 
|  
 | 
| -void TestOrderablePendingTask::AsValueInto(
 | 
| +void TestOrderablePendingTaskInfo::AsValueInto(
 | 
|      base::trace_event::TracedValue* state) const {
 | 
|    state->SetInteger("id", base::saturated_cast<int>(task_id_));
 | 
|    state->SetInteger("run_at", GetTimeToRun().ToInternalValue());
 | 
| @@ -102,11 +97,11 @@ bool OrderedSimpleTaskRunner::PostDelayedTask(
 | 
|      const base::Closure& task,
 | 
|      base::TimeDelta delay) {
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
| -  TestOrderablePendingTask pt(from_here, task, now_src_->NowTicks(), delay,
 | 
| -                              base::TestPendingTask::NESTABLE);
 | 
| +  TestOrderablePendingTaskInfo pt(from_here, now_src_->NowTicks(), delay,
 | 
| +                                  base::TestPendingTaskInfo::NESTABLE);
 | 
|  
 | 
|    TRACE_TASK("OrderedSimpleTaskRunner::PostDelayedTask", pt);
 | 
| -  pending_tasks_.insert(pt);
 | 
| +  pending_tasks_.insert(std::make_pair(pt, task));
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| @@ -115,11 +110,11 @@ bool OrderedSimpleTaskRunner::PostNonNestableDelayedTask(
 | 
|      const base::Closure& task,
 | 
|      base::TimeDelta delay) {
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
| -  TestOrderablePendingTask pt(from_here, task, now_src_->NowTicks(), delay,
 | 
| -                              base::TestPendingTask::NON_NESTABLE);
 | 
| +  TestOrderablePendingTaskInfo pt(from_here, now_src_->NowTicks(), delay,
 | 
| +                                  base::TestPendingTaskInfo::NON_NESTABLE);
 | 
|  
 | 
|    TRACE_TASK("OrderedSimpleTaskRunner::PostNonNestableDelayedTask", pt);
 | 
| -  pending_tasks_.insert(pt);
 | 
| +  pending_tasks_.insert(std::make_pair(pt, task));
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| @@ -141,7 +136,8 @@ base::TimeTicks OrderedSimpleTaskRunner::NextTaskTime() {
 | 
|      return AbsoluteMaxNow();
 | 
|    }
 | 
|  
 | 
| -  return pending_tasks_.begin()->GetTimeToRun();
 | 
| +  const base::TestPendingTaskInfo& task_info = pending_tasks_.begin()->first;
 | 
| +  return task_info.GetTimeToRun();
 | 
|  }
 | 
|  
 | 
|  base::TimeDelta OrderedSimpleTaskRunner::DelayToNextTaskTime() {
 | 
| @@ -215,14 +211,15 @@ bool OrderedSimpleTaskRunner::RunTasksWhile(
 | 
|        break;
 | 
|      }
 | 
|  
 | 
| -    std::set<TestOrderablePendingTask>::iterator task_to_run =
 | 
| +    TestOrderablePendingTaskQueue::iterator task_to_run =
 | 
|          pending_tasks_.begin();
 | 
|      {
 | 
| -      TRACE_EVENT1("cc",
 | 
| -                   "OrderedSimpleTaskRunner::RunPendingTasks running",
 | 
| -                   "task",
 | 
| -                   task_to_run->AsValue());
 | 
| -      task_to_run->task.Run();
 | 
| +      const base::TestPendingTaskInfo& task_info = task_to_run->first;
 | 
| +      base::OnceClosure task = std::move(task_to_run->second);
 | 
| +
 | 
| +      TRACE_EVENT1("cc", "OrderedSimpleTaskRunner::RunPendingTasks running",
 | 
| +                   "task", task_info.AsValue());
 | 
| +      std::move(task).Run();
 | 
|      }
 | 
|  
 | 
|      pending_tasks_.erase(task_to_run);
 | 
| @@ -277,12 +274,9 @@ void OrderedSimpleTaskRunner::AsValueInto(
 | 
|                      base::saturated_cast<int>(pending_tasks_.size()));
 | 
|  
 | 
|    state->BeginArray("tasks");
 | 
| -  for (std::set<TestOrderablePendingTask>::const_iterator it =
 | 
| -           pending_tasks_.begin();
 | 
| -       it != pending_tasks_.end();
 | 
| -       ++it) {
 | 
| +  for (const auto& pending_task : pending_tasks_) {
 | 
|      state->BeginDictionary();
 | 
| -    it->AsValueInto(state);
 | 
| +    pending_task.first.AsValueInto(state);
 | 
|      state->EndDictionary();
 | 
|    }
 | 
|    state->EndArray();
 | 
| @@ -310,15 +304,17 @@ bool OrderedSimpleTaskRunner::TaskRunCountBelowCallback(size_t max_tasks,
 | 
|  }
 | 
|  
 | 
|  base::Callback<bool(void)> OrderedSimpleTaskRunner::TaskExistedInitially() {
 | 
| -  // base::Bind takes a copy of pending_tasks_
 | 
| +  std::set<size_t> existing_task_ids;
 | 
| +  for (const auto& task : pending_tasks_)
 | 
| +    existing_task_ids.insert(task.first.task_id());
 | 
|    return base::Bind(&OrderedSimpleTaskRunner::TaskExistedInitiallyCallback,
 | 
| -                    base::Unretained(this),
 | 
| -                    pending_tasks_);
 | 
| +                    base::Unretained(this), std::move(existing_task_ids));
 | 
|  }
 | 
|  
 | 
|  bool OrderedSimpleTaskRunner::TaskExistedInitiallyCallback(
 | 
| -    const std::set<TestOrderablePendingTask>& existing_tasks) {
 | 
| -  return existing_tasks.find(*pending_tasks_.begin()) != existing_tasks.end();
 | 
| +    const std::set<size_t>& existing_task_ids) {
 | 
| +  const TestOrderablePendingTaskInfo& task_info = pending_tasks_.begin()->first;
 | 
| +  return existing_task_ids.find(task_info.task_id()) != existing_task_ids.end();
 | 
|  }
 | 
|  
 | 
|  base::Callback<bool(void)> OrderedSimpleTaskRunner::NowBefore(
 | 
| 
 |