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( |