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

Side by Side Diff: cc/scheduler_unittest.cc

Issue 11830040: cc: Do not request redraw on commit when impl-side painting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@decouple_draw3
Patch Set: fix cc_unittests Created 7 years, 11 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 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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698