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

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: sprintf is hard. 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 TestScheduler : public Scheduler {
52 public:
53 static scoped_ptr<TestScheduler> Create(
54 SchedulerClient* client,
55 const SchedulerSettings& scheduler_settings,
56 int layer_tree_host_id) {
57 scoped_refptr<OrderedSimpleTaskRunner> test_task_runner =
58 new OrderedSimpleTaskRunner;
59
60 return make_scoped_ptr(new TestScheduler(
61 client, scheduler_settings, layer_tree_host_id, test_task_runner));
62 }
63
64 virtual ~TestScheduler() {}
65
66 bool IsBeginRetroFrameArgsEmpty() const {
67 return begin_retro_frame_args_.empty();
68 }
69
70 bool IsSyntheticBeginFrameSourceActive() const {
71 return synthetic_begin_frame_source_->IsActive();
72 }
73
74 /*
75 virtual void SetupSyntheticBeginFrames() {
Sami 2014/07/11 17:22:46 Not needed?
brianderson 2014/07/14 23:42:31 And if it's not needed can the virtual in the base
mithro-old 2014/07/16 14:18:12 Acknowledged.
mithro-old 2014/07/16 14:18:12 Done.
76 DCHECK(!synthetic_begin_frame_source_);
77 synthetic_begin_frame_source_.reset(
78 new SyntheticBeginFrameSource(this, test_task_runner_.get()));
79 }
80 */
81
82 void SetNow(base::TimeTicks time) { test_task_runner_->SetNow(time); }
83
84 virtual base::TimeTicks Now() const OVERRIDE;
85
86 void RunPendingTasks(bool advance_now) {
Sami 2014/07/11 17:22:46 AFAICT we never call this with |false| -- does it
brianderson 2014/07/14 23:42:31 +1 to a separate entry point or enum.
mithro-old 2014/07/16 14:18:12 Done.
mithro-old 2014/07/16 14:18:12 I refactored this code slightly to be more inline
87 test_task_runner_->SetAdvanceNow(advance_now);
88 test_task_runner_->RunPendingTasks();
89 }
90
91 base::TimeDelta NextPendingTaskDelay() {
92 return test_task_runner_->NextPendingTaskDelay();
93 }
94
95 private:
96 TestScheduler(SchedulerClient* client,
97 const SchedulerSettings& scheduler_settings,
98 int layer_tree_host_id,
99 const scoped_refptr<OrderedSimpleTaskRunner>& test_task_runner)
100 : Scheduler(client,
101 scheduler_settings,
102 layer_tree_host_id,
103 test_task_runner),
104 test_task_runner_(test_task_runner.get()) {}
105
106 OrderedSimpleTaskRunner* test_task_runner_;
107 };
108
49 } // namespace cc 109 } // namespace cc
50 110
51 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_ 111 #endif // CC_TEST_SCHEDULER_TEST_COMMON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698