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

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

Issue 246753008: cc: Unify use of DidSwapBuffers() and did_request_swap (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove HasRequestedDrawThisFrame() Created 6 years, 7 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 | Annotate | Revision Log
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 "cc/scheduler/scheduler.h" 7 #include "cc/scheduler/scheduler.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 #define EXPECT_ACTION_UPDATE_STATE(action) \ 10 #define EXPECT_ACTION_UPDATE_STATE(action) \
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 247 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
248 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 248 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
249 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 249 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
250 EXPECT_EQ(state.CommitState(), 250 EXPECT_EQ(state.CommitState(),
251 SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW); 251 SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW);
252 252
253 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 253 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
254 state.OnBeginImplFrameDeadline(); 254 state.OnBeginImplFrameDeadline();
255 EXPECT_ACTION_UPDATE_STATE( 255 EXPECT_ACTION_UPDATE_STATE(
256 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 256 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
257 state.DidSwapBuffers();
258 state.DidSwapBuffersComplete();
257 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE); 259 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE);
258 EXPECT_ACTION_UPDATE_STATE( 260 EXPECT_ACTION_UPDATE_STATE(
259 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 261 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
260 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 262 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
261 EXPECT_EQ(state.CommitState(), 263 EXPECT_EQ(state.CommitState(),
262 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 264 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
263 265
264 state.NotifyBeginMainFrameStarted(); 266 state.NotifyBeginMainFrameStarted();
265 state.NotifyReadyToCommit(); 267 state.NotifyReadyToCommit();
266 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 268 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 state.NotifyReadyToActivate(); 321 state.NotifyReadyToActivate();
320 EXPECT_ACTION_UPDATE_STATE( 322 EXPECT_ACTION_UPDATE_STATE(
321 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 323 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
322 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 324 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
323 325
324 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 326 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
325 state.OnBeginImplFrameDeadline(); 327 state.OnBeginImplFrameDeadline();
326 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 328 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
327 EXPECT_ACTION_UPDATE_STATE( 329 EXPECT_ACTION_UPDATE_STATE(
328 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 330 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
331 state.DidSwapBuffers();
332 state.DidSwapBuffersComplete();
329 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 333 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
330 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 334 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
331 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE); 335 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE);
332 } 336 }
333 337
334 TEST(SchedulerStateMachineTest, 338 TEST(SchedulerStateMachineTest,
335 TestFailedDrawForAnimationCheckerboardSetsNeedsCommitAndDoesNotDrawAgain) { 339 TestFailedDrawForAnimationCheckerboardSetsNeedsCommitAndDoesNotDrawAgain) {
336 SchedulerSettings default_scheduler_settings; 340 SchedulerSettings default_scheduler_settings;
337 StateMachine state(default_scheduler_settings); 341 StateMachine state(default_scheduler_settings);
338 state.SetCanStart(); 342 state.SetCanStart();
339 state.UpdateState(state.NextAction()); 343 state.UpdateState(state.NextAction());
340 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 344 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
341 state.SetVisible(true); 345 state.SetVisible(true);
342 state.SetCanDraw(true); 346 state.SetCanDraw(true);
343 state.SetNeedsRedraw(true); 347 state.SetNeedsRedraw(true);
344 EXPECT_TRUE(state.RedrawPending()); 348 EXPECT_TRUE(state.RedrawPending());
345 EXPECT_TRUE(state.BeginFrameNeeded()); 349 EXPECT_TRUE(state.BeginFrameNeeded());
346 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 350 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
347 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 351 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
348 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 352 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
349 state.OnBeginImplFrameDeadline(); 353 state.OnBeginImplFrameDeadline();
350 354
351 // We're drawing now. 355 // We're drawing now.
352 EXPECT_ACTION_UPDATE_STATE( 356 EXPECT_ACTION_UPDATE_STATE(
353 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 357 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
358 state.DidSwapBuffers();
359 state.DidSwapBuffersComplete();
354 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 360 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
355 361
356 EXPECT_FALSE(state.RedrawPending()); 362 EXPECT_FALSE(state.RedrawPending());
357 EXPECT_FALSE(state.CommitPending()); 363 EXPECT_FALSE(state.CommitPending());
358 364
359 // Failing the draw makes us require a commit. 365 // Failing the draw makes us require a commit.
360 state.DidDrawIfPossibleCompleted( 366 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
361 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
362 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 367 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
363 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 368 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
364 EXPECT_ACTION_UPDATE_STATE( 369 EXPECT_ACTION_UPDATE_STATE(
365 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 370 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
366 EXPECT_TRUE(state.RedrawPending()); 371 EXPECT_TRUE(state.RedrawPending());
367 EXPECT_TRUE(state.CommitPending()); 372 EXPECT_TRUE(state.CommitPending());
368 } 373 }
369 374
370 TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) { 375 TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) {
371 SchedulerSettings default_scheduler_settings; 376 SchedulerSettings default_scheduler_settings;
372 StateMachine state(default_scheduler_settings); 377 StateMachine state(default_scheduler_settings);
373 state.SetCanStart(); 378 state.SetCanStart();
374 state.UpdateState(state.NextAction()); 379 state.UpdateState(state.NextAction());
375 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 380 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
376 state.SetVisible(true); 381 state.SetVisible(true);
377 state.SetCanDraw(true); 382 state.SetCanDraw(true);
378 state.SetNeedsRedraw(true); 383 state.SetNeedsRedraw(true);
379 EXPECT_TRUE(state.RedrawPending()); 384 EXPECT_TRUE(state.RedrawPending());
380 EXPECT_TRUE(state.BeginFrameNeeded()); 385 EXPECT_TRUE(state.BeginFrameNeeded());
381 386
382 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 387 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
383 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 388 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
384 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 389 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
385 state.OnBeginImplFrameDeadline(); 390 state.OnBeginImplFrameDeadline();
386 EXPECT_ACTION_UPDATE_STATE( 391 EXPECT_ACTION_UPDATE_STATE(
387 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 392 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
393 state.DidSwapBuffers();
394 state.DidSwapBuffersComplete();
388 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 395 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
389 EXPECT_FALSE(state.RedrawPending()); 396 EXPECT_FALSE(state.RedrawPending());
390 EXPECT_FALSE(state.CommitPending()); 397 EXPECT_FALSE(state.CommitPending());
391 398
392 // Missing high res content requires a commit (but not a redraw) 399 // Missing high res content requires a commit (but not a redraw)
393 state.DidDrawIfPossibleCompleted( 400 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT);
394 DrawSwapReadbackResult::DRAW_ABORTED_MISSING_HIGH_RES_CONTENT);
395 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 401 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
396 EXPECT_ACTION_UPDATE_STATE( 402 EXPECT_ACTION_UPDATE_STATE(
397 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 403 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
398 EXPECT_FALSE(state.RedrawPending()); 404 EXPECT_FALSE(state.RedrawPending());
399 EXPECT_TRUE(state.CommitPending()); 405 EXPECT_TRUE(state.CommitPending());
400 } 406 }
401 407
402 TEST(SchedulerStateMachineTest, 408 TEST(SchedulerStateMachineTest,
403 TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) { 409 TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) {
404 SchedulerSettings default_scheduler_settings; 410 SchedulerSettings default_scheduler_settings;
405 StateMachine state(default_scheduler_settings); 411 StateMachine state(default_scheduler_settings);
406 state.SetCanStart(); 412 state.SetCanStart();
407 state.UpdateState(state.NextAction()); 413 state.UpdateState(state.NextAction());
408 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 414 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
409 415
410 state.SetVisible(true); 416 state.SetVisible(true);
411 state.SetCanDraw(true); 417 state.SetCanDraw(true);
412 state.SetNeedsRedraw(true); 418 state.SetNeedsRedraw(true);
413 EXPECT_TRUE(state.RedrawPending()); 419 EXPECT_TRUE(state.RedrawPending());
414 EXPECT_TRUE(state.BeginFrameNeeded()); 420 EXPECT_TRUE(state.BeginFrameNeeded());
415 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 421 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
416 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 422 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
417 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 423 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
418 state.OnBeginImplFrameDeadline(); 424 state.OnBeginImplFrameDeadline();
419 425
420 // We're drawing now. 426 // We're drawing now.
421 EXPECT_ACTION_UPDATE_STATE( 427 EXPECT_ACTION_UPDATE_STATE(
422 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 428 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
429 state.DidSwapBuffers();
430 state.DidSwapBuffersComplete();
423 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 431 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
424 EXPECT_FALSE(state.RedrawPending()); 432 EXPECT_FALSE(state.RedrawPending());
425 EXPECT_FALSE(state.CommitPending()); 433 EXPECT_FALSE(state.CommitPending());
426 434
427 // While still in the same BeginMainFrame callback on the main thread, 435 // While still in the same BeginMainFrame callback on the main thread,
428 // set needs redraw again. This should not redraw. 436 // set needs redraw again. This should not redraw.
429 state.SetNeedsRedraw(true); 437 state.SetNeedsRedraw(true);
430 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 438 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
431 439
432 // Failing the draw for animation checkerboards makes us require a commit. 440 // Failing the draw for animation checkerboards makes us require a commit.
433 state.DidDrawIfPossibleCompleted( 441 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
434 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
435 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 442 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
436 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 443 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
437 EXPECT_ACTION_UPDATE_STATE( 444 EXPECT_ACTION_UPDATE_STATE(
438 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 445 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
439 EXPECT_TRUE(state.RedrawPending()); 446 EXPECT_TRUE(state.RedrawPending());
440 } 447 }
441 448
442 void TestFailedDrawsEventuallyForceDrawAfterNextCommit( 449 void TestFailedDrawsEventuallyForceDrawAfterNextCommit(
443 bool main_frame_before_draw_enabled) { 450 bool main_frame_before_draw_enabled) {
444 SchedulerSettings scheduler_settings; 451 SchedulerSettings scheduler_settings;
(...skipping 17 matching lines...) Expand all
462 EXPECT_TRUE(state.CommitPending()); 469 EXPECT_TRUE(state.CommitPending());
463 470
464 // Then initiate a draw. 471 // Then initiate a draw.
465 state.SetNeedsRedraw(true); 472 state.SetNeedsRedraw(true);
466 state.OnBeginImplFrameDeadline(); 473 state.OnBeginImplFrameDeadline();
467 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 474 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
468 EXPECT_ACTION_UPDATE_STATE( 475 EXPECT_ACTION_UPDATE_STATE(
469 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 476 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
470 477
471 // Fail the draw. 478 // Fail the draw.
472 state.DidDrawIfPossibleCompleted( 479 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
473 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
474 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 480 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
475 EXPECT_TRUE(state.BeginFrameNeeded()); 481 EXPECT_TRUE(state.BeginFrameNeeded());
476 EXPECT_TRUE(state.RedrawPending()); 482 EXPECT_TRUE(state.RedrawPending());
477 // But the commit is ongoing. 483 // But the commit is ongoing.
478 EXPECT_TRUE(state.CommitPending()); 484 EXPECT_TRUE(state.CommitPending());
479 485
480 // Finish the commit. Note, we should not yet be forcing a draw, but should 486 // Finish the commit. Note, we should not yet be forcing a draw, but should
481 // continue the commit as usual. 487 // continue the commit as usual.
482 state.NotifyBeginMainFrameStarted(); 488 state.NotifyBeginMainFrameStarted();
483 state.NotifyReadyToCommit(); 489 state.NotifyReadyToCommit();
484 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 490 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
485 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 491 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
486 EXPECT_TRUE(state.RedrawPending()); 492 EXPECT_TRUE(state.RedrawPending());
487 493
488 // The redraw should be forced at the end of the next BeginImplFrame. 494 // The redraw should be forced at the end of the next BeginImplFrame.
489 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 495 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
490 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 496 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
491 if (main_frame_before_draw_enabled) { 497 if (main_frame_before_draw_enabled) {
492 EXPECT_ACTION_UPDATE_STATE( 498 EXPECT_ACTION_UPDATE_STATE(
493 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 499 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
494 } 500 }
495 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 501 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
496 state.OnBeginImplFrameDeadline(); 502 state.OnBeginImplFrameDeadline();
497 EXPECT_ACTION_UPDATE_STATE( 503 EXPECT_ACTION_UPDATE_STATE(
498 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED); 504 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED);
505 state.DidSwapBuffers();
506 state.DidSwapBuffersComplete();
499 } 507 }
500 508
501 TEST(SchedulerStateMachineTest, 509 TEST(SchedulerStateMachineTest,
502 TestFailedDrawsEventuallyForceDrawAfterNextCommit) { 510 TestFailedDrawsEventuallyForceDrawAfterNextCommit) {
503 bool main_frame_before_draw_enabled = false; 511 bool main_frame_before_draw_enabled = false;
504 TestFailedDrawsEventuallyForceDrawAfterNextCommit( 512 TestFailedDrawsEventuallyForceDrawAfterNextCommit(
505 main_frame_before_draw_enabled); 513 main_frame_before_draw_enabled);
506 } 514 }
507 515
508 TEST(SchedulerStateMachineTest, 516 TEST(SchedulerStateMachineTest,
(...skipping 27 matching lines...) Expand all
536 544
537 // Then initiate a draw. 545 // Then initiate a draw.
538 state.SetNeedsRedraw(true); 546 state.SetNeedsRedraw(true);
539 state.OnBeginImplFrameDeadline(); 547 state.OnBeginImplFrameDeadline();
540 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 548 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
541 EXPECT_ACTION_UPDATE_STATE( 549 EXPECT_ACTION_UPDATE_STATE(
542 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 550 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
543 551
544 // Fail the draw enough times to force a redraw, 552 // Fail the draw enough times to force a redraw,
545 // then once more for good measure. 553 // then once more for good measure.
546 for (int i = 0; i < draw_limit + 1; ++i) { 554 for (int i = 0; i < draw_limit + 1; ++i)
547 state.DidDrawIfPossibleCompleted( 555 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
548 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
549 }
550 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 556 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
551 EXPECT_TRUE(state.BeginFrameNeeded()); 557 EXPECT_TRUE(state.BeginFrameNeeded());
552 EXPECT_TRUE(state.RedrawPending()); 558 EXPECT_TRUE(state.RedrawPending());
553 // But the commit is ongoing. 559 // But the commit is ongoing.
554 EXPECT_TRUE(state.CommitPending()); 560 EXPECT_TRUE(state.CommitPending());
555 EXPECT_TRUE(state.ForcedRedrawState() == 561 EXPECT_TRUE(state.ForcedRedrawState() ==
556 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT); 562 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT);
557 563
558 state.NotifyBeginMainFrameStarted(); 564 state.NotifyBeginMainFrameStarted();
559 state.NotifyReadyToCommit(); 565 state.NotifyReadyToCommit();
560 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 566 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
561 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 567 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
562 EXPECT_TRUE(state.RedrawPending()); 568 EXPECT_TRUE(state.RedrawPending());
563 EXPECT_FALSE(state.CommitPending()); 569 EXPECT_FALSE(state.CommitPending());
564 570
565 // Now force redraw should be in waiting for activation 571 // Now force redraw should be in waiting for activation
566 EXPECT_TRUE(state.ForcedRedrawState() == 572 EXPECT_TRUE(state.ForcedRedrawState() ==
567 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 573 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
568 574
569 // After failing additional draws, we should still be in a forced 575 // After failing additional draws, we should still be in a forced
570 // redraw, but not back in WAITING_FOR_COMMIT. 576 // redraw, but not back in WAITING_FOR_COMMIT.
571 for (int i = 0; i < draw_limit + 1; ++i) { 577 for (int i = 0; i < draw_limit + 1; ++i)
572 state.DidDrawIfPossibleCompleted( 578 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
573 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
574 }
575 EXPECT_TRUE(state.RedrawPending()); 579 EXPECT_TRUE(state.RedrawPending());
576 EXPECT_TRUE(state.ForcedRedrawState() == 580 EXPECT_TRUE(state.ForcedRedrawState() ==
577 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 581 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
578 } 582 }
579 583
580 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) { 584 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) {
581 SchedulerSettings default_scheduler_settings; 585 SchedulerSettings default_scheduler_settings;
582 StateMachine state(default_scheduler_settings); 586 StateMachine state(default_scheduler_settings);
583 state.SetCanStart(); 587 state.SetCanStart();
584 state.UpdateState(state.NextAction()); 588 state.UpdateState(state.NextAction());
585 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 589 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
586 state.SetVisible(true); 590 state.SetVisible(true);
587 state.SetCanDraw(true); 591 state.SetCanDraw(true);
588 592
589 // Start a draw. 593 // Start a draw.
590 state.SetNeedsRedraw(true); 594 state.SetNeedsRedraw(true);
591 EXPECT_TRUE(state.BeginFrameNeeded()); 595 EXPECT_TRUE(state.BeginFrameNeeded());
592 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 596 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
593 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 597 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
594 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 598 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
595 state.OnBeginImplFrameDeadline(); 599 state.OnBeginImplFrameDeadline();
596 EXPECT_TRUE(state.RedrawPending()); 600 EXPECT_TRUE(state.RedrawPending());
597 EXPECT_ACTION_UPDATE_STATE( 601 EXPECT_ACTION_UPDATE_STATE(
598 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 602 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
599 603
600 // Failing the draw for animation checkerboards makes us require a commit. 604 // Failing the draw for animation checkerboards makes us require a commit.
601 state.DidDrawIfPossibleCompleted( 605 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
602 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
603 EXPECT_ACTION_UPDATE_STATE( 606 EXPECT_ACTION_UPDATE_STATE(
604 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 607 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
605 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 608 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
606 EXPECT_TRUE(state.RedrawPending()); 609 EXPECT_TRUE(state.RedrawPending());
607 610
608 // We should not be trying to draw again now, but we have a commit pending. 611 // We should not be trying to draw again now, but we have a commit pending.
609 EXPECT_TRUE(state.BeginFrameNeeded()); 612 EXPECT_TRUE(state.BeginFrameNeeded());
610 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 613 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
611 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 614 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
612 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 615 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
613 616
614 // We should try to draw again at the end of the next BeginImplFrame on 617 // We should try to draw again at the end of the next BeginImplFrame on
615 // the impl thread. 618 // the impl thread.
616 state.OnBeginImplFrameDeadline(); 619 state.OnBeginImplFrameDeadline();
617 EXPECT_ACTION_UPDATE_STATE( 620 EXPECT_ACTION_UPDATE_STATE(
618 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 621 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
622 state.DidSwapBuffers();
623 state.DidSwapBuffersComplete();
619 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 624 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
620 } 625 }
621 626
622 TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) { 627 TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) {
623 SchedulerSettings default_scheduler_settings; 628 SchedulerSettings default_scheduler_settings;
624 StateMachine state(default_scheduler_settings); 629 StateMachine state(default_scheduler_settings);
625 state.SetCanStart(); 630 state.SetCanStart();
626 state.UpdateState(state.NextAction()); 631 state.UpdateState(state.NextAction());
627 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 632 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
628 state.SetVisible(true); 633 state.SetVisible(true);
629 state.SetCanDraw(true); 634 state.SetCanDraw(true);
630 state.SetNeedsRedraw(true); 635 state.SetNeedsRedraw(true);
631 636
632 // Draw the first frame. 637 // Draw the first frame.
633 EXPECT_TRUE(state.BeginFrameNeeded()); 638 EXPECT_TRUE(state.BeginFrameNeeded());
634 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 639 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
635 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 640 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
636 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 641 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
637 642
638 state.OnBeginImplFrameDeadline(); 643 state.OnBeginImplFrameDeadline();
639 EXPECT_ACTION_UPDATE_STATE( 644 EXPECT_ACTION_UPDATE_STATE(
640 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 645 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
641 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 646 state.DidSwapBuffers();
647 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
648 state.DidSwapBuffersComplete();
642 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 649 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
643 650
644 // Before the next BeginImplFrame, set needs redraw again. 651 // Before the next BeginImplFrame, set needs redraw again.
645 // This should not redraw until the next BeginImplFrame. 652 // This should not redraw until the next BeginImplFrame.
646 state.SetNeedsRedraw(true); 653 state.SetNeedsRedraw(true);
647 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 654 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
648 655
649 // Move to another frame. This should now draw. 656 // Move to another frame. This should now draw.
650 EXPECT_TRUE(state.BeginFrameNeeded()); 657 EXPECT_TRUE(state.BeginFrameNeeded());
651 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 658 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
652 659
653 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 660 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
654 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 661 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
655 662
656 state.OnBeginImplFrameDeadline(); 663 state.OnBeginImplFrameDeadline();
657 EXPECT_ACTION_UPDATE_STATE( 664 EXPECT_ACTION_UPDATE_STATE(
658 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 665 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
659 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 666 state.DidSwapBuffers();
667 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
668 state.DidSwapBuffersComplete();
660 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 669 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
661 670
662 // We just swapped, so we should proactively request another BeginImplFrame. 671 // We just swapped, so we should proactively request another BeginImplFrame.
663 EXPECT_TRUE(state.BeginFrameNeeded()); 672 EXPECT_TRUE(state.BeginFrameNeeded());
664 } 673 }
665 674
666 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { 675 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) {
667 SchedulerSettings default_scheduler_settings; 676 SchedulerSettings default_scheduler_settings;
668 677
669 // When not in BeginImplFrame deadline, or in BeginImplFrame deadline 678 // When not in BeginImplFrame deadline, or in BeginImplFrame deadline
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 EXPECT_ACTION_UPDATE_STATE( 905 EXPECT_ACTION_UPDATE_STATE(
897 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 906 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
898 } 907 }
899 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 908 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
900 909
901 state.OnBeginImplFrameDeadline(); 910 state.OnBeginImplFrameDeadline();
902 911
903 EXPECT_TRUE(state.active_tree_needs_first_draw()); 912 EXPECT_TRUE(state.active_tree_needs_first_draw());
904 EXPECT_ACTION_UPDATE_STATE( 913 EXPECT_ACTION_UPDATE_STATE(
905 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 914 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
906 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 915 state.DidSwapBuffers();
916 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
917 state.DidSwapBuffersComplete();
907 if (!main_frame_before_draw_enabled) { 918 if (!main_frame_before_draw_enabled) {
908 EXPECT_ACTION_UPDATE_STATE( 919 EXPECT_ACTION_UPDATE_STATE(
909 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 920 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
910 } 921 }
911 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 922 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
912 } 923 }
913 924
914 TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) { 925 TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) {
915 bool main_frame_before_draw_enabled = false; 926 bool main_frame_before_draw_enabled = false;
916 TestSetNeedsCommitIsNotLost(main_frame_before_draw_enabled); 927 TestSetNeedsCommitIsNotLost(main_frame_before_draw_enabled);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 EXPECT_TRUE(state.needs_redraw()); 965 EXPECT_TRUE(state.needs_redraw());
955 966
956 // Expect to do nothing until BeginImplFrame deadline 967 // Expect to do nothing until BeginImplFrame deadline
957 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 968 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
958 969
959 // At BeginImplFrame deadline, draw. 970 // At BeginImplFrame deadline, draw.
960 state.OnBeginImplFrameDeadline(); 971 state.OnBeginImplFrameDeadline();
961 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 972 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
962 EXPECT_ACTION_UPDATE_STATE( 973 EXPECT_ACTION_UPDATE_STATE(
963 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 974 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
964 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 975 state.DidSwapBuffers();
976 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
977 state.DidSwapBuffersComplete();
965 978
966 // Should be synchronized, no draw needed, no action needed. 979 // Should be synchronized, no draw needed, no action needed.
967 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 980 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
968 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 981 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
969 EXPECT_FALSE(state.needs_redraw()); 982 EXPECT_FALSE(state.needs_redraw());
970 } 983 }
971 984
972 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) { 985 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) {
973 SchedulerSettings default_scheduler_settings; 986 SchedulerSettings default_scheduler_settings;
974 StateMachine state(default_scheduler_settings); 987 StateMachine state(default_scheduler_settings);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 EXPECT_TRUE(state.needs_redraw()); 1019 EXPECT_TRUE(state.needs_redraw());
1007 1020
1008 // Expect to do nothing until BeginImplFrame deadline. 1021 // Expect to do nothing until BeginImplFrame deadline.
1009 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1022 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1010 1023
1011 // At BeginImplFrame deadline, draw. 1024 // At BeginImplFrame deadline, draw.
1012 state.OnBeginImplFrameDeadline(); 1025 state.OnBeginImplFrameDeadline();
1013 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1026 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1014 EXPECT_ACTION_UPDATE_STATE( 1027 EXPECT_ACTION_UPDATE_STATE(
1015 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1028 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1016 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1029 state.DidSwapBuffers();
1030 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1031 state.DidSwapBuffersComplete();
1017 1032
1018 // Should be synchronized, no draw needed, no action needed. 1033 // Should be synchronized, no draw needed, no action needed.
1019 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1034 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1020 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1035 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1021 EXPECT_FALSE(state.needs_redraw()); 1036 EXPECT_FALSE(state.needs_redraw());
1022 1037
1023 // Next BeginImplFrame should initiate second commit. 1038 // Next BeginImplFrame should initiate second commit.
1024 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1039 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1025 EXPECT_ACTION_UPDATE_STATE( 1040 EXPECT_ACTION_UPDATE_STATE(
1026 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1041 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 EXPECT_FALSE(state.NeedsCommit()); 1132 EXPECT_FALSE(state.NeedsCommit());
1118 1133
1119 // Start a new frame; draw because this is the first frame since output 1134 // Start a new frame; draw because this is the first frame since output
1120 // surface init'd. 1135 // surface init'd.
1121 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1136 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1122 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1137 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1123 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1138 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1124 state.OnBeginImplFrameDeadline(); 1139 state.OnBeginImplFrameDeadline();
1125 EXPECT_ACTION_UPDATE_STATE( 1140 EXPECT_ACTION_UPDATE_STATE(
1126 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1141 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1142 state.DidSwapBuffers();
1143 state.DidSwapBuffersComplete();
1127 1144
1128 // Verify another commit doesn't start on another frame either. 1145 // Verify another commit doesn't start on another frame either.
1129 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1146 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1130 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1147 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1131 EXPECT_FALSE(state.NeedsCommit()); 1148 EXPECT_FALSE(state.NeedsCommit());
1132 1149
1133 // Verify another commit can start if requested, though. 1150 // Verify another commit can start if requested, though.
1134 state.SetNeedsCommit(); 1151 state.SetNeedsCommit();
1135 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1152 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1136 EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME, 1153 EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME,
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 // Set damage and expect a draw. 1290 // Set damage and expect a draw.
1274 state.SetNeedsRedraw(true); 1291 state.SetNeedsRedraw(true);
1275 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1292 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1276 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1293 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1277 EXPECT_ACTION_UPDATE_STATE( 1294 EXPECT_ACTION_UPDATE_STATE(
1278 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1295 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1279 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1296 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1280 state.OnBeginImplFrameDeadline(); 1297 state.OnBeginImplFrameDeadline();
1281 EXPECT_ACTION_UPDATE_STATE( 1298 EXPECT_ACTION_UPDATE_STATE(
1282 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1299 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1300 state.DidSwapBuffers();
1301 state.DidSwapBuffersComplete();
1283 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1302 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1284 1303
1285 // Cause a lost context while the BeginMainFrame is in flight. 1304 // Cause a lost context while the BeginMainFrame is in flight.
1286 state.DidLoseOutputSurface(); 1305 state.DidLoseOutputSurface();
1287 1306
1288 // Ask for another draw. Expect nothing happens. 1307 // Ask for another draw. Expect nothing happens.
1289 state.SetNeedsRedraw(true); 1308 state.SetNeedsRedraw(true);
1290 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1309 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1291 1310
1292 // Finish the frame, and commit. 1311 // Finish the frame, and commit.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 // Set damage and expect a draw. 1357 // Set damage and expect a draw.
1339 state.SetNeedsRedraw(true); 1358 state.SetNeedsRedraw(true);
1340 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1359 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1341 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1360 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1342 EXPECT_ACTION_UPDATE_STATE( 1361 EXPECT_ACTION_UPDATE_STATE(
1343 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1362 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1344 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1363 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1345 state.OnBeginImplFrameDeadline(); 1364 state.OnBeginImplFrameDeadline();
1346 EXPECT_ACTION_UPDATE_STATE( 1365 EXPECT_ACTION_UPDATE_STATE(
1347 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1366 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1367 state.DidSwapBuffers();
1368 state.DidSwapBuffersComplete();
1348 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1369 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1349 1370
1350 // Cause a lost context while the BeginMainFrame is in flight. 1371 // Cause a lost context while the BeginMainFrame is in flight.
1351 state.DidLoseOutputSurface(); 1372 state.DidLoseOutputSurface();
1352 1373
1353 // Ask for another draw and also set needs commit. Expect nothing happens. 1374 // Ask for another draw and also set needs commit. Expect nothing happens.
1354 state.SetNeedsRedraw(true); 1375 state.SetNeedsRedraw(true);
1355 state.SetNeedsCommit(); 1376 state.SetNeedsCommit();
1356 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1377 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1357 1378
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1417 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1397 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1418 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1398 state.NotifyBeginMainFrameStarted(); 1419 state.NotifyBeginMainFrameStarted();
1399 state.NotifyReadyToCommit(); 1420 state.NotifyReadyToCommit();
1400 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1421 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1401 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1422 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1402 state.OnBeginImplFrameDeadline(); 1423 state.OnBeginImplFrameDeadline();
1403 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1424 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1404 EXPECT_ACTION_UPDATE_STATE( 1425 EXPECT_ACTION_UPDATE_STATE(
1405 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1426 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1427 state.DidSwapBuffers();
1428 state.DidSwapBuffersComplete();
1406 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1429 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1407 } 1430 }
1408 1431
1409 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) { 1432 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) {
1410 SchedulerSettings default_scheduler_settings; 1433 SchedulerSettings default_scheduler_settings;
1411 StateMachine state(default_scheduler_settings); 1434 StateMachine state(default_scheduler_settings);
1412 state.SetCanStart(); 1435 state.SetCanStart();
1413 state.UpdateState(state.NextAction()); 1436 state.UpdateState(state.NextAction());
1414 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1437 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1415 state.SetVisible(true); 1438 state.SetVisible(true);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1668 } 1691 }
1669 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1692 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1670 1693
1671 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1694 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1672 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1695 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1673 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1696 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1674 // Perform the draw & swap of replacement commit. 1697 // Perform the draw & swap of replacement commit.
1675 state.OnBeginImplFrameDeadline(); 1698 state.OnBeginImplFrameDeadline();
1676 EXPECT_ACTION_UPDATE_STATE( 1699 EXPECT_ACTION_UPDATE_STATE(
1677 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1700 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1701 state.DidSwapBuffers();
1702 state.DidSwapBuffersComplete();
1678 if (!settings.main_frame_before_draw_enabled) { 1703 if (!settings.main_frame_before_draw_enabled) {
1679 // New replacement commit is scheduled. 1704 // New replacement commit is scheduled.
1680 EXPECT_ACTION_UPDATE_STATE( 1705 EXPECT_ACTION_UPDATE_STATE(
1681 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1706 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1682 // Forced commit is started. 1707 // Forced commit is started.
1683 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_WAITING_FOR_COMMIT, 1708 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_WAITING_FOR_COMMIT,
1684 state.readback_state()); 1709 state.readback_state());
1685 } 1710 }
1686 EXPECT_ACTION_UPDATE_STATE( 1711 EXPECT_ACTION_UPDATE_STATE(
1687 SchedulerStateMachine::ACTION_NONE); 1712 SchedulerStateMachine::ACTION_NONE);
(...skipping 19 matching lines...) Expand all
1707 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1732 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1708 state.NotifyReadyToActivate(); 1733 state.NotifyReadyToActivate();
1709 EXPECT_ACTION_UPDATE_STATE( 1734 EXPECT_ACTION_UPDATE_STATE(
1710 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 1735 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
1711 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1736 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1712 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1737 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1713 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1738 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1714 state.OnBeginImplFrameDeadline(); 1739 state.OnBeginImplFrameDeadline();
1715 EXPECT_ACTION_UPDATE_STATE( 1740 EXPECT_ACTION_UPDATE_STATE(
1716 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1741 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1742 state.DidSwapBuffers();
1743 state.DidSwapBuffersComplete();
1717 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state()); 1744 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state());
1718 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1745 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1719 } 1746 }
1720 1747
1721 // Explicitly test when main_frame_before_draw_enabled = true. 1748 // Explicitly test when main_frame_before_draw_enabled = true.
1722 TEST(SchedulerStateMachineTest, 1749 TEST(SchedulerStateMachineTest,
1723 ForceCommitWhenReplacementActivationInProgressAndMainFrameEnabled) { 1750 ForceCommitWhenReplacementActivationInProgressAndMainFrameEnabled) {
1724 bool main_frame_before_draw_enabled = true; 1751 bool main_frame_before_draw_enabled = true;
1725 TestForceCommitWhenReplacementActivationInProgress( 1752 TestForceCommitWhenReplacementActivationInProgress(
1726 main_frame_before_draw_enabled); 1753 main_frame_before_draw_enabled);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1779 EXPECT_FALSE(state.NeedsCommit()); 1806 EXPECT_FALSE(state.NeedsCommit());
1780 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1807 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1781 1808
1782 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1809 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1783 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1810 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1784 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1811 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1785 // Perform the draw & swap of replacement commit. 1812 // Perform the draw & swap of replacement commit.
1786 state.OnBeginImplFrameDeadline(); 1813 state.OnBeginImplFrameDeadline();
1787 EXPECT_ACTION_UPDATE_STATE( 1814 EXPECT_ACTION_UPDATE_STATE(
1788 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1815 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1816 state.DidSwapBuffers();
1817 state.DidSwapBuffersComplete();
1789 EXPECT_ACTION_UPDATE_STATE( 1818 EXPECT_ACTION_UPDATE_STATE(
1790 SchedulerStateMachine::ACTION_NONE); 1819 SchedulerStateMachine::ACTION_NONE);
1791 1820
1792 // forced commit is started. 1821 // forced commit is started.
1793 state.NotifyBeginMainFrameStarted(); 1822 state.NotifyBeginMainFrameStarted();
1794 state.NotifyReadyToCommit(); 1823 state.NotifyReadyToCommit();
1795 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1824 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1796 } 1825 }
1797 1826
1798 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) { 1827 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1848 state.NotifyBeginMainFrameStarted(); 1877 state.NotifyBeginMainFrameStarted();
1849 state.NotifyReadyToCommit(); 1878 state.NotifyReadyToCommit();
1850 1879
1851 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1880 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1852 state.CommitState()); 1881 state.CommitState());
1853 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1882 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1854 1883
1855 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1884 EXPECT_TRUE(state.active_tree_needs_first_draw());
1856 1885
1857 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1886 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1858 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1887 state.DidSwapBuffers();
1888 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1889 state.DidSwapBuffersComplete();
1859 1890
1860 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1891 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1861 1892
1862 // Should be waiting for the normal BeginMainFrame. 1893 // Should be waiting for the normal BeginMainFrame.
1863 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1894 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1864 state.CommitState()); 1895 state.CommitState());
1865 } 1896 }
1866 1897
1867 TEST(SchedulerStateMachineTest, TestImmediateFinishCommitDuringCommit) { 1898 TEST(SchedulerStateMachineTest, TestImmediateFinishCommitDuringCommit) {
1868 SchedulerSettings scheduler_settings; 1899 SchedulerSettings scheduler_settings;
(...skipping 15 matching lines...) Expand all
1884 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1915 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1885 state.NotifyBeginMainFrameStarted(); 1916 state.NotifyBeginMainFrameStarted();
1886 state.NotifyReadyToCommit(); 1917 state.NotifyReadyToCommit();
1887 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1918 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1888 state.CommitState()); 1919 state.CommitState());
1889 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1920 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1890 1921
1891 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1922 EXPECT_TRUE(state.active_tree_needs_first_draw());
1892 1923
1893 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1924 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1894 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1925 state.DidSwapBuffers();
1926 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1927 state.DidSwapBuffersComplete();
1895 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1928 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1896 1929
1897 // Should be waiting for the normal BeginMainFrame. 1930 // Should be waiting for the normal BeginMainFrame.
1898 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1931 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1899 state.CommitState()) 1932 state.CommitState())
1900 << *state.AsValue(); 1933 << *state.AsValue();
1901 } 1934 }
1902 1935
1903 TEST(SchedulerStateMachineTest, ImmediateBeginMainFrameAbortedWhileInvisible) { 1936 TEST(SchedulerStateMachineTest, ImmediateBeginMainFrameAbortedWhileInvisible) {
1904 SchedulerSettings scheduler_settings; 1937 SchedulerSettings scheduler_settings;
(...skipping 13 matching lines...) Expand all
1918 state.NotifyBeginMainFrameStarted(); 1951 state.NotifyBeginMainFrameStarted();
1919 state.NotifyReadyToCommit(); 1952 state.NotifyReadyToCommit();
1920 1953
1921 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1954 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1922 state.CommitState()); 1955 state.CommitState());
1923 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1956 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1924 1957
1925 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1958 EXPECT_TRUE(state.active_tree_needs_first_draw());
1926 1959
1927 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1960 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1928 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1961 state.DidSwapBuffers();
1962 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1963 state.DidSwapBuffersComplete();
1929 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1964 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1930 1965
1931 // Should be waiting for BeginMainFrame. 1966 // Should be waiting for BeginMainFrame.
1932 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1967 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1933 state.CommitState()) 1968 state.CommitState())
1934 << *state.AsValue(); 1969 << *state.AsValue();
1935 1970
1936 // Become invisible and abort BeginMainFrame. 1971 // Become invisible and abort BeginMainFrame.
1937 state.SetVisible(false); 1972 state.SetVisible(false);
1938 state.BeginMainFrameAborted(false); 1973 state.BeginMainFrameAborted(false);
(...skipping 20 matching lines...) Expand all
1959 state.NotifyBeginMainFrameStarted(); 1994 state.NotifyBeginMainFrameStarted();
1960 state.NotifyReadyToCommit(); 1995 state.NotifyReadyToCommit();
1961 1996
1962 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1997 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1963 state.CommitState()); 1998 state.CommitState());
1964 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1999 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1965 2000
1966 EXPECT_TRUE(state.active_tree_needs_first_draw()); 2001 EXPECT_TRUE(state.active_tree_needs_first_draw());
1967 2002
1968 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 2003 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1969 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 2004 state.DidSwapBuffers();
2005 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
2006 state.DidSwapBuffersComplete();
1970 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 2007 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1971 } 2008 }
1972 2009
1973 TEST(SchedulerStateMachineTest, ReportIfNotDrawing) { 2010 TEST(SchedulerStateMachineTest, ReportIfNotDrawing) {
1974 SchedulerSettings default_scheduler_settings; 2011 SchedulerSettings default_scheduler_settings;
1975 StateMachine state(default_scheduler_settings); 2012 StateMachine state(default_scheduler_settings);
1976 state.SetCanStart(); 2013 state.SetCanStart();
1977 state.UpdateState(state.NextAction()); 2014 state.UpdateState(state.NextAction());
1978 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 2015 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1979 2016
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 state.SetNeedsAnimate(); 2169 state.SetNeedsAnimate();
2133 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 2170 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
2134 2171
2135 state.OnBeginImplFrameDeadline(); 2172 state.OnBeginImplFrameDeadline();
2136 EXPECT_ACTION_UPDATE_STATE( 2173 EXPECT_ACTION_UPDATE_STATE(
2137 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 2174 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
2138 } 2175 }
2139 2176
2140 } // namespace 2177 } // namespace
2141 } // namespace cc 2178 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698