• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "media/cast/test/fake_task_runner.h"
6 
7 #include "base/time/tick_clock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace media {
11 namespace cast {
12 namespace test {
13 
FakeTaskRunner(base::SimpleTestTickClock * clock)14 FakeTaskRunner::FakeTaskRunner(base::SimpleTestTickClock* clock)
15     : clock_(clock) {
16 }
17 
~FakeTaskRunner()18 FakeTaskRunner::~FakeTaskRunner() {}
19 
PostDelayedTask(const tracked_objects::Location & from_here,const base::Closure & task,base::TimeDelta delay)20 bool FakeTaskRunner::PostDelayedTask(const tracked_objects::Location& from_here,
21                                      const base::Closure& task,
22                                      base::TimeDelta delay) {
23   EXPECT_GE(delay, base::TimeDelta());
24   PostedTask posed_task(from_here, task, clock_->NowTicks(), delay,
25                         base::TestPendingTask::NESTABLE);
26 
27   tasks_.insert(std::make_pair(posed_task.GetTimeToRun(), posed_task));
28   return false;
29 }
30 
RunsTasksOnCurrentThread() const31 bool FakeTaskRunner::RunsTasksOnCurrentThread() const {
32   return true;
33 }
34 
RunTasks()35 void FakeTaskRunner::RunTasks() {
36   for (;;) {
37     // Run all tasks equal or older than current time.
38     std::multimap<base::TimeTicks, PostedTask>::iterator it = tasks_.begin();
39     if (it == tasks_.end()) return;  // No more tasks.
40 
41     PostedTask task = it->second;
42     if (clock_->NowTicks() < task.GetTimeToRun()) return;
43 
44     tasks_.erase(it);
45     task.task.Run();
46   }
47 }
48 
49 }  // namespace test
50 }  // namespace cast
51 }  // namespace media
52