OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_CAST_TEST_FAKE_TASK_RUNNER_H_ | 5 #ifndef MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_ |
6 #define MEDIA_CAST_TEST_FAKE_TASK_RUNNER_H_ | 6 #define MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
11 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
12 #include "base/test/simple_test_tick_clock.h" | 12 #include "base/test/simple_test_tick_clock.h" |
13 #include "base/test/test_pending_task.h" | 13 #include "base/test/test_pending_task.h" |
14 | 14 |
15 namespace media { | 15 namespace media { |
16 namespace cast { | 16 namespace cast { |
17 namespace test { | 17 namespace test { |
18 | 18 |
19 typedef base::TestPendingTask PostedTask; | 19 // This class wraps a SingleThreadTaskRunner, and allows you to scale |
| 20 // the delay for any posted task by a factor. The factor is changed by |
| 21 // calling SetSkew(). A skew of 2.0 means that all delayed task will |
| 22 // have to wait twice as long. |
| 23 class SkewedSingleThreadTaskRunner : public base::SingleThreadTaskRunner { |
| 24 public: |
| 25 explicit SkewedSingleThreadTaskRunner( |
| 26 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); |
20 | 27 |
21 class FakeSingleThreadTaskRunner : public base::SingleThreadTaskRunner { | 28 // Set the delay multiplier to |skew|. |
22 public: | 29 void SetSkew(double skew); |
23 explicit FakeSingleThreadTaskRunner(base::SimpleTestTickClock* clock); | |
24 | |
25 void RunTasks(); | |
26 | 30 |
27 // base::SingleThreadTaskRunner implementation. | 31 // base::SingleThreadTaskRunner implementation. |
28 virtual bool PostDelayedTask(const tracked_objects::Location& from_here, | 32 virtual bool PostDelayedTask(const tracked_objects::Location& from_here, |
29 const base::Closure& task, | 33 const base::Closure& task, |
30 base::TimeDelta delay) OVERRIDE; | 34 base::TimeDelta delay) OVERRIDE; |
31 | 35 |
32 virtual bool RunsTasksOnCurrentThread() const OVERRIDE; | 36 virtual bool RunsTasksOnCurrentThread() const OVERRIDE; |
33 | 37 |
34 // This function is currently not used, and will return false. | 38 // This function is currently not used, and will return false. |
35 virtual bool PostNonNestableDelayedTask( | 39 virtual bool PostNonNestableDelayedTask( |
36 const tracked_objects::Location& from_here, | 40 const tracked_objects::Location& from_here, |
37 const base::Closure& task, | 41 const base::Closure& task, |
38 base::TimeDelta delay) OVERRIDE; | 42 base::TimeDelta delay) OVERRIDE; |
39 | 43 |
40 protected: | 44 protected: |
41 virtual ~FakeSingleThreadTaskRunner(); | 45 virtual ~SkewedSingleThreadTaskRunner(); |
42 | 46 |
43 private: | 47 private: |
44 base::SimpleTestTickClock* const clock_; | 48 double skew_; |
45 std::multimap<base::TimeTicks, PostedTask> tasks_; | 49 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
46 | 50 |
47 DISALLOW_COPY_AND_ASSIGN(FakeSingleThreadTaskRunner); | 51 DISALLOW_COPY_AND_ASSIGN(SkewedSingleThreadTaskRunner); |
48 }; | 52 }; |
49 | 53 |
50 } // namespace test | 54 } // namespace test |
51 } // namespace cast | 55 } // namespace cast |
52 } // namespace media | 56 } // namespace media |
53 | 57 |
54 #endif // MEDIA_CAST_TEST_FAKE_TASK_RUNNER_H_ | 58 #endif // MEDIA_CAST_TEST_SKEWED_TASK_RUNNER_H_ |
OLD | NEW |