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

Side by Side Diff: cc/test/scheduler_test_common.h

Issue 387493002: Fixing and enhancing OrderedSimpleTaskRunner to allow 100% deterministic tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Lots of changes. Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 CC_TEST_SCHEDULER_TEST_COMMON_H_ 5 #ifndef CC_TEST_SCHEDULER_TEST_COMMON_H_
6 #define CC_TEST_SCHEDULER_TEST_COMMON_H_ 6 #define CC_TEST_SCHEDULER_TEST_COMMON_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "cc/scheduler/delay_based_time_source.h" 11 #include "cc/scheduler/delay_based_time_source.h"
12 #include "cc/scheduler/scheduler.h"
13 #include "cc/test/ordered_simple_task_runner.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 15
14 namespace cc { 16 namespace cc {
15 17
16 class FakeTimeSourceClient : public TimeSourceClient { 18 class FakeTimeSourceClient : public TimeSourceClient {
17 public: 19 public:
18 FakeTimeSourceClient() { Reset(); } 20 FakeTimeSourceClient() { Reset(); }
19 void Reset() { tick_called_ = false; } 21 void Reset() { tick_called_ = false; }
20 bool TickCalled() const { return tick_called_; } 22 bool TickCalled() const { return tick_called_; }
21 23
(...skipping 17 matching lines...) Expand all
39 41
40 protected: 42 protected:
41 FakeDelayBasedTimeSource(base::TimeDelta interval, 43 FakeDelayBasedTimeSource(base::TimeDelta interval,
42 base::SingleThreadTaskRunner* task_runner) 44 base::SingleThreadTaskRunner* task_runner)
43 : DelayBasedTimeSource(interval, task_runner) {} 45 : DelayBasedTimeSource(interval, task_runner) {}
44 virtual ~FakeDelayBasedTimeSource() {} 46 virtual ~FakeDelayBasedTimeSource() {}
45 47
46 base::TimeTicks now_; 48 base::TimeTicks now_;
47 }; 49 };
48 50
51 class TestDelayBasedTimeSource : public DelayBasedTimeSource {
52 public:
53 static scoped_refptr<TestDelayBasedTimeSource> Create(
54 base::TimeDelta interval,
55 OrderedSimpleTaskRunner* task_runner) {
56 return make_scoped_refptr(
57 new TestDelayBasedTimeSource(interval, task_runner));
58 }
59
60 // Overridden from DelayBasedTimeSource
61 virtual base::TimeTicks Now() const OVERRIDE;
62
63 // Extra test helper functionality
64 void SetNow(base::TimeTicks time);
65 OrderedSimpleTaskRunner& task_runner() { return *test_task_runner_; }
66
67 protected:
68 TestDelayBasedTimeSource(base::TimeDelta interval,
69 OrderedSimpleTaskRunner* task_runner)
70 : DelayBasedTimeSource(interval, task_runner),
71 test_task_runner_(task_runner) {}
72 virtual ~TestDelayBasedTimeSource() {}
73
74 virtual std::string TypeString() const OVERRIDE;
75
76 OrderedSimpleTaskRunner* test_task_runner_;
77 };
78
79 class TestScheduler : public Scheduler {
80 public:
81 static scoped_ptr<TestScheduler> Create(
82 SchedulerClient* client,
83 const SchedulerSettings& scheduler_settings,
84 int layer_tree_host_id) {
85 scoped_refptr<OrderedSimpleTaskRunner> test_task_runner =
86 new OrderedSimpleTaskRunner;
87
88 return make_scoped_ptr(new TestScheduler(
89 client, scheduler_settings, layer_tree_host_id, test_task_runner));
90 }
91
92 virtual ~TestScheduler() {}
93
94 // Overridden from Scheduler.
95 virtual base::TimeTicks Now() const OVERRIDE;
96
97 // Extra test helper functionality
98 bool IsBeginRetroFrameArgsEmpty() const {
99 return begin_retro_frame_args_.empty();
100 }
101
102 bool IsSyntheticBeginFrameSourceActive() const {
103 return synthetic_begin_frame_source_->IsActive();
104 }
105
106 void SetNow(base::TimeTicks time);
107 OrderedSimpleTaskRunner& task_runner() { return *test_task_runner_; }
108
109 private:
110 TestScheduler(SchedulerClient* client,
111 const SchedulerSettings& scheduler_settings,
112 int layer_tree_host_id,
113 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner);
114
115 OrderedSimpleTaskRunner* test_task_runner_;
116 };
117
49 } // namespace cc 118 } // namespace cc
50 119
51 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_ 120 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698