Index: base/test/test_mock_time_task_runner.cc |
diff --git a/base/test/test_mock_time_task_runner.cc b/base/test/test_mock_time_task_runner.cc |
index f0ba9aa102c4f38d1a273762dad9b60e7b4a28fe..eaaceb6338166859c6da399b8de5edd30e665836 100644 |
--- a/base/test/test_mock_time_task_runner.cc |
+++ b/base/test/test_mock_time_task_runner.cc |
@@ -83,9 +83,15 @@ struct TestMockTimeTaskRunner::TestOrderedPendingTask |
TimeDelta delay, |
size_t ordinal, |
TestNestability nestability); |
+ TestOrderedPendingTask(TestOrderedPendingTask&&); |
~TestOrderedPendingTask(); |
+ TestOrderedPendingTask& operator=(TestOrderedPendingTask&&); |
+ |
size_t ordinal; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(TestOrderedPendingTask); |
}; |
TestMockTimeTaskRunner::TestOrderedPendingTask::TestOrderedPendingTask() |
@@ -93,6 +99,9 @@ TestMockTimeTaskRunner::TestOrderedPendingTask::TestOrderedPendingTask() |
} |
TestMockTimeTaskRunner::TestOrderedPendingTask::TestOrderedPendingTask( |
+ TestOrderedPendingTask&&) = default; |
+ |
+TestMockTimeTaskRunner::TestOrderedPendingTask::TestOrderedPendingTask( |
const tracked_objects::Location& location, |
const Closure& task, |
TimeTicks post_time, |
@@ -100,12 +109,15 @@ TestMockTimeTaskRunner::TestOrderedPendingTask::TestOrderedPendingTask( |
size_t ordinal, |
TestNestability nestability) |
: base::TestPendingTask(location, task, post_time, delay, nestability), |
- ordinal(ordinal) { |
-} |
+ ordinal(ordinal) {} |
TestMockTimeTaskRunner::TestOrderedPendingTask::~TestOrderedPendingTask() { |
} |
+TestMockTimeTaskRunner::TestOrderedPendingTask& |
+TestMockTimeTaskRunner::TestOrderedPendingTask::operator=( |
+ TestOrderedPendingTask&&) = default; |
+ |
// TestMockTimeTaskRunner ----------------------------------------------------- |
bool TestMockTimeTaskRunner::TemporalOrder::operator()( |
@@ -176,7 +188,10 @@ std::unique_ptr<TickClock> TestMockTimeTaskRunner::GetMockTickClock() const { |
std::deque<TestPendingTask> TestMockTimeTaskRunner::TakePendingTasks() { |
std::deque<TestPendingTask> tasks; |
while (!tasks_.empty()) { |
- tasks.push_back(tasks_.top()); |
+ // It's safe to remove const and consume |task| here, since |task| is not |
+ // used for ordering the item. |
+ tasks.push_back( |
+ std::move(const_cast<TestOrderedPendingTask&>(tasks_.top()))); |
tasks_.pop(); |
} |
return tasks; |
@@ -248,7 +263,7 @@ void TestMockTimeTaskRunner::ProcessAllTasksNoLaterThan(TimeDelta max_delta) { |
// be less than |now_ticks_|. ForwardClocksUntilTickTime() takes care of not |
// moving the clock backwards in this case. |
ForwardClocksUntilTickTime(task_info.GetTimeToRun()); |
- task_info.task.Run(); |
+ std::move(task_info.task).Run(); |
OnAfterTaskRun(); |
} |
} |
@@ -268,7 +283,9 @@ bool TestMockTimeTaskRunner::DequeueNextTask(const TimeTicks& reference, |
AutoLock scoped_lock(tasks_lock_); |
if (!tasks_.empty() && |
(tasks_.top().GetTimeToRun() - reference) <= max_delta) { |
- *next_task = tasks_.top(); |
+ // It's safe to remove const and consume |task| here, since |task| is not |
+ // used for ordering the item. |
+ *next_task = std::move(const_cast<TestOrderedPendingTask&>(tasks_.top())); |
tasks_.pop(); |
return true; |
} |