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

Side by Side Diff: cc/surfaces/display_scheduler_unittest.cc

Issue 1132753008: Replaced TestNowSource with SimpleTestTickClock. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased again. Replaces TimeSource with TickClock in TestAlwaysFailTimeSource Created 5 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include "cc/surfaces/display_scheduler.h" 5 #include "cc/surfaces/display_scheduler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/test/null_task_runner.h" 8 #include "base/test/null_task_runner.h"
9 #include "base/test/simple_test_tick_clock.h"
9 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
10 #include "cc/output/begin_frame_args.h" 11 #include "cc/output/begin_frame_args.h"
11 #include "cc/surfaces/display.h" 12 #include "cc/surfaces/display.h"
12 #include "cc/test/scheduler_test_common.h" 13 #include "cc/test/scheduler_test_common.h"
13 #include "cc/test/test_now_source.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace cc { 16 namespace cc {
17 namespace { 17 namespace {
18 18
19 class FakeDisplaySchedulerClient : public DisplaySchedulerClient { 19 class FakeDisplaySchedulerClient : public DisplaySchedulerClient {
20 public: 20 public:
21 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {} 21 FakeDisplaySchedulerClient() : draw_and_swap_count_(0) {}
22 22
23 ~FakeDisplaySchedulerClient() override {} 23 ~FakeDisplaySchedulerClient() override {}
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 int scheduler_begin_frame_deadline_count() { 61 int scheduler_begin_frame_deadline_count() {
62 return scheduler_begin_frame_deadline_count_; 62 return scheduler_begin_frame_deadline_count_;
63 } 63 }
64 64
65 protected: 65 protected:
66 int scheduler_begin_frame_deadline_count_; 66 int scheduler_begin_frame_deadline_count_;
67 }; 67 };
68 68
69 class DisplaySchedulerTest : public testing::Test { 69 class DisplaySchedulerTest : public testing::Test {
70 public: 70 public:
71 DisplaySchedulerTest() { 71 DisplaySchedulerTest() : now_src_(new base::SimpleTestTickClock()) {
72 const int max_pending_swaps = 1; 72 const int max_pending_swaps = 1;
73 now_src_ = TestNowSource::Create(); 73 now_src_->Advance(base::TimeDelta::FromInternalValue(10000));
74 null_task_runner_ = make_scoped_refptr(new base::NullTaskRunner); 74 null_task_runner_ = make_scoped_refptr(new base::NullTaskRunner);
75 client_ = make_scoped_ptr(new FakeDisplaySchedulerClient); 75 client_ = make_scoped_ptr(new FakeDisplaySchedulerClient);
76 scheduler_ = make_scoped_ptr( 76 scheduler_ = make_scoped_ptr(
77 new TestDisplayScheduler(client_.get(), &fake_begin_frame_source_, 77 new TestDisplayScheduler(client_.get(), &fake_begin_frame_source_,
78 null_task_runner_, max_pending_swaps)); 78 null_task_runner_, max_pending_swaps));
79 } 79 }
80 80
81 ~DisplaySchedulerTest() override {} 81 ~DisplaySchedulerTest() override {}
82 82
83 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); } 83 void SetUp() override { scheduler_->SetRootSurfaceResourcesLocked(false); }
84 84
85 void BeginFrameForTest() { 85 void BeginFrameForTest() {
86 base::TimeTicks frame_time = now_src_->Now(); 86 base::TimeTicks frame_time = now_src_->NowTicks();
87 base::TimeDelta interval = BeginFrameArgs::DefaultInterval(); 87 base::TimeDelta interval = BeginFrameArgs::DefaultInterval();
88 base::TimeTicks deadline = frame_time + interval - 88 base::TimeTicks deadline = frame_time + interval -
89 BeginFrameArgs::DefaultEstimatedParentDrawTime(); 89 BeginFrameArgs::DefaultEstimatedParentDrawTime();
90 fake_begin_frame_source_.TestOnBeginFrame( 90 fake_begin_frame_source_.TestOnBeginFrame(
91 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, 91 BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline,
92 interval, BeginFrameArgs::NORMAL)); 92 interval, BeginFrameArgs::NORMAL));
93 } 93 }
94 94
95 protected: 95 protected:
96 TestNowSource& now_src() { return *now_src_; } 96 base::SimpleTestTickClock& now_src() { return *now_src_; }
97 FakeDisplaySchedulerClient& client() { return *client_; } 97 FakeDisplaySchedulerClient& client() { return *client_; }
98 DisplayScheduler& scheduler() { return *scheduler_; } 98 DisplayScheduler& scheduler() { return *scheduler_; }
99 99
100 scoped_refptr<TestNowSource> now_src_; 100 scoped_ptr<base::SimpleTestTickClock> now_src_;
101 scoped_refptr<base::NullTaskRunner> null_task_runner_; 101 scoped_refptr<base::NullTaskRunner> null_task_runner_;
102 102
103 FakeBeginFrameSource fake_begin_frame_source_; 103 FakeBeginFrameSource fake_begin_frame_source_;
104 scoped_ptr<FakeDisplaySchedulerClient> client_; 104 scoped_ptr<FakeDisplaySchedulerClient> client_;
105 scoped_ptr<TestDisplayScheduler> scheduler_; 105 scoped_ptr<TestDisplayScheduler> scheduler_;
106 }; 106 };
107 107
108 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) { 108 TEST_F(DisplaySchedulerTest, EntireDisplayDamagedDrawsImmediately) {
109 SurfaceId root_surface_id(1); 109 SurfaceId root_surface_id(1);
110 BeginFrameForTest(); 110 BeginFrameForTest();
111 EXPECT_LT(now_src().Now(), 111 EXPECT_LT(now_src().NowTicks(),
112 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 112 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
113 scheduler_->EntireDisplayDamaged(root_surface_id); 113 scheduler_->EntireDisplayDamaged(root_surface_id);
114 EXPECT_GE(now_src().Now(), 114 EXPECT_GE(now_src().NowTicks(),
115 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 115 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
116 } 116 }
117 117
118 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { 118 TEST_F(DisplaySchedulerTest, SurfaceDamaged) {
119 SurfaceId root_surface_id(0); 119 SurfaceId root_surface_id(0);
120 SurfaceId sid1(1); 120 SurfaceId sid1(1);
121 SurfaceId sid2(2); 121 SurfaceId sid2(2);
122 122
123 // Set the root surface 123 // Set the root surface
124 scheduler_->EntireDisplayDamaged(root_surface_id); 124 scheduler_->EntireDisplayDamaged(root_surface_id);
125 125
126 // Get scheduler to detect surface 1 as active by drawing 126 // Get scheduler to detect surface 1 as active by drawing
127 // two frames in a row with damage from surface 1. 127 // two frames in a row with damage from surface 1.
128 BeginFrameForTest(); 128 BeginFrameForTest();
129 scheduler_->SurfaceDamaged(sid1); 129 scheduler_->SurfaceDamaged(sid1);
130 scheduler_->BeginFrameDeadlineForTest(); 130 scheduler_->BeginFrameDeadlineForTest();
131 BeginFrameForTest(); 131 BeginFrameForTest();
132 scheduler_->SurfaceDamaged(sid1); 132 scheduler_->SurfaceDamaged(sid1);
133 scheduler_->BeginFrameDeadlineForTest(); 133 scheduler_->BeginFrameDeadlineForTest();
134 134
135 // Damage only from surface 2 (inactive) does not trigger deadline early. 135 // Damage only from surface 2 (inactive) does not trigger deadline early.
136 BeginFrameForTest(); 136 BeginFrameForTest();
137 scheduler_->SurfaceDamaged(sid2); 137 scheduler_->SurfaceDamaged(sid2);
138 EXPECT_LT(now_src().Now(), 138 EXPECT_LT(now_src().NowTicks(),
139 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 139 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
140 140
141 // Damage from surface 1 triggers deadline early. 141 // Damage from surface 1 triggers deadline early.
142 scheduler_->SurfaceDamaged(sid1); 142 scheduler_->SurfaceDamaged(sid1);
143 EXPECT_GE(now_src().Now(), 143 EXPECT_GE(now_src().NowTicks(),
144 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 144 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
145 scheduler_->BeginFrameDeadlineForTest(); 145 scheduler_->BeginFrameDeadlineForTest();
146 146
147 // Make both surface 1 and 2 active. 147 // Make both surface 1 and 2 active.
148 BeginFrameForTest(); 148 BeginFrameForTest();
149 scheduler_->SurfaceDamaged(sid2); 149 scheduler_->SurfaceDamaged(sid2);
150 scheduler_->SurfaceDamaged(sid1); 150 scheduler_->SurfaceDamaged(sid1);
151 scheduler_->BeginFrameDeadlineForTest(); 151 scheduler_->BeginFrameDeadlineForTest();
152 152
153 // Deadline doesn't trigger early until surface 1 and 2 are both damaged. 153 // Deadline doesn't trigger early until surface 1 and 2 are both damaged.
154 BeginFrameForTest(); 154 BeginFrameForTest();
155 EXPECT_LT(now_src().Now(), 155 EXPECT_LT(now_src().NowTicks(),
156 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 156 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
157 scheduler_->SurfaceDamaged(sid1); 157 scheduler_->SurfaceDamaged(sid1);
158 EXPECT_LT(now_src().Now(), 158 EXPECT_LT(now_src().NowTicks(),
159 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 159 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
160 scheduler_->SurfaceDamaged(sid2); 160 scheduler_->SurfaceDamaged(sid2);
161 EXPECT_GE(now_src().Now(), 161 EXPECT_GE(now_src().NowTicks(),
162 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 162 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
163 scheduler_->BeginFrameDeadlineForTest(); 163 scheduler_->BeginFrameDeadlineForTest();
164 164
165 // Make the system idle 165 // Make the system idle
166 BeginFrameForTest(); 166 BeginFrameForTest();
167 scheduler_->BeginFrameDeadlineForTest(); 167 scheduler_->BeginFrameDeadlineForTest();
168 BeginFrameForTest(); 168 BeginFrameForTest();
169 scheduler_->BeginFrameDeadlineForTest(); 169 scheduler_->BeginFrameDeadlineForTest();
170 170
171 // Deadline should trigger early if child surfaces are idle and 171 // Deadline should trigger early if child surfaces are idle and
172 // we get damage on the root surface. 172 // we get damage on the root surface.
173 BeginFrameForTest(); 173 BeginFrameForTest();
174 EXPECT_LT(now_src().Now(), 174 EXPECT_LT(now_src().NowTicks(),
175 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 175 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
176 scheduler_->SurfaceDamaged(root_surface_id); 176 scheduler_->SurfaceDamaged(root_surface_id);
177 EXPECT_GE(now_src().Now(), 177 EXPECT_GE(now_src().NowTicks(),
178 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 178 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
179 scheduler_->BeginFrameDeadlineForTest(); 179 scheduler_->BeginFrameDeadlineForTest();
180 } 180 }
181 181
182 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { 182 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) {
183 SurfaceId sid1(1); 183 SurfaceId sid1(1);
184 184
185 // DrawAndSwap normally. 185 // DrawAndSwap normally.
186 BeginFrameForTest(); 186 BeginFrameForTest();
187 EXPECT_LT(now_src().Now(), 187 EXPECT_LT(now_src().NowTicks(),
188 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 188 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
189 EXPECT_EQ(0, client_->draw_and_swap_count()); 189 EXPECT_EQ(0, client_->draw_and_swap_count());
190 scheduler_->SurfaceDamaged(sid1); 190 scheduler_->SurfaceDamaged(sid1);
191 scheduler_->BeginFrameDeadlineForTest(); 191 scheduler_->BeginFrameDeadlineForTest();
192 EXPECT_EQ(1, client_->draw_and_swap_count()); 192 EXPECT_EQ(1, client_->draw_and_swap_count());
193 193
194 // Deadline triggers immediately on OutputSurfaceLost. 194 // Deadline triggers immediately on OutputSurfaceLost.
195 BeginFrameForTest(); 195 BeginFrameForTest();
196 EXPECT_LT(now_src().Now(), 196 EXPECT_LT(now_src().NowTicks(),
197 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 197 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
198 scheduler_->OutputSurfaceLost(); 198 scheduler_->OutputSurfaceLost();
199 EXPECT_GE(now_src().Now(), 199 EXPECT_GE(now_src().NowTicks(),
200 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 200 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
201 201
202 // Deadline does not DrawAndSwap after OutputSurfaceLost. 202 // Deadline does not DrawAndSwap after OutputSurfaceLost.
203 EXPECT_EQ(1, client_->draw_and_swap_count()); 203 EXPECT_EQ(1, client_->draw_and_swap_count());
204 scheduler_->SurfaceDamaged(sid1); 204 scheduler_->SurfaceDamaged(sid1);
205 scheduler_->BeginFrameDeadlineForTest(); 205 scheduler_->BeginFrameDeadlineForTest();
206 EXPECT_EQ(1, client_->draw_and_swap_count()); 206 EXPECT_EQ(1, client_->draw_and_swap_count());
207 } 207 }
208 208
209 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { 209 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) {
210 SurfaceId sid1(1); 210 SurfaceId sid1(1);
211 base::TimeTicks late_deadline; 211 base::TimeTicks late_deadline;
212 212
213 // DrawAndSwap normally. 213 // DrawAndSwap normally.
214 BeginFrameForTest(); 214 BeginFrameForTest();
215 EXPECT_LT(now_src().Now(), 215 EXPECT_LT(now_src().NowTicks(),
216 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 216 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
217 EXPECT_EQ(0, client_->draw_and_swap_count()); 217 EXPECT_EQ(0, client_->draw_and_swap_count());
218 scheduler_->SurfaceDamaged(sid1); 218 scheduler_->SurfaceDamaged(sid1);
219 scheduler_->BeginFrameDeadlineForTest(); 219 scheduler_->BeginFrameDeadlineForTest();
220 EXPECT_EQ(1, client_->draw_and_swap_count()); 220 EXPECT_EQ(1, client_->draw_and_swap_count());
221 221
222 // Deadline triggers late while root resources are locked. 222 // Deadline triggers late while root resources are locked.
223 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); 223 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval();
224 BeginFrameForTest(); 224 BeginFrameForTest();
225 scheduler_->SurfaceDamaged(sid1); 225 scheduler_->SurfaceDamaged(sid1);
226 EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 226 EXPECT_GT(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest());
227 scheduler_->SetRootSurfaceResourcesLocked(true); 227 scheduler_->SetRootSurfaceResourcesLocked(true);
228 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 228 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest());
229 229
230 // Deadline does not DrawAndSwap while root resources are locked. 230 // Deadline does not DrawAndSwap while root resources are locked.
231 EXPECT_EQ(1, client_->draw_and_swap_count()); 231 EXPECT_EQ(1, client_->draw_and_swap_count());
232 scheduler_->SurfaceDamaged(sid1); 232 scheduler_->SurfaceDamaged(sid1);
233 scheduler_->BeginFrameDeadlineForTest(); 233 scheduler_->BeginFrameDeadlineForTest();
234 EXPECT_EQ(1, client_->draw_and_swap_count()); 234 EXPECT_EQ(1, client_->draw_and_swap_count());
235 235
236 // Deadline triggers normally when root resources are unlocked. 236 // Deadline triggers normally when root resources are unlocked.
237 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); 237 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval();
238 BeginFrameForTest(); 238 BeginFrameForTest();
239 scheduler_->SurfaceDamaged(sid1); 239 scheduler_->SurfaceDamaged(sid1);
240 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 240 EXPECT_EQ(late_deadline, scheduler_->DesiredBeginFrameDeadlineTimeForTest());
241 scheduler_->SetRootSurfaceResourcesLocked(false); 241 scheduler_->SetRootSurfaceResourcesLocked(false);
242 EXPECT_EQ(base::TimeTicks(), 242 EXPECT_EQ(base::TimeTicks(),
243 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 243 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
244 244
245 EXPECT_EQ(1, client_->draw_and_swap_count()); 245 EXPECT_EQ(1, client_->draw_and_swap_count());
246 scheduler_->BeginFrameDeadlineForTest(); 246 scheduler_->BeginFrameDeadlineForTest();
247 EXPECT_EQ(2, client_->draw_and_swap_count()); 247 EXPECT_EQ(2, client_->draw_and_swap_count());
248 } 248 }
249 249
250 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { 250 TEST_F(DisplaySchedulerTest, DidSwapBuffers) {
251 SurfaceId sid1(1); 251 SurfaceId sid1(1);
252 SurfaceId sid2(2); 252 SurfaceId sid2(2);
253 base::TimeTicks late_deadline; 253 base::TimeTicks late_deadline;
254 254
255 // Get scheduler to detect surface 1 and 2 as active. 255 // Get scheduler to detect surface 1 and 2 as active.
256 BeginFrameForTest(); 256 BeginFrameForTest();
257 scheduler_->SurfaceDamaged(sid1); 257 scheduler_->SurfaceDamaged(sid1);
258 scheduler_->SurfaceDamaged(sid2); 258 scheduler_->SurfaceDamaged(sid2);
259 scheduler_->BeginFrameDeadlineForTest(); 259 scheduler_->BeginFrameDeadlineForTest();
260 BeginFrameForTest(); 260 BeginFrameForTest();
261 scheduler_->SurfaceDamaged(sid1); 261 scheduler_->SurfaceDamaged(sid1);
262 scheduler_->SurfaceDamaged(sid2); 262 scheduler_->SurfaceDamaged(sid2);
263 scheduler_->BeginFrameDeadlineForTest(); 263 scheduler_->BeginFrameDeadlineForTest();
264 264
265 // DrawAndSwap normally. 265 // DrawAndSwap normally.
266 BeginFrameForTest(); 266 BeginFrameForTest();
267 EXPECT_LT(now_src().Now(), 267 EXPECT_LT(now_src().NowTicks(),
268 scheduler_->DesiredBeginFrameDeadlineTimeForTest()); 268 scheduler_->DesiredBeginFrameDeadlineTimeForTest());
269 EXPECT_EQ(2, client_->draw_and_swap_count()); 269 EXPECT_EQ(2, client_->draw_and_swap_count());
270 scheduler_->SurfaceDamaged(sid1); 270 scheduler_->SurfaceDamaged(sid1);
271 scheduler_->SurfaceDamaged(sid2); 271 scheduler_->SurfaceDamaged(sid2);
272 scheduler_->BeginFrameDeadlineForTest(); 272 scheduler_->BeginFrameDeadlineForTest();
273 EXPECT_EQ(3, client_->draw_and_swap_count()); 273 EXPECT_EQ(3, client_->draw_and_swap_count());
274 scheduler_->DidSwapBuffers(); 274 scheduler_->DidSwapBuffers();
275 275
276 // Deadline triggers early when swap throttled. 276 // Deadline triggers early when swap throttled.
277 BeginFrameForTest(); 277 BeginFrameForTest();
278 // Damage surface 1, but not surface 2 so we avoid triggering deadline 278 // Damage surface 1, but not surface 2 so we avoid triggering deadline
279 // early because all surfaces are ready. 279 // early because all surfaces are ready.
280 scheduler_->SurfaceDamaged(sid1); 280 scheduler_->SurfaceDamaged(sid1);
281 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), 281 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(),
282 base::TimeTicks()); 282 base::TimeTicks());
283 283
284 // Don't draw and swap in deadline while swap throttled. 284 // Don't draw and swap in deadline while swap throttled.
285 EXPECT_EQ(3, client_->draw_and_swap_count()); 285 EXPECT_EQ(3, client_->draw_and_swap_count());
286 scheduler_->BeginFrameDeadlineForTest(); 286 scheduler_->BeginFrameDeadlineForTest();
287 EXPECT_EQ(3, client_->draw_and_swap_count()); 287 EXPECT_EQ(3, client_->draw_and_swap_count());
288 288
289 // Deadline triggers normally once not swap throttled. 289 // Deadline triggers normally once not swap throttled.
290 // Damage from previous BeginFrame should cary over, so don't damage again. 290 // Damage from previous BeginFrame should cary over, so don't damage again.
291 late_deadline = now_src().Now() + BeginFrameArgs::DefaultInterval(); 291 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval();
292 scheduler_->DidSwapBuffersComplete(); 292 scheduler_->DidSwapBuffersComplete();
293 BeginFrameForTest(); 293 BeginFrameForTest();
294 EXPECT_GT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), 294 EXPECT_GT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(),
295 now_src().Now()); 295 now_src().NowTicks());
296 EXPECT_LT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), late_deadline); 296 EXPECT_LT(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), late_deadline);
297 // Still waiting for surface 2. Once it updates, deadline should trigger 297 // Still waiting for surface 2. Once it updates, deadline should trigger
298 // immediately again. 298 // immediately again.
299 scheduler_->SurfaceDamaged(sid2); 299 scheduler_->SurfaceDamaged(sid2);
300 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(), 300 EXPECT_EQ(scheduler_->DesiredBeginFrameDeadlineTimeForTest(),
301 base::TimeTicks()); 301 base::TimeTicks());
302 // Draw and swap now that we aren't throttled. 302 // Draw and swap now that we aren't throttled.
303 EXPECT_EQ(3, client_->draw_and_swap_count()); 303 EXPECT_EQ(3, client_->draw_and_swap_count());
304 scheduler_->BeginFrameDeadlineForTest(); 304 scheduler_->BeginFrameDeadlineForTest();
305 EXPECT_EQ(4, client_->draw_and_swap_count()); 305 EXPECT_EQ(4, client_->draw_and_swap_count());
(...skipping 26 matching lines...) Expand all
332 332
333 scheduler_->SetRootSurfaceResourcesLocked(true); 333 scheduler_->SetRootSurfaceResourcesLocked(true);
334 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 334 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
335 335
336 scheduler_->OutputSurfaceLost(); 336 scheduler_->OutputSurfaceLost();
337 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count()); 337 EXPECT_EQ(count++, scheduler_->scheduler_begin_frame_deadline_count());
338 } 338 }
339 339
340 } // namespace 340 } // namespace
341 } // namespace cc 341 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698