OLD | NEW |
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 #include "cc/scheduler.h" | 5 #include "cc/scheduler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "cc/layer_tree_settings.h" |
8 #include "cc/test/scheduler_test_common.h" | 9 #include "cc/test/scheduler_test_common.h" |
9 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 | 12 |
12 namespace cc { | 13 namespace cc { |
13 namespace { | 14 namespace { |
14 | 15 |
15 class FakeSchedulerClient : public SchedulerClient { | 16 class FakeSchedulerClient : public SchedulerClient { |
16 public: | 17 public: |
17 FakeSchedulerClient() { reset(); } | 18 FakeSchedulerClient() { reset(); } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 bool m_drawWillHappen; | 63 bool m_drawWillHappen; |
63 bool m_swapWillHappenIfDrawHappens; | 64 bool m_swapWillHappenIfDrawHappens; |
64 int m_numDraws; | 65 int m_numDraws; |
65 std::vector<const char*> m_actions; | 66 std::vector<const char*> m_actions; |
66 }; | 67 }; |
67 | 68 |
68 TEST(SchedulerTest, RequestCommit) | 69 TEST(SchedulerTest, RequestCommit) |
69 { | 70 { |
70 FakeSchedulerClient client; | 71 FakeSchedulerClient client; |
71 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 72 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
72 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 73 LayerTreeSettings defaultLayerTreeSettings; |
| 74 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
73 scheduler->setCanBeginFrame(true); | 75 scheduler->setCanBeginFrame(true); |
74 scheduler->setVisible(true); | 76 scheduler->setVisible(true); |
75 scheduler->setCanDraw(true); | 77 scheduler->setCanDraw(true); |
76 | 78 |
77 // SetNeedsCommit should begin the frame. | 79 // SetNeedsCommit should begin the frame. |
78 scheduler->setNeedsCommit(); | 80 scheduler->setNeedsCommit(); |
79 EXPECT_EQ(1, client.numActions()); | 81 EXPECT_EQ(1, client.numActions()); |
80 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); | 82 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); |
81 EXPECT_FALSE(timeSource->active()); | 83 EXPECT_FALSE(timeSource->active()); |
82 client.reset(); | 84 client.reset(); |
(...skipping 13 matching lines...) Expand all Loading... |
96 client.reset(); | 98 client.reset(); |
97 | 99 |
98 // Timer should be off. | 100 // Timer should be off. |
99 EXPECT_FALSE(timeSource->active()); | 101 EXPECT_FALSE(timeSource->active()); |
100 } | 102 } |
101 | 103 |
102 TEST(SchedulerTest, RequestCommitAfterBeginFrame) | 104 TEST(SchedulerTest, RequestCommitAfterBeginFrame) |
103 { | 105 { |
104 FakeSchedulerClient client; | 106 FakeSchedulerClient client; |
105 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 107 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
106 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 108 LayerTreeSettings defaultLayerTreeSettings; |
| 109 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
107 scheduler->setCanBeginFrame(true); | 110 scheduler->setCanBeginFrame(true); |
108 scheduler->setVisible(true); | 111 scheduler->setVisible(true); |
109 scheduler->setCanDraw(true); | 112 scheduler->setCanDraw(true); |
110 | 113 |
111 // SetNedsCommit should begin the frame. | 114 // SetNedsCommit should begin the frame. |
112 scheduler->setNeedsCommit(); | 115 scheduler->setNeedsCommit(); |
113 EXPECT_EQ(1, client.numActions()); | 116 EXPECT_EQ(1, client.numActions()); |
114 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); | 117 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); |
115 client.reset(); | 118 client.reset(); |
116 | 119 |
(...skipping 13 matching lines...) Expand all Loading... |
130 EXPECT_EQ(2, client.numActions()); | 133 EXPECT_EQ(2, client.numActions()); |
131 EXPECT_STREQ("scheduledActionDrawAndSwapIfPossible", client.action(0)); | 134 EXPECT_STREQ("scheduledActionDrawAndSwapIfPossible", client.action(0)); |
132 EXPECT_STREQ("scheduledActionBeginFrame", client.action(1)); | 135 EXPECT_STREQ("scheduledActionBeginFrame", client.action(1)); |
133 client.reset(); | 136 client.reset(); |
134 } | 137 } |
135 | 138 |
136 TEST(SchedulerTest, TextureAcquisitionCollision) | 139 TEST(SchedulerTest, TextureAcquisitionCollision) |
137 { | 140 { |
138 FakeSchedulerClient client; | 141 FakeSchedulerClient client; |
139 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 142 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
140 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 143 LayerTreeSettings defaultLayerTreeSettings; |
| 144 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
141 scheduler->setCanBeginFrame(true); | 145 scheduler->setCanBeginFrame(true); |
142 scheduler->setVisible(true); | 146 scheduler->setVisible(true); |
143 scheduler->setCanDraw(true); | 147 scheduler->setCanDraw(true); |
144 | 148 |
145 scheduler->setNeedsCommit(); | 149 scheduler->setNeedsCommit(); |
146 scheduler->setMainThreadNeedsLayerTextures(); | 150 scheduler->setMainThreadNeedsLayerTextures(); |
147 EXPECT_EQ(2, client.numActions()); | 151 EXPECT_EQ(2, client.numActions()); |
148 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); | 152 EXPECT_STREQ("scheduledActionBeginFrame", client.action(0)); |
149 EXPECT_STREQ("scheduledActionAcquireLayerTexturesForMainThread", client.acti
on(1)); | 153 EXPECT_STREQ("scheduledActionAcquireLayerTexturesForMainThread", client.acti
on(1)); |
150 client.reset(); | 154 client.reset(); |
(...skipping 18 matching lines...) Expand all Loading... |
169 EXPECT_STREQ("scheduledActionDrawAndSwapIfPossible", client.action(0)); | 173 EXPECT_STREQ("scheduledActionDrawAndSwapIfPossible", client.action(0)); |
170 EXPECT_STREQ("scheduledActionAcquireLayerTexturesForMainThread", client.acti
on(1)); | 174 EXPECT_STREQ("scheduledActionAcquireLayerTexturesForMainThread", client.acti
on(1)); |
171 EXPECT_STREQ("scheduledActionBeginFrame", client.action(2)); | 175 EXPECT_STREQ("scheduledActionBeginFrame", client.action(2)); |
172 client.reset(); | 176 client.reset(); |
173 } | 177 } |
174 | 178 |
175 TEST(SchedulerTest, VisibilitySwitchWithTextureAcquisition) | 179 TEST(SchedulerTest, VisibilitySwitchWithTextureAcquisition) |
176 { | 180 { |
177 FakeSchedulerClient client; | 181 FakeSchedulerClient client; |
178 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 182 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
179 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 183 LayerTreeSettings defaultLayerTreeSettings; |
| 184 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
180 scheduler->setCanBeginFrame(true); | 185 scheduler->setCanBeginFrame(true); |
181 scheduler->setVisible(true); | 186 scheduler->setVisible(true); |
182 scheduler->setCanDraw(true); | 187 scheduler->setCanDraw(true); |
183 | 188 |
184 scheduler->setNeedsCommit(); | 189 scheduler->setNeedsCommit(); |
185 scheduler->beginFrameComplete(); | 190 scheduler->beginFrameComplete(); |
186 scheduler->setMainThreadNeedsLayerTextures(); | 191 scheduler->setMainThreadNeedsLayerTextures(); |
187 client.reset(); | 192 client.reset(); |
188 // Verify that pending texture acquisition fires when visibility | 193 // Verify that pending texture acquisition fires when visibility |
189 // is lost in order to avoid a deadlock. | 194 // is lost in order to avoid a deadlock. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 }; | 237 }; |
233 | 238 |
234 // Tests for two different situations: | 239 // Tests for two different situations: |
235 // 1. the scheduler dropping setNeedsRedraw requests that happen inside | 240 // 1. the scheduler dropping setNeedsRedraw requests that happen inside |
236 // a scheduledActionDrawAndSwap | 241 // a scheduledActionDrawAndSwap |
237 // 2. the scheduler drawing twice inside a single tick | 242 // 2. the scheduler drawing twice inside a single tick |
238 TEST(SchedulerTest, RequestRedrawInsideDraw) | 243 TEST(SchedulerTest, RequestRedrawInsideDraw) |
239 { | 244 { |
240 SchedulerClientThatSetNeedsDrawInsideDraw client; | 245 SchedulerClientThatSetNeedsDrawInsideDraw client; |
241 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 246 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
242 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 247 LayerTreeSettings defaultLayerTreeSettings; |
| 248 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
243 client.setScheduler(scheduler.get()); | 249 client.setScheduler(scheduler.get()); |
244 scheduler->setCanBeginFrame(true); | 250 scheduler->setCanBeginFrame(true); |
245 scheduler->setVisible(true); | 251 scheduler->setVisible(true); |
246 scheduler->setCanDraw(true); | 252 scheduler->setCanDraw(true); |
247 | 253 |
248 scheduler->setNeedsRedraw(); | 254 scheduler->setNeedsRedraw(); |
249 EXPECT_TRUE(scheduler->redrawPending()); | 255 EXPECT_TRUE(scheduler->redrawPending()); |
250 EXPECT_TRUE(timeSource->active()); | 256 EXPECT_TRUE(timeSource->active()); |
251 EXPECT_EQ(0, client.numDraws()); | 257 EXPECT_EQ(0, client.numDraws()); |
252 | 258 |
253 timeSource->tick(); | 259 timeSource->tick(); |
254 EXPECT_EQ(1, client.numDraws()); | 260 EXPECT_EQ(1, client.numDraws()); |
255 EXPECT_TRUE(scheduler->redrawPending()); | 261 EXPECT_TRUE(scheduler->redrawPending()); |
256 EXPECT_TRUE(timeSource->active()); | 262 EXPECT_TRUE(timeSource->active()); |
257 | 263 |
258 timeSource->tick(); | 264 timeSource->tick(); |
259 EXPECT_EQ(2, client.numDraws()); | 265 EXPECT_EQ(2, client.numDraws()); |
260 EXPECT_FALSE(scheduler->redrawPending()); | 266 EXPECT_FALSE(scheduler->redrawPending()); |
261 EXPECT_FALSE(timeSource->active()); | 267 EXPECT_FALSE(timeSource->active()); |
262 } | 268 } |
263 | 269 |
264 // Test that requesting redraw inside a failed draw doesn't lose the request. | 270 // Test that requesting redraw inside a failed draw doesn't lose the request. |
265 TEST(SchedulerTest, RequestRedrawInsideFailedDraw) | 271 TEST(SchedulerTest, RequestRedrawInsideFailedDraw) |
266 { | 272 { |
267 SchedulerClientThatSetNeedsDrawInsideDraw client; | 273 SchedulerClientThatSetNeedsDrawInsideDraw client; |
268 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 274 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
269 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 275 LayerTreeSettings defaultLayerTreeSettings; |
| 276 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
270 client.setScheduler(scheduler.get()); | 277 client.setScheduler(scheduler.get()); |
271 scheduler->setCanBeginFrame(true); | 278 scheduler->setCanBeginFrame(true); |
272 scheduler->setVisible(true); | 279 scheduler->setVisible(true); |
273 scheduler->setCanDraw(true); | 280 scheduler->setCanDraw(true); |
274 client.setDrawWillHappen(false); | 281 client.setDrawWillHappen(false); |
275 | 282 |
276 scheduler->setNeedsRedraw(); | 283 scheduler->setNeedsRedraw(); |
277 EXPECT_TRUE(scheduler->redrawPending()); | 284 EXPECT_TRUE(scheduler->redrawPending()); |
278 EXPECT_TRUE(timeSource->active()); | 285 EXPECT_TRUE(timeSource->active()); |
279 EXPECT_EQ(0, client.numDraws()); | 286 EXPECT_EQ(0, client.numDraws()); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 protected: | 339 protected: |
333 Scheduler* m_scheduler; | 340 Scheduler* m_scheduler; |
334 }; | 341 }; |
335 | 342 |
336 // Tests for the scheduler infinite-looping on setNeedsCommit requests that | 343 // Tests for the scheduler infinite-looping on setNeedsCommit requests that |
337 // happen inside a scheduledActionDrawAndSwap | 344 // happen inside a scheduledActionDrawAndSwap |
338 TEST(SchedulerTest, RequestCommitInsideDraw) | 345 TEST(SchedulerTest, RequestCommitInsideDraw) |
339 { | 346 { |
340 SchedulerClientThatSetNeedsCommitInsideDraw client; | 347 SchedulerClientThatSetNeedsCommitInsideDraw client; |
341 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 348 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
342 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 349 LayerTreeSettings defaultLayerTreeSettings; |
| 350 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
343 client.setScheduler(scheduler.get()); | 351 client.setScheduler(scheduler.get()); |
344 scheduler->setCanBeginFrame(true); | 352 scheduler->setCanBeginFrame(true); |
345 scheduler->setVisible(true); | 353 scheduler->setVisible(true); |
346 scheduler->setCanDraw(true); | 354 scheduler->setCanDraw(true); |
347 | 355 |
348 scheduler->setNeedsRedraw(); | 356 scheduler->setNeedsRedraw(); |
349 EXPECT_TRUE(scheduler->redrawPending()); | 357 EXPECT_TRUE(scheduler->redrawPending()); |
350 EXPECT_EQ(0, client.numDraws()); | 358 EXPECT_EQ(0, client.numDraws()); |
351 EXPECT_TRUE(timeSource->active()); | 359 EXPECT_TRUE(timeSource->active()); |
352 | 360 |
353 timeSource->tick(); | 361 timeSource->tick(); |
354 EXPECT_FALSE(timeSource->active()); | 362 EXPECT_FALSE(timeSource->active()); |
355 EXPECT_EQ(1, client.numDraws()); | 363 EXPECT_EQ(1, client.numDraws()); |
356 EXPECT_TRUE(scheduler->commitPending()); | 364 EXPECT_TRUE(scheduler->commitPending()); |
357 scheduler->beginFrameComplete(); | 365 scheduler->beginFrameComplete(); |
358 | 366 |
359 timeSource->tick(); | 367 timeSource->tick(); |
360 EXPECT_EQ(2, client.numDraws()); | 368 EXPECT_EQ(2, client.numDraws()); |
361 EXPECT_FALSE(timeSource->active()); | 369 EXPECT_FALSE(timeSource->active()); |
362 EXPECT_FALSE(scheduler->redrawPending()); | 370 EXPECT_FALSE(scheduler->redrawPending()); |
363 } | 371 } |
364 | 372 |
365 // Tests that when a draw fails then the pending commit should not be dropped. | 373 // Tests that when a draw fails then the pending commit should not be dropped. |
366 TEST(SchedulerTest, RequestCommitInsideFailedDraw) | 374 TEST(SchedulerTest, RequestCommitInsideFailedDraw) |
367 { | 375 { |
368 SchedulerClientThatSetNeedsDrawInsideDraw client; | 376 SchedulerClientThatSetNeedsDrawInsideDraw client; |
369 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 377 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
370 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource))); | 378 LayerTreeSettings defaultLayerTreeSettings; |
| 379 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr
(new FrameRateController(timeSource)), defaultLayerTreeSettings); |
371 client.setScheduler(scheduler.get()); | 380 client.setScheduler(scheduler.get()); |
372 scheduler->setCanBeginFrame(true); | 381 scheduler->setCanBeginFrame(true); |
373 scheduler->setVisible(true); | 382 scheduler->setVisible(true); |
374 scheduler->setCanDraw(true); | 383 scheduler->setCanDraw(true); |
375 client.setDrawWillHappen(false); | 384 client.setDrawWillHappen(false); |
376 | 385 |
377 scheduler->setNeedsRedraw(); | 386 scheduler->setNeedsRedraw(); |
378 EXPECT_TRUE(scheduler->redrawPending()); | 387 EXPECT_TRUE(scheduler->redrawPending()); |
379 EXPECT_TRUE(timeSource->active()); | 388 EXPECT_TRUE(timeSource->active()); |
380 EXPECT_EQ(0, client.numDraws()); | 389 EXPECT_EQ(0, client.numDraws()); |
(...skipping 22 matching lines...) Expand all Loading... |
403 EXPECT_FALSE(scheduler->redrawPending()); | 412 EXPECT_FALSE(scheduler->redrawPending()); |
404 EXPECT_FALSE(timeSource->active()); | 413 EXPECT_FALSE(timeSource->active()); |
405 } | 414 } |
406 | 415 |
407 TEST(SchedulerTest, NoBeginFrameWhenDrawFails) | 416 TEST(SchedulerTest, NoBeginFrameWhenDrawFails) |
408 { | 417 { |
409 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 418 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
410 SchedulerClientThatSetNeedsCommitInsideDraw client; | 419 SchedulerClientThatSetNeedsCommitInsideDraw client; |
411 scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(t
imeSource)); | 420 scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(t
imeSource)); |
412 FakeFrameRateController* controllerPtr = controller.get(); | 421 FakeFrameRateController* controllerPtr = controller.get(); |
413 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.Pass
As<FrameRateController>()); | 422 LayerTreeSettings defaultLayerTreeSettings; |
| 423 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.Pass
As<FrameRateController>(), defaultLayerTreeSettings); |
414 client.setScheduler(scheduler.get()); | 424 client.setScheduler(scheduler.get()); |
415 scheduler->setCanBeginFrame(true); | 425 scheduler->setCanBeginFrame(true); |
416 scheduler->setVisible(true); | 426 scheduler->setVisible(true); |
417 scheduler->setCanDraw(true); | 427 scheduler->setCanDraw(true); |
418 | 428 |
419 EXPECT_EQ(0, controllerPtr->numFramesPending()); | 429 EXPECT_EQ(0, controllerPtr->numFramesPending()); |
420 | 430 |
421 scheduler->setNeedsRedraw(); | 431 scheduler->setNeedsRedraw(); |
422 EXPECT_TRUE(scheduler->redrawPending()); | 432 EXPECT_TRUE(scheduler->redrawPending()); |
423 EXPECT_TRUE(timeSource->active()); | 433 EXPECT_TRUE(timeSource->active()); |
(...skipping 16 matching lines...) Expand all Loading... |
440 EXPECT_EQ(2, client.numDraws()); | 450 EXPECT_EQ(2, client.numDraws()); |
441 EXPECT_EQ(0, controllerPtr->numFramesPending()); | 451 EXPECT_EQ(0, controllerPtr->numFramesPending()); |
442 } | 452 } |
443 | 453 |
444 TEST(SchedulerTest, NoBeginFrameWhenSwapFailsDuringForcedCommit) | 454 TEST(SchedulerTest, NoBeginFrameWhenSwapFailsDuringForcedCommit) |
445 { | 455 { |
446 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); | 456 scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); |
447 FakeSchedulerClient client; | 457 FakeSchedulerClient client; |
448 scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(t
imeSource)); | 458 scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(t
imeSource)); |
449 FakeFrameRateController* controllerPtr = controller.get(); | 459 FakeFrameRateController* controllerPtr = controller.get(); |
450 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.Pass
As<FrameRateController>()); | 460 LayerTreeSettings defaultLayerTreeSettings; |
| 461 scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.Pass
As<FrameRateController>(), defaultLayerTreeSettings); |
451 | 462 |
452 EXPECT_EQ(0, controllerPtr->numFramesPending()); | 463 EXPECT_EQ(0, controllerPtr->numFramesPending()); |
453 | 464 |
454 // Tell the client that it will fail to swap. | 465 // Tell the client that it will fail to swap. |
455 client.setDrawWillHappen(true); | 466 client.setDrawWillHappen(true); |
456 client.setSwapWillHappenIfDrawHappens(false); | 467 client.setSwapWillHappenIfDrawHappens(false); |
457 | 468 |
458 // Get the compositor to do a scheduledActionDrawAndSwapForced. | 469 // Get the compositor to do a scheduledActionDrawAndSwapForced. |
459 scheduler->setNeedsRedraw(); | 470 scheduler->setNeedsRedraw(); |
460 scheduler->setNeedsForcedRedraw(); | 471 scheduler->setNeedsForcedRedraw(); |
461 EXPECT_TRUE(client.hasAction("scheduledActionDrawAndSwapForced")); | 472 EXPECT_TRUE(client.hasAction("scheduledActionDrawAndSwapForced")); |
462 | 473 |
463 // We should not have told the frame rate controller that we began a frame. | 474 // We should not have told the frame rate controller that we began a frame. |
464 EXPECT_EQ(0, controllerPtr->numFramesPending()); | 475 EXPECT_EQ(0, controllerPtr->numFramesPending()); |
465 } | 476 } |
466 | 477 |
467 } // namespace | 478 } // namespace |
468 } // namespace cc | 479 } // namespace cc |
OLD | NEW |