Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1357)

Unified Diff: base/test/test_mock_time_task_runner.cc

Issue 2434783002: Use OnceClosure in TestPendingTask (Closed)
Patch Set: +comment Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/test/scoped_mock_time_message_loop_task_runner_unittest.cc ('k') | base/test/test_pending_task.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « base/test/scoped_mock_time_message_loop_task_runner_unittest.cc ('k') | base/test/test_pending_task.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698