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