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

Side by Side Diff: cc/scheduler/scheduler_state_machine_unittest.cc

Issue 1265023005: cc: Add SchedulerStateMachine::DidDraw and use for forced draws (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@WillDidAction0
Patch Set: Created 5 years, 4 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/scheduler_state_machine.h" 5 #include "cc/scheduler/scheduler_state_machine.h"
6 6
7 #include "base/trace_event/trace_event.h" 7 #include "base/trace_event/trace_event.h"
8 #include "cc/scheduler/scheduler.h" 8 #include "cc/scheduler/scheduler.h"
9 #include "cc/test/begin_frame_args_test.h" 9 #include "cc/test/begin_frame_args_test.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 23 matching lines...) Expand all
34 << state.AsValue()->ToString() 34 << state.AsValue()->ToString()
35 35
36 #define EXPECT_ACTION_UPDATE_STATE(action) \ 36 #define EXPECT_ACTION_UPDATE_STATE(action) \
37 EXPECT_ACTION(action); \ 37 EXPECT_ACTION(action); \
38 if (action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE || \ 38 if (action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE || \
39 action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED) { \ 39 action == SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED) { \
40 EXPECT_IMPL_FRAME_STATE( \ 40 EXPECT_IMPL_FRAME_STATE( \
41 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE); \ 41 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE); \
42 } \ 42 } \
43 state.WillAction(action); \ 43 state.WillAction(action); \
44 state.DidAction(action); \
44 if (action == SchedulerStateMachine::ACTION_NONE) { \ 45 if (action == SchedulerStateMachine::ACTION_NONE) { \
45 if (state.begin_impl_frame_state() == \ 46 if (state.begin_impl_frame_state() == \
46 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING) \ 47 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING) \
47 state.OnBeginImplFrameDeadlinePending(); \ 48 state.OnBeginImplFrameDeadlinePending(); \
48 if (state.begin_impl_frame_state() == \ 49 if (state.begin_impl_frame_state() == \
49 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE) \ 50 SchedulerStateMachine::BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE) \
50 state.OnBeginImplFrameIdle(); \ 51 state.OnBeginImplFrameIdle(); \
51 } 52 }
52 53
53 #define SET_UP_STATE(state) \ 54 #define SET_UP_STATE(state) \
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 347 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
347 EXPECT_ACTION_UPDATE_STATE( 348 EXPECT_ACTION_UPDATE_STATE(
348 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 349 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
349 state.DidSwapBuffers(); 350 state.DidSwapBuffers();
350 state.DidSwapBuffersComplete(); 351 state.DidSwapBuffersComplete();
351 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 352 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
352 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); 353 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
353 } 354 }
354 355
355 TEST(SchedulerStateMachineTest, 356 TEST(SchedulerStateMachineTest,
356 TestFailedDrawForAnimationCheckerboardSetsNeedsCommitAndDoesNotDrawAgain) { 357 FailedDrawForAnimationCheckerboardSetsNeedsCommitAndRetriesDraw) {
357 SchedulerSettings default_scheduler_settings;
358 StateMachine state(default_scheduler_settings);
359 SET_UP_STATE(state)
360 state.SetNeedsRedraw(true);
361 EXPECT_TRUE(state.RedrawPending());
362 EXPECT_TRUE(state.BeginFrameNeeded());
363 state.OnBeginImplFrame();
364 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
365 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
366 state.OnBeginImplFrameDeadline();
367
368 // We're drawing now.
369 EXPECT_ACTION_UPDATE_STATE(
370 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
371 state.DidSwapBuffers();
372 state.DidSwapBuffersComplete();
373 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
374
375 EXPECT_FALSE(state.RedrawPending());
376 EXPECT_FALSE(state.CommitPending());
377
378 // Failing the draw makes us require a commit.
379 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
380 state.OnBeginImplFrame();
381 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
382 EXPECT_ACTION_UPDATE_STATE(
383 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
384 EXPECT_TRUE(state.RedrawPending());
385 EXPECT_TRUE(state.CommitPending());
386 }
387
388 TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) {
389 SchedulerSettings default_scheduler_settings; 358 SchedulerSettings default_scheduler_settings;
390 StateMachine state(default_scheduler_settings); 359 StateMachine state(default_scheduler_settings);
391 SET_UP_STATE(state) 360 SET_UP_STATE(state)
392 state.SetNeedsRedraw(true); 361 state.SetNeedsRedraw(true);
393 EXPECT_TRUE(state.RedrawPending()); 362 EXPECT_TRUE(state.RedrawPending());
394 EXPECT_TRUE(state.BeginFrameNeeded()); 363 EXPECT_TRUE(state.BeginFrameNeeded());
395 364
365 // Start a frame.
396 state.OnBeginImplFrame(); 366 state.OnBeginImplFrame();
397 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 367 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
398 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 368 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
369 state.OnBeginImplFrameDeadlinePending();
370 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
371 EXPECT_FALSE(state.CommitPending());
372
373 // Failing a draw triggers request for a new BeginMainFrame.
399 state.OnBeginImplFrameDeadline(); 374 state.OnBeginImplFrameDeadline();
375 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
400 EXPECT_ACTION_UPDATE_STATE( 376 EXPECT_ACTION_UPDATE_STATE(
401 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 377 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
402 state.DidSwapBuffers(); 378 state.DidSwapBuffers();
379 EXPECT_ACTION_UPDATE_STATE(
380 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
381 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
382 state.OnBeginImplFrameIdle();
383 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
403 state.DidSwapBuffersComplete(); 384 state.DidSwapBuffersComplete();
404 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 385 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
405 EXPECT_FALSE(state.RedrawPending());
406 EXPECT_FALSE(state.CommitPending());
407 386
408 // Missing high res content requires a commit (but not a redraw) 387 // It's okay to attempt more draws just in case additional raster
409 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT); 388 // finishes and the requested commit wasn't actually necessary.
389 EXPECT_TRUE(state.CommitPending());
390 EXPECT_TRUE(state.RedrawPending());
410 state.OnBeginImplFrame(); 391 state.OnBeginImplFrame();
392 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
393 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
394 state.OnBeginImplFrameDeadlinePending();
395 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
396 state.OnBeginImplFrameDeadline();
397 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
411 EXPECT_ACTION_UPDATE_STATE( 398 EXPECT_ACTION_UPDATE_STATE(
412 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 399 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
413 EXPECT_FALSE(state.RedrawPending()); 400 state.DidSwapBuffers();
414 EXPECT_TRUE(state.CommitPending()); 401 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
402 state.OnBeginImplFrameIdle();
403 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
404 state.DidSwapBuffersComplete();
405 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
415 } 406 }
416 407
417 TEST(SchedulerStateMachineTest, 408 TEST(SchedulerStateMachineTest, FailedDrawForMissingHighResNeedsCommit) {
418 TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) {
419 SchedulerSettings default_scheduler_settings; 409 SchedulerSettings default_scheduler_settings;
420 StateMachine state(default_scheduler_settings); 410 StateMachine state(default_scheduler_settings);
421 SET_UP_STATE(state) 411 SET_UP_STATE(state)
422 state.SetNeedsRedraw(true); 412 state.SetNeedsRedraw(true);
423 EXPECT_TRUE(state.RedrawPending()); 413 EXPECT_TRUE(state.RedrawPending());
424 EXPECT_TRUE(state.BeginFrameNeeded()); 414 EXPECT_TRUE(state.BeginFrameNeeded());
415
416 // Start a frame.
425 state.OnBeginImplFrame(); 417 state.OnBeginImplFrame();
426 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 418 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
427 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 419 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
420 state.OnBeginImplFrameDeadlinePending();
421 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
422 EXPECT_FALSE(state.CommitPending());
423
424 // Failing a draw triggers because of high res tiles missing
425 // request for a new BeginMainFrame.
428 state.OnBeginImplFrameDeadline(); 426 state.OnBeginImplFrameDeadline();
429 427 state.SetDrawResult(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT);
430 // We're drawing now.
431 EXPECT_ACTION_UPDATE_STATE( 428 EXPECT_ACTION_UPDATE_STATE(
432 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 429 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
433 state.DidSwapBuffers(); 430 state.DidSwapBuffers();
431 EXPECT_ACTION_UPDATE_STATE(
432 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
433 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
434 state.OnBeginImplFrameIdle();
435 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
434 state.DidSwapBuffersComplete(); 436 state.DidSwapBuffersComplete();
435 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 437 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
438
439 // It doesn't request a draw until we get a new commit though.
440 EXPECT_TRUE(state.CommitPending());
436 EXPECT_FALSE(state.RedrawPending()); 441 EXPECT_FALSE(state.RedrawPending());
437 EXPECT_FALSE(state.CommitPending()); 442 state.OnBeginImplFrame();
438 443 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
439 // While still in the same BeginMainFrame callback on the main thread, 444 state.OnBeginImplFrameDeadlinePending();
440 // set needs redraw again. This should not redraw. 445 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
441 state.SetNeedsRedraw(true); 446 state.OnBeginImplFrameDeadline();
447 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
448 state.OnBeginImplFrameIdle();
442 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 449 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
443 450
444 // Failing the draw for animation checkerboards makes us require a commit. 451 // Finish the commit and activation.
445 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS); 452 state.NotifyBeginMainFrameStarted();
453 state.NotifyReadyToCommit();
454 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
455 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
456 state.NotifyReadyToActivate();
457 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ACTIVATE_SYNC_TREE);
458 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
459 EXPECT_TRUE(state.RedrawPending());
460
461 // Verify we draw with the new frame.
446 state.OnBeginImplFrame(); 462 state.OnBeginImplFrame();
447 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 463 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
464 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
465 state.OnBeginImplFrameDeadlinePending();
466 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
467 state.OnBeginImplFrameDeadline();
448 EXPECT_ACTION_UPDATE_STATE( 468 EXPECT_ACTION_UPDATE_STATE(
449 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 469 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
450 EXPECT_TRUE(state.RedrawPending()); 470 state.DidSwapBuffers();
471 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
472 state.OnBeginImplFrameIdle();
473 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
451 } 474 }
452 475
453 TEST(SchedulerStateMachineTest, 476 TEST(SchedulerStateMachineTest,
454 TestFailedDrawsEventuallyForceDrawAfterNextCommit) { 477 TestFailedDrawsEventuallyForceDrawAfterNextCommit) {
455 SchedulerSettings scheduler_settings; 478 SchedulerSettings scheduler_settings;
456 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced = 1; 479 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced = 1;
457 StateMachine state(scheduler_settings); 480 StateMachine state(scheduler_settings);
458 SET_UP_STATE(state) 481 SET_UP_STATE(state)
459 482
460 // Start a commit. 483 // Start a commit.
461 state.SetNeedsBeginMainFrame(); 484 state.SetNeedsBeginMainFrame();
462 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 485 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
463 state.OnBeginImplFrame(); 486 state.OnBeginImplFrame();
464 EXPECT_ACTION_UPDATE_STATE( 487 EXPECT_ACTION_UPDATE_STATE(
465 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 488 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
466 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 489 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
467 EXPECT_TRUE(state.CommitPending()); 490 EXPECT_TRUE(state.CommitPending());
468 491
469 // Then initiate a draw. 492 // Then initiate a draw that fails.
470 state.SetNeedsRedraw(true); 493 state.SetNeedsRedraw(true);
471 state.OnBeginImplFrameDeadline(); 494 state.OnBeginImplFrameDeadline();
472 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 495 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
496 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
473 EXPECT_ACTION_UPDATE_STATE( 497 EXPECT_ACTION_UPDATE_STATE(
474 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 498 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
475
476 // Fail the draw.
477 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
478 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 499 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
479 EXPECT_TRUE(state.BeginFrameNeeded()); 500 EXPECT_TRUE(state.BeginFrameNeeded());
480 EXPECT_TRUE(state.RedrawPending()); 501 EXPECT_TRUE(state.RedrawPending());
481 // But the commit is ongoing.
482 EXPECT_TRUE(state.CommitPending()); 502 EXPECT_TRUE(state.CommitPending());
483 503
484 // Finish the commit. Note, we should not yet be forcing a draw, but should 504 // Finish the commit. Note, we should not yet be forcing a draw, but should
485 // continue the commit as usual. 505 // continue the commit as usual.
486 state.NotifyBeginMainFrameStarted(); 506 state.NotifyBeginMainFrameStarted();
487 state.NotifyReadyToCommit(); 507 state.NotifyReadyToCommit();
488 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 508 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
489 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 509 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
490 EXPECT_TRUE(state.RedrawPending()); 510 EXPECT_TRUE(state.RedrawPending());
491 511
(...skipping 11 matching lines...) Expand all
503 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 523 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
504 state.OnBeginImplFrameDeadline(); 524 state.OnBeginImplFrameDeadline();
505 EXPECT_ACTION_UPDATE_STATE( 525 EXPECT_ACTION_UPDATE_STATE(
506 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED); 526 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED);
507 state.DidSwapBuffers(); 527 state.DidSwapBuffers();
508 state.DidSwapBuffersComplete(); 528 state.DidSwapBuffersComplete();
509 } 529 }
510 530
511 TEST(SchedulerStateMachineTest, TestFailedDrawsDoNotRestartForcedDraw) { 531 TEST(SchedulerStateMachineTest, TestFailedDrawsDoNotRestartForcedDraw) {
512 SchedulerSettings scheduler_settings; 532 SchedulerSettings scheduler_settings;
513 int draw_limit = 1; 533 int draw_limit = 2;
514 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced = 534 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced =
515 draw_limit; 535 draw_limit;
516 StateMachine state(scheduler_settings); 536 StateMachine state(scheduler_settings);
517 SET_UP_STATE(state) 537 SET_UP_STATE(state)
518 538
519 // Start a commit. 539 // Start a commit.
520 state.SetNeedsBeginMainFrame(); 540 state.SetNeedsBeginMainFrame();
521 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 541 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
522 state.OnBeginImplFrame(); 542 state.OnBeginImplFrame();
523 EXPECT_ACTION_UPDATE_STATE( 543 EXPECT_ACTION_UPDATE_STATE(
524 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 544 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
525 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 545 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
526 EXPECT_TRUE(state.CommitPending()); 546 EXPECT_TRUE(state.CommitPending());
527 547
528 // Then initiate a draw. 548 // Then initiate a draw.
529 state.SetNeedsRedraw(true); 549 state.SetNeedsRedraw(true);
530 state.OnBeginImplFrameDeadline(); 550 state.OnBeginImplFrameDeadline();
531 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 551 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
532 EXPECT_ACTION_UPDATE_STATE( 552 EXPECT_ACTION_UPDATE_STATE(
533 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 553 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
534 554
535 // Fail the draw enough times to force a redraw, 555 // Fail the draw enough times to force a redraw.
536 // then once more for good measure. 556 for (int i = 0; i < draw_limit; ++i) {
537 for (int i = 0; i < draw_limit + 1; ++i) 557 state.SetNeedsRedraw(true);
538 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS); 558 state.OnBeginImplFrame();
539 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 559 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
560 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
561 state.OnBeginImplFrameDeadlinePending();
562 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
563 state.OnBeginImplFrameDeadline();
564 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
565 EXPECT_ACTION_UPDATE_STATE(
566 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
567 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
568 state.OnBeginImplFrameIdle();
569 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
570 }
571
540 EXPECT_TRUE(state.BeginFrameNeeded()); 572 EXPECT_TRUE(state.BeginFrameNeeded());
541 EXPECT_TRUE(state.RedrawPending()); 573 EXPECT_TRUE(state.RedrawPending());
542 // But the commit is ongoing. 574 // But the commit is ongoing.
543 EXPECT_TRUE(state.CommitPending()); 575 EXPECT_TRUE(state.CommitPending());
544 EXPECT_TRUE(state.ForcedRedrawState() == 576 EXPECT_TRUE(state.ForcedRedrawState() ==
545 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT); 577 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT);
546 578
547 state.NotifyBeginMainFrameStarted(); 579 state.NotifyBeginMainFrameStarted();
548 state.NotifyReadyToCommit(); 580 state.NotifyReadyToCommit();
549 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 581 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
550 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 582 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
551 EXPECT_TRUE(state.RedrawPending()); 583 EXPECT_TRUE(state.RedrawPending());
552 EXPECT_FALSE(state.CommitPending()); 584 EXPECT_FALSE(state.CommitPending());
553 585
554 // Now force redraw should be in waiting for activation 586 // Now force redraw should be in waiting for activation
555 EXPECT_TRUE(state.ForcedRedrawState() == 587 EXPECT_TRUE(state.ForcedRedrawState() ==
556 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 588 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
557 589
558 // After failing additional draws, we should still be in a forced 590 // After failing additional draws, we should still be in a forced
559 // redraw, but not back in WAITING_FOR_COMMIT. 591 // redraw, but not back in WAITING_FOR_COMMIT.
560 for (int i = 0; i < draw_limit + 1; ++i) 592 for (int i = 0; i < draw_limit; ++i) {
561 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS); 593 state.SetNeedsRedraw(true);
594 state.OnBeginImplFrame();
595 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
596 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
597 state.OnBeginImplFrameDeadlinePending();
598 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
599 state.OnBeginImplFrameDeadline();
600 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
601 EXPECT_ACTION_UPDATE_STATE(
602 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
603 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
604 state.OnBeginImplFrameIdle();
605 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
606 }
562 EXPECT_TRUE(state.RedrawPending()); 607 EXPECT_TRUE(state.RedrawPending());
563 EXPECT_TRUE(state.ForcedRedrawState() == 608 EXPECT_TRUE(state.ForcedRedrawState() ==
564 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 609 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
565 } 610 }
566 611
567 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) { 612 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) {
568 SchedulerSettings default_scheduler_settings; 613 SchedulerSettings default_scheduler_settings;
569 StateMachine state(default_scheduler_settings); 614 StateMachine state(default_scheduler_settings);
570 SET_UP_STATE(state) 615 SET_UP_STATE(state)
571 616
572 // Start a draw. 617 // Start a draw.
573 state.SetNeedsRedraw(true); 618 state.SetNeedsRedraw(true);
574 EXPECT_TRUE(state.BeginFrameNeeded()); 619 EXPECT_TRUE(state.BeginFrameNeeded());
575 state.OnBeginImplFrame(); 620 state.OnBeginImplFrame();
576 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 621 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
577 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 622 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
578 state.OnBeginImplFrameDeadline(); 623 state.OnBeginImplFrameDeadline();
579 EXPECT_TRUE(state.RedrawPending()); 624 EXPECT_TRUE(state.RedrawPending());
625 state.SetDrawResult(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
580 EXPECT_ACTION_UPDATE_STATE( 626 EXPECT_ACTION_UPDATE_STATE(
581 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 627 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
582 628
583 // Failing the draw for animation checkerboards makes us require a commit. 629 // Failing the draw for animation checkerboards makes us require a commit.
584 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
585 EXPECT_ACTION_UPDATE_STATE( 630 EXPECT_ACTION_UPDATE_STATE(
586 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 631 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
587 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 632 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
588 EXPECT_TRUE(state.RedrawPending()); 633 EXPECT_TRUE(state.RedrawPending());
589 634
590 // We should not be trying to draw again now, but we have a commit pending. 635 // We should not be trying to draw again now, but we have a commit pending.
591 EXPECT_TRUE(state.BeginFrameNeeded()); 636 EXPECT_TRUE(state.BeginFrameNeeded());
592 state.OnBeginImplFrame(); 637 state.OnBeginImplFrame();
593 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 638 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
594 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 639 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
(...skipping 17 matching lines...) Expand all
612 // Draw the first frame. 657 // Draw the first frame.
613 EXPECT_TRUE(state.BeginFrameNeeded()); 658 EXPECT_TRUE(state.BeginFrameNeeded());
614 state.OnBeginImplFrame(); 659 state.OnBeginImplFrame();
615 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 660 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
616 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 661 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
617 662
618 state.OnBeginImplFrameDeadline(); 663 state.OnBeginImplFrameDeadline();
619 EXPECT_ACTION_UPDATE_STATE( 664 EXPECT_ACTION_UPDATE_STATE(
620 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 665 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
621 state.DidSwapBuffers(); 666 state.DidSwapBuffers();
622 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
623 state.DidSwapBuffersComplete(); 667 state.DidSwapBuffersComplete();
624 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 668 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
625 669
626 // Before the next BeginImplFrame, set needs redraw again. 670 // Before the next BeginImplFrame, set needs redraw again.
627 // This should not redraw until the next BeginImplFrame. 671 // This should not redraw until the next BeginImplFrame.
628 state.SetNeedsRedraw(true); 672 state.SetNeedsRedraw(true);
629 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 673 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
630 674
631 // Move to another frame. This should now draw. 675 // Move to another frame. This should now draw.
632 EXPECT_TRUE(state.BeginFrameNeeded()); 676 EXPECT_TRUE(state.BeginFrameNeeded());
633 state.OnBeginImplFrame(); 677 state.OnBeginImplFrame();
634 678
635 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 679 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
636 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 680 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
637 681
638 state.OnBeginImplFrameDeadline(); 682 state.OnBeginImplFrameDeadline();
639 EXPECT_ACTION_UPDATE_STATE( 683 EXPECT_ACTION_UPDATE_STATE(
640 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 684 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
641 state.DidSwapBuffers(); 685 state.DidSwapBuffers();
642 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
643 state.DidSwapBuffersComplete(); 686 state.DidSwapBuffersComplete();
644 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 687 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
645 688
646 // We just swapped, so we should proactively request another BeginImplFrame. 689 // We just swapped, so we should proactively request another BeginImplFrame.
647 EXPECT_TRUE(state.BeginFrameNeeded()); 690 EXPECT_TRUE(state.BeginFrameNeeded());
648 } 691 }
649 692
650 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { 693 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) {
651 SchedulerSettings default_scheduler_settings; 694 SchedulerSettings default_scheduler_settings;
652 695
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 EXPECT_ACTION_UPDATE_STATE( 907 EXPECT_ACTION_UPDATE_STATE(
865 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 908 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
866 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 909 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
867 910
868 state.OnBeginImplFrameDeadline(); 911 state.OnBeginImplFrameDeadline();
869 912
870 EXPECT_TRUE(state.active_tree_needs_first_draw()); 913 EXPECT_TRUE(state.active_tree_needs_first_draw());
871 EXPECT_ACTION_UPDATE_STATE( 914 EXPECT_ACTION_UPDATE_STATE(
872 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 915 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
873 state.DidSwapBuffers(); 916 state.DidSwapBuffers();
874 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
875 state.DidSwapBuffersComplete(); 917 state.DidSwapBuffersComplete();
876 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 918 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
877 } 919 }
878 920
879 TEST(SchedulerStateMachineTest, TestFullCycle) { 921 TEST(SchedulerStateMachineTest, TestFullCycle) {
880 SchedulerSettings default_scheduler_settings; 922 SchedulerSettings default_scheduler_settings;
881 StateMachine state(default_scheduler_settings); 923 StateMachine state(default_scheduler_settings);
882 SET_UP_STATE(state) 924 SET_UP_STATE(state)
883 925
884 // Start clean and set commit. 926 // Start clean and set commit.
(...skipping 24 matching lines...) Expand all
909 951
910 // Expect to do nothing until BeginImplFrame deadline 952 // Expect to do nothing until BeginImplFrame deadline
911 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 953 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
912 954
913 // At BeginImplFrame deadline, draw. 955 // At BeginImplFrame deadline, draw.
914 state.OnBeginImplFrameDeadline(); 956 state.OnBeginImplFrameDeadline();
915 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 957 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
916 EXPECT_ACTION_UPDATE_STATE( 958 EXPECT_ACTION_UPDATE_STATE(
917 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 959 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
918 state.DidSwapBuffers(); 960 state.DidSwapBuffers();
919 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
920 state.DidSwapBuffersComplete(); 961 state.DidSwapBuffersComplete();
921 962
922 // Should be synchronized, no draw needed, no action needed. 963 // Should be synchronized, no draw needed, no action needed.
923 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 964 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
924 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); 965 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
925 EXPECT_FALSE(state.needs_redraw()); 966 EXPECT_FALSE(state.needs_redraw());
926 } 967 }
927 968
928 TEST(SchedulerStateMachineTest, CommitWithoutDrawWithPendingTree) { 969 TEST(SchedulerStateMachineTest, CommitWithoutDrawWithPendingTree) {
929 SchedulerSettings default_scheduler_settings; 970 SchedulerSettings default_scheduler_settings;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 // Haven't draw since last commit, do not begin new main frame. 1089 // Haven't draw since last commit, do not begin new main frame.
1049 state.OnBeginImplFrame(); 1090 state.OnBeginImplFrame();
1050 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1091 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1051 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1092 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1052 1093
1053 // At BeginImplFrame deadline, draw. This draws unblocks BeginMainFrame. 1094 // At BeginImplFrame deadline, draw. This draws unblocks BeginMainFrame.
1054 state.OnBeginImplFrameDeadline(); 1095 state.OnBeginImplFrameDeadline();
1055 EXPECT_ACTION_UPDATE_STATE( 1096 EXPECT_ACTION_UPDATE_STATE(
1056 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1097 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1057 state.DidSwapBuffers(); 1098 state.DidSwapBuffers();
1058 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1059 state.DidSwapBuffersComplete(); 1099 state.DidSwapBuffersComplete();
1060 1100
1061 // Now will be able to start main frame. 1101 // Now will be able to start main frame.
1062 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); 1102 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
1063 EXPECT_FALSE(state.needs_redraw()); 1103 EXPECT_FALSE(state.needs_redraw());
1064 EXPECT_ACTION_UPDATE_STATE( 1104 EXPECT_ACTION_UPDATE_STATE(
1065 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1105 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1066 } 1106 }
1067 1107
1068 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) { 1108 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 1140
1101 // Expect to do nothing until BeginImplFrame deadline. 1141 // Expect to do nothing until BeginImplFrame deadline.
1102 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1142 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1103 1143
1104 // At BeginImplFrame deadline, draw. 1144 // At BeginImplFrame deadline, draw.
1105 state.OnBeginImplFrameDeadline(); 1145 state.OnBeginImplFrameDeadline();
1106 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1146 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1107 EXPECT_ACTION_UPDATE_STATE( 1147 EXPECT_ACTION_UPDATE_STATE(
1108 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1148 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1109 state.DidSwapBuffers(); 1149 state.DidSwapBuffers();
1110 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1111 state.DidSwapBuffersComplete(); 1150 state.DidSwapBuffersComplete();
1112 1151
1113 // Should be synchronized, no draw needed, no action needed. 1152 // Should be synchronized, no draw needed, no action needed.
1114 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1153 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1115 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE); 1154 EXPECT_MAIN_FRAME_STATE(SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_IDLE);
1116 EXPECT_FALSE(state.needs_redraw()); 1155 EXPECT_FALSE(state.needs_redraw());
1117 1156
1118 // Next BeginImplFrame should initiate second commit. 1157 // Next BeginImplFrame should initiate second commit.
1119 state.OnBeginImplFrame(); 1158 state.OnBeginImplFrame();
1120 EXPECT_ACTION_UPDATE_STATE( 1159 EXPECT_ACTION_UPDATE_STATE(
(...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after
1983 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); 2022 EXPECT_FALSE(state.ProactiveBeginFrameWanted());
1984 bool commit_has_no_updates = true; 2023 bool commit_has_no_updates = true;
1985 state.WillCommit(commit_has_no_updates); 2024 state.WillCommit(commit_has_no_updates);
1986 EXPECT_TRUE(state.ProactiveBeginFrameWanted()); 2025 EXPECT_TRUE(state.ProactiveBeginFrameWanted());
1987 state.OnBeginImplFrame(); 2026 state.OnBeginImplFrame();
1988 EXPECT_FALSE(state.ProactiveBeginFrameWanted()); 2027 EXPECT_FALSE(state.ProactiveBeginFrameWanted());
1989 } 2028 }
1990 2029
1991 } // namespace 2030 } // namespace
1992 } // namespace cc 2031 } // namespace cc
OLDNEW
« cc/scheduler/scheduler_state_machine.h ('K') | « cc/scheduler/scheduler_state_machine.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698