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

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: Use did_swap_request 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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 233 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
234 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 234 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
235 EXPECT_EQ(state.CommitState(), 235 EXPECT_EQ(state.CommitState(),
236 SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW); 236 SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW);
237 237
238 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 238 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
239 state.OnBeginImplFrameDeadline(); 239 state.OnBeginImplFrameDeadline();
240 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 240 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
241 EXPECT_ACTION_UPDATE_STATE( 241 EXPECT_ACTION_UPDATE_STATE(
242 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 242 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
243 state.DidSwapBuffers();
244 state.DidSwapBuffersComplete();
243 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE); 245 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE);
244 EXPECT_ACTION_UPDATE_STATE( 246 EXPECT_ACTION_UPDATE_STATE(
245 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 247 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
246 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 248 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
247 EXPECT_EQ(state.CommitState(), 249 EXPECT_EQ(state.CommitState(),
248 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT); 250 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT);
249 251
250 state.NotifyBeginMainFrameStarted(); 252 state.NotifyBeginMainFrameStarted();
251 state.NotifyReadyToCommit(); 253 state.NotifyReadyToCommit();
252 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 254 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 state.NotifyReadyToActivate(); 307 state.NotifyReadyToActivate();
306 EXPECT_ACTION_UPDATE_STATE( 308 EXPECT_ACTION_UPDATE_STATE(
307 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 309 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
308 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 310 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
309 311
310 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly()); 312 EXPECT_TRUE(state.ShouldTriggerBeginImplFrameDeadlineEarly());
311 state.OnBeginImplFrameDeadline(); 313 state.OnBeginImplFrameDeadline();
312 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 314 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
313 EXPECT_ACTION_UPDATE_STATE( 315 EXPECT_ACTION_UPDATE_STATE(
314 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 316 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
317 state.DidSwapBuffers();
318 state.DidSwapBuffersComplete();
315 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 319 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
316 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 320 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
317 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE); 321 EXPECT_EQ(state.CommitState(), SchedulerStateMachine::COMMIT_STATE_IDLE);
318 } 322 }
319 323
320 TEST(SchedulerStateMachineTest, 324 TEST(SchedulerStateMachineTest,
321 TestFailedDrawForAnimationCheckerboardSetsNeedsCommitAndDoesNotDrawAgain) { 325 TestFailedDrawForAnimationCheckerboardSetsNeedsCommitAndDoesNotDrawAgain) {
322 SchedulerSettings default_scheduler_settings; 326 SchedulerSettings default_scheduler_settings;
323 StateMachine state(default_scheduler_settings); 327 StateMachine state(default_scheduler_settings);
324 state.SetCanStart(); 328 state.SetCanStart();
325 state.UpdateState(state.NextAction()); 329 state.UpdateState(state.NextAction());
326 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 330 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
327 state.SetVisible(true); 331 state.SetVisible(true);
328 state.SetCanDraw(true); 332 state.SetCanDraw(true);
329 state.SetNeedsRedraw(true); 333 state.SetNeedsRedraw(true);
330 EXPECT_TRUE(state.RedrawPending()); 334 EXPECT_TRUE(state.RedrawPending());
331 EXPECT_TRUE(state.BeginFrameNeeded()); 335 EXPECT_TRUE(state.BeginFrameNeeded());
332 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 336 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
333 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 337 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
334 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 338 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
335 state.OnBeginImplFrameDeadline(); 339 state.OnBeginImplFrameDeadline();
336 340
337 // We're drawing now. 341 // We're drawing now.
338 EXPECT_ACTION_UPDATE_STATE( 342 EXPECT_ACTION_UPDATE_STATE(
339 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 343 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
344 state.DidSwapBuffers();
345 state.DidSwapBuffersComplete();
340 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 346 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
341 347
342 EXPECT_FALSE(state.RedrawPending()); 348 EXPECT_FALSE(state.RedrawPending());
343 EXPECT_FALSE(state.CommitPending()); 349 EXPECT_FALSE(state.CommitPending());
344 350
345 // Failing the draw makes us require a commit. 351 // Failing the draw makes us require a commit.
346 state.DidDrawIfPossibleCompleted( 352 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
347 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
348 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 353 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
349 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 354 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
350 EXPECT_ACTION_UPDATE_STATE( 355 EXPECT_ACTION_UPDATE_STATE(
351 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 356 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
352 EXPECT_TRUE(state.RedrawPending()); 357 EXPECT_TRUE(state.RedrawPending());
353 EXPECT_TRUE(state.CommitPending()); 358 EXPECT_TRUE(state.CommitPending());
354 } 359 }
355 360
356 TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) { 361 TEST(SchedulerStateMachineTest, TestFailedDrawForMissingHighResNeedsCommit) {
357 SchedulerSettings default_scheduler_settings; 362 SchedulerSettings default_scheduler_settings;
358 StateMachine state(default_scheduler_settings); 363 StateMachine state(default_scheduler_settings);
359 state.SetCanStart(); 364 state.SetCanStart();
360 state.UpdateState(state.NextAction()); 365 state.UpdateState(state.NextAction());
361 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 366 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
362 state.SetVisible(true); 367 state.SetVisible(true);
363 state.SetCanDraw(true); 368 state.SetCanDraw(true);
364 state.SetNeedsRedraw(true); 369 state.SetNeedsRedraw(true);
365 EXPECT_TRUE(state.RedrawPending()); 370 EXPECT_TRUE(state.RedrawPending());
366 EXPECT_TRUE(state.BeginFrameNeeded()); 371 EXPECT_TRUE(state.BeginFrameNeeded());
367 372
368 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 373 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
369 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 374 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
370 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 375 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
371 state.OnBeginImplFrameDeadline(); 376 state.OnBeginImplFrameDeadline();
372 EXPECT_ACTION_UPDATE_STATE( 377 EXPECT_ACTION_UPDATE_STATE(
373 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 378 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
379 state.DidSwapBuffers();
380 state.DidSwapBuffersComplete();
374 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 381 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
375 EXPECT_FALSE(state.RedrawPending()); 382 EXPECT_FALSE(state.RedrawPending());
376 EXPECT_FALSE(state.CommitPending()); 383 EXPECT_FALSE(state.CommitPending());
377 384
378 // Missing high res content requires a commit (but not a redraw) 385 // Missing high res content requires a commit (but not a redraw)
379 state.DidDrawIfPossibleCompleted( 386 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_MISSING_HIGH_RES_CONTENT);
380 DrawSwapReadbackResult::DRAW_ABORTED_MISSING_HIGH_RES_CONTENT);
381 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 387 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
382 EXPECT_ACTION_UPDATE_STATE( 388 EXPECT_ACTION_UPDATE_STATE(
383 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 389 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
384 EXPECT_FALSE(state.RedrawPending()); 390 EXPECT_FALSE(state.RedrawPending());
385 EXPECT_TRUE(state.CommitPending()); 391 EXPECT_TRUE(state.CommitPending());
386 } 392 }
387 393
388 TEST(SchedulerStateMachineTest, 394 TEST(SchedulerStateMachineTest,
389 TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) { 395 TestsetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) {
390 SchedulerSettings default_scheduler_settings; 396 SchedulerSettings default_scheduler_settings;
391 StateMachine state(default_scheduler_settings); 397 StateMachine state(default_scheduler_settings);
392 state.SetCanStart(); 398 state.SetCanStart();
393 state.UpdateState(state.NextAction()); 399 state.UpdateState(state.NextAction());
394 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 400 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
395 401
396 state.SetVisible(true); 402 state.SetVisible(true);
397 state.SetCanDraw(true); 403 state.SetCanDraw(true);
398 state.SetNeedsRedraw(true); 404 state.SetNeedsRedraw(true);
399 EXPECT_TRUE(state.RedrawPending()); 405 EXPECT_TRUE(state.RedrawPending());
400 EXPECT_TRUE(state.BeginFrameNeeded()); 406 EXPECT_TRUE(state.BeginFrameNeeded());
401 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 407 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
402 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 408 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
403 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 409 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
404 state.OnBeginImplFrameDeadline(); 410 state.OnBeginImplFrameDeadline();
405 411
406 // We're drawing now. 412 // We're drawing now.
407 EXPECT_ACTION_UPDATE_STATE( 413 EXPECT_ACTION_UPDATE_STATE(
408 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 414 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
415 state.DidSwapBuffers();
416 state.DidSwapBuffersComplete();
409 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 417 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
410 EXPECT_FALSE(state.RedrawPending()); 418 EXPECT_FALSE(state.RedrawPending());
411 EXPECT_FALSE(state.CommitPending()); 419 EXPECT_FALSE(state.CommitPending());
412 420
413 // While still in the same BeginMainFrame callback on the main thread, 421 // While still in the same BeginMainFrame callback on the main thread,
414 // set needs redraw again. This should not redraw. 422 // set needs redraw again. This should not redraw.
415 state.SetNeedsRedraw(true); 423 state.SetNeedsRedraw(true);
416 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 424 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
417 425
418 // Failing the draw for animation checkerboards makes us require a commit. 426 // Failing the draw for animation checkerboards makes us require a commit.
419 state.DidDrawIfPossibleCompleted( 427 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
420 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
421 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 428 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
422 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 429 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
423 EXPECT_ACTION_UPDATE_STATE( 430 EXPECT_ACTION_UPDATE_STATE(
424 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 431 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
425 EXPECT_TRUE(state.RedrawPending()); 432 EXPECT_TRUE(state.RedrawPending());
426 } 433 }
427 434
428 void TestFailedDrawsEventuallyForceDrawAfterNextCommit( 435 void TestFailedDrawsEventuallyForceDrawAfterNextCommit(
429 bool main_frame_before_draw_enabled) { 436 bool main_frame_before_draw_enabled) {
430 SchedulerSettings scheduler_settings; 437 SchedulerSettings scheduler_settings;
(...skipping 17 matching lines...) Expand all
448 EXPECT_TRUE(state.CommitPending()); 455 EXPECT_TRUE(state.CommitPending());
449 456
450 // Then initiate a draw. 457 // Then initiate a draw.
451 state.SetNeedsRedraw(true); 458 state.SetNeedsRedraw(true);
452 state.OnBeginImplFrameDeadline(); 459 state.OnBeginImplFrameDeadline();
453 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 460 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
454 EXPECT_ACTION_UPDATE_STATE( 461 EXPECT_ACTION_UPDATE_STATE(
455 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 462 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
456 463
457 // Fail the draw. 464 // Fail the draw.
458 state.DidDrawIfPossibleCompleted( 465 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
459 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
460 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 466 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
461 EXPECT_TRUE(state.BeginFrameNeeded()); 467 EXPECT_TRUE(state.BeginFrameNeeded());
462 EXPECT_TRUE(state.RedrawPending()); 468 EXPECT_TRUE(state.RedrawPending());
463 // But the commit is ongoing. 469 // But the commit is ongoing.
464 EXPECT_TRUE(state.CommitPending()); 470 EXPECT_TRUE(state.CommitPending());
465 471
466 // Finish the commit. Note, we should not yet be forcing a draw, but should 472 // Finish the commit. Note, we should not yet be forcing a draw, but should
467 // continue the commit as usual. 473 // continue the commit as usual.
468 state.NotifyBeginMainFrameStarted(); 474 state.NotifyBeginMainFrameStarted();
469 state.NotifyReadyToCommit(); 475 state.NotifyReadyToCommit();
470 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 476 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
471 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 477 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
472 EXPECT_TRUE(state.RedrawPending()); 478 EXPECT_TRUE(state.RedrawPending());
473 479
474 // The redraw should be forced at the end of the next BeginImplFrame. 480 // The redraw should be forced at the end of the next BeginImplFrame.
475 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 481 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
476 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 482 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
477 if (main_frame_before_draw_enabled) { 483 if (main_frame_before_draw_enabled) {
478 EXPECT_ACTION_UPDATE_STATE( 484 EXPECT_ACTION_UPDATE_STATE(
479 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 485 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
480 } 486 }
481 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 487 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
482 state.OnBeginImplFrameDeadline(); 488 state.OnBeginImplFrameDeadline();
483 EXPECT_ACTION_UPDATE_STATE( 489 EXPECT_ACTION_UPDATE_STATE(
484 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED); 490 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_FORCED);
491 state.DidSwapBuffers();
492 state.DidSwapBuffersComplete();
485 } 493 }
486 494
487 TEST(SchedulerStateMachineTest, 495 TEST(SchedulerStateMachineTest,
488 TestFailedDrawsEventuallyForceDrawAfterNextCommit) { 496 TestFailedDrawsEventuallyForceDrawAfterNextCommit) {
489 bool main_frame_before_draw_enabled = false; 497 bool main_frame_before_draw_enabled = false;
490 TestFailedDrawsEventuallyForceDrawAfterNextCommit( 498 TestFailedDrawsEventuallyForceDrawAfterNextCommit(
491 main_frame_before_draw_enabled); 499 main_frame_before_draw_enabled);
492 } 500 }
493 501
494 TEST(SchedulerStateMachineTest, 502 TEST(SchedulerStateMachineTest,
(...skipping 27 matching lines...) Expand all
522 530
523 // Then initiate a draw. 531 // Then initiate a draw.
524 state.SetNeedsRedraw(true); 532 state.SetNeedsRedraw(true);
525 state.OnBeginImplFrameDeadline(); 533 state.OnBeginImplFrameDeadline();
526 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 534 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
527 EXPECT_ACTION_UPDATE_STATE( 535 EXPECT_ACTION_UPDATE_STATE(
528 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 536 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
529 537
530 // Fail the draw enough times to force a redraw, 538 // Fail the draw enough times to force a redraw,
531 // then once more for good measure. 539 // then once more for good measure.
532 for (int i = 0; i < draw_limit + 1; ++i) { 540 for (int i = 0; i < draw_limit + 1; ++i)
533 state.DidDrawIfPossibleCompleted( 541 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
534 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
535 }
536 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 542 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
537 EXPECT_TRUE(state.BeginFrameNeeded()); 543 EXPECT_TRUE(state.BeginFrameNeeded());
538 EXPECT_TRUE(state.RedrawPending()); 544 EXPECT_TRUE(state.RedrawPending());
539 // But the commit is ongoing. 545 // But the commit is ongoing.
540 EXPECT_TRUE(state.CommitPending()); 546 EXPECT_TRUE(state.CommitPending());
541 EXPECT_TRUE(state.ForcedRedrawState() == 547 EXPECT_TRUE(state.ForcedRedrawState() ==
542 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT); 548 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_COMMIT);
543 549
544 state.NotifyBeginMainFrameStarted(); 550 state.NotifyBeginMainFrameStarted();
545 state.NotifyReadyToCommit(); 551 state.NotifyReadyToCommit();
546 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 552 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
547 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 553 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
548 EXPECT_TRUE(state.RedrawPending()); 554 EXPECT_TRUE(state.RedrawPending());
549 EXPECT_FALSE(state.CommitPending()); 555 EXPECT_FALSE(state.CommitPending());
550 556
551 // Now force redraw should be in waiting for activation 557 // Now force redraw should be in waiting for activation
552 EXPECT_TRUE(state.ForcedRedrawState() == 558 EXPECT_TRUE(state.ForcedRedrawState() ==
553 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 559 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
554 560
555 // After failing additional draws, we should still be in a forced 561 // After failing additional draws, we should still be in a forced
556 // redraw, but not back in WAITING_FOR_COMMIT. 562 // redraw, but not back in WAITING_FOR_COMMIT.
557 for (int i = 0; i < draw_limit + 1; ++i) { 563 for (int i = 0; i < draw_limit + 1; ++i)
558 state.DidDrawIfPossibleCompleted( 564 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
559 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
560 }
561 EXPECT_TRUE(state.RedrawPending()); 565 EXPECT_TRUE(state.RedrawPending());
562 EXPECT_TRUE(state.ForcedRedrawState() == 566 EXPECT_TRUE(state.ForcedRedrawState() ==
563 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION); 567 SchedulerStateMachine::FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION);
564 } 568 }
565 569
566 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) { 570 TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedInNextBeginImplFrame) {
567 SchedulerSettings default_scheduler_settings; 571 SchedulerSettings default_scheduler_settings;
568 StateMachine state(default_scheduler_settings); 572 StateMachine state(default_scheduler_settings);
569 state.SetCanStart(); 573 state.SetCanStart();
570 state.UpdateState(state.NextAction()); 574 state.UpdateState(state.NextAction());
571 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 575 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
572 state.SetVisible(true); 576 state.SetVisible(true);
573 state.SetCanDraw(true); 577 state.SetCanDraw(true);
574 578
575 // Start a draw. 579 // Start a draw.
576 state.SetNeedsRedraw(true); 580 state.SetNeedsRedraw(true);
577 EXPECT_TRUE(state.BeginFrameNeeded()); 581 EXPECT_TRUE(state.BeginFrameNeeded());
578 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 582 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
579 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 583 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
580 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 584 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
581 state.OnBeginImplFrameDeadline(); 585 state.OnBeginImplFrameDeadline();
582 EXPECT_TRUE(state.RedrawPending()); 586 EXPECT_TRUE(state.RedrawPending());
583 EXPECT_ACTION_UPDATE_STATE( 587 EXPECT_ACTION_UPDATE_STATE(
584 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 588 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
585 589
586 // Failing the draw for animation checkerboards makes us require a commit. 590 // Failing the draw for animation checkerboards makes us require a commit.
587 state.DidDrawIfPossibleCompleted( 591 state.DidDrawIfPossibleCompleted(DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
588 DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS);
589 EXPECT_ACTION_UPDATE_STATE( 592 EXPECT_ACTION_UPDATE_STATE(
590 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 593 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
591 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 594 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
592 EXPECT_TRUE(state.RedrawPending()); 595 EXPECT_TRUE(state.RedrawPending());
593 596
594 // We should not be trying to draw again now, but we have a commit pending. 597 // We should not be trying to draw again now, but we have a commit pending.
595 EXPECT_TRUE(state.BeginFrameNeeded()); 598 EXPECT_TRUE(state.BeginFrameNeeded());
596 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 599 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
597 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 600 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
598 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 601 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
599 602
600 // We should try to draw again at the end of the next BeginImplFrame on 603 // We should try to draw again at the end of the next BeginImplFrame on
601 // the impl thread. 604 // the impl thread.
602 state.OnBeginImplFrameDeadline(); 605 state.OnBeginImplFrameDeadline();
603 EXPECT_ACTION_UPDATE_STATE( 606 EXPECT_ACTION_UPDATE_STATE(
604 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 607 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
608 state.DidSwapBuffers();
609 state.DidSwapBuffersComplete();
605 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 610 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
606 } 611 }
607 612
608 TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) { 613 TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) {
609 SchedulerSettings default_scheduler_settings; 614 SchedulerSettings default_scheduler_settings;
610 StateMachine state(default_scheduler_settings); 615 StateMachine state(default_scheduler_settings);
611 state.SetCanStart(); 616 state.SetCanStart();
612 state.UpdateState(state.NextAction()); 617 state.UpdateState(state.NextAction());
613 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 618 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
614 state.SetVisible(true); 619 state.SetVisible(true);
615 state.SetCanDraw(true); 620 state.SetCanDraw(true);
616 state.SetNeedsRedraw(true); 621 state.SetNeedsRedraw(true);
617 622
618 // Draw the first frame. 623 // Draw the first frame.
619 EXPECT_TRUE(state.BeginFrameNeeded()); 624 EXPECT_TRUE(state.BeginFrameNeeded());
620 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 625 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
621 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 626 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
622 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 627 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
623 628
624 state.OnBeginImplFrameDeadline(); 629 state.OnBeginImplFrameDeadline();
625 EXPECT_ACTION_UPDATE_STATE( 630 EXPECT_ACTION_UPDATE_STATE(
626 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 631 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
627 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 632 state.DidSwapBuffers();
633 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
634 state.DidSwapBuffersComplete();
628 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 635 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
629 636
630 // Before the next BeginImplFrame, set needs redraw again. 637 // Before the next BeginImplFrame, set needs redraw again.
631 // This should not redraw until the next BeginImplFrame. 638 // This should not redraw until the next BeginImplFrame.
632 state.SetNeedsRedraw(true); 639 state.SetNeedsRedraw(true);
633 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 640 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
634 641
635 // Move to another frame. This should now draw. 642 // Move to another frame. This should now draw.
636 EXPECT_TRUE(state.BeginFrameNeeded()); 643 EXPECT_TRUE(state.BeginFrameNeeded());
637 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 644 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
638 645
639 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 646 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
640 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 647 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
641 648
642 state.OnBeginImplFrameDeadline(); 649 state.OnBeginImplFrameDeadline();
643 EXPECT_ACTION_UPDATE_STATE( 650 EXPECT_ACTION_UPDATE_STATE(
644 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 651 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
645 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 652 state.DidSwapBuffers();
653 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
654 state.DidSwapBuffersComplete();
646 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 655 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
647 656
648 // We just swapped, so we should proactively request another BeginImplFrame. 657 // We just swapped, so we should proactively request another BeginImplFrame.
649 EXPECT_TRUE(state.BeginFrameNeeded()); 658 EXPECT_TRUE(state.BeginFrameNeeded());
650 } 659 }
651 660
652 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) { 661 TEST(SchedulerStateMachineTest, TestNextActionDrawsOnBeginImplFrame) {
653 SchedulerSettings default_scheduler_settings; 662 SchedulerSettings default_scheduler_settings;
654 663
655 // When not in BeginImplFrame deadline, or in BeginImplFrame deadline 664 // When not in BeginImplFrame deadline, or in BeginImplFrame deadline
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 EXPECT_ACTION_UPDATE_STATE( 891 EXPECT_ACTION_UPDATE_STATE(
883 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 892 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
884 } 893 }
885 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 894 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
886 895
887 state.OnBeginImplFrameDeadline(); 896 state.OnBeginImplFrameDeadline();
888 897
889 EXPECT_TRUE(state.active_tree_needs_first_draw()); 898 EXPECT_TRUE(state.active_tree_needs_first_draw());
890 EXPECT_ACTION_UPDATE_STATE( 899 EXPECT_ACTION_UPDATE_STATE(
891 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 900 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
892 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 901 state.DidSwapBuffers();
902 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
903 state.DidSwapBuffersComplete();
893 if (!main_frame_before_draw_enabled) { 904 if (!main_frame_before_draw_enabled) {
894 EXPECT_ACTION_UPDATE_STATE( 905 EXPECT_ACTION_UPDATE_STATE(
895 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 906 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
896 } 907 }
897 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 908 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
898 } 909 }
899 910
900 TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) { 911 TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) {
901 bool main_frame_before_draw_enabled = false; 912 bool main_frame_before_draw_enabled = false;
902 TestSetNeedsCommitIsNotLost(main_frame_before_draw_enabled); 913 TestSetNeedsCommitIsNotLost(main_frame_before_draw_enabled);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 EXPECT_TRUE(state.needs_redraw()); 951 EXPECT_TRUE(state.needs_redraw());
941 952
942 // Expect to do nothing until BeginImplFrame deadline 953 // Expect to do nothing until BeginImplFrame deadline
943 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 954 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
944 955
945 // At BeginImplFrame deadline, draw. 956 // At BeginImplFrame deadline, draw.
946 state.OnBeginImplFrameDeadline(); 957 state.OnBeginImplFrameDeadline();
947 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 958 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
948 EXPECT_ACTION_UPDATE_STATE( 959 EXPECT_ACTION_UPDATE_STATE(
949 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 960 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
950 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 961 state.DidSwapBuffers();
962 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
963 state.DidSwapBuffersComplete();
951 964
952 // Should be synchronized, no draw needed, no action needed. 965 // Should be synchronized, no draw needed, no action needed.
953 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 966 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
954 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 967 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
955 EXPECT_FALSE(state.needs_redraw()); 968 EXPECT_FALSE(state.needs_redraw());
956 } 969 }
957 970
958 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) { 971 TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) {
959 SchedulerSettings default_scheduler_settings; 972 SchedulerSettings default_scheduler_settings;
960 StateMachine state(default_scheduler_settings); 973 StateMachine state(default_scheduler_settings);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 EXPECT_TRUE(state.needs_redraw()); 1005 EXPECT_TRUE(state.needs_redraw());
993 1006
994 // Expect to do nothing until BeginImplFrame deadline. 1007 // Expect to do nothing until BeginImplFrame deadline.
995 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1008 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
996 1009
997 // At BeginImplFrame deadline, draw. 1010 // At BeginImplFrame deadline, draw.
998 state.OnBeginImplFrameDeadline(); 1011 state.OnBeginImplFrameDeadline();
999 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1012 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1000 EXPECT_ACTION_UPDATE_STATE( 1013 EXPECT_ACTION_UPDATE_STATE(
1001 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1014 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1002 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1015 state.DidSwapBuffers();
1016 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1017 state.DidSwapBuffersComplete();
1003 1018
1004 // Should be synchronized, no draw needed, no action needed. 1019 // Should be synchronized, no draw needed, no action needed.
1005 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1020 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1006 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1021 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1007 EXPECT_FALSE(state.needs_redraw()); 1022 EXPECT_FALSE(state.needs_redraw());
1008 1023
1009 // Next BeginImplFrame should initiate second commit. 1024 // Next BeginImplFrame should initiate second commit.
1010 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1025 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1011 EXPECT_ACTION_UPDATE_STATE( 1026 EXPECT_ACTION_UPDATE_STATE(
1012 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1027 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 EXPECT_FALSE(state.NeedsCommit()); 1118 EXPECT_FALSE(state.NeedsCommit());
1104 1119
1105 // Start a new frame; draw because this is the first frame since output 1120 // Start a new frame; draw because this is the first frame since output
1106 // surface init'd. 1121 // surface init'd.
1107 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1122 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1108 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1123 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1109 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1124 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1110 state.OnBeginImplFrameDeadline(); 1125 state.OnBeginImplFrameDeadline();
1111 EXPECT_ACTION_UPDATE_STATE( 1126 EXPECT_ACTION_UPDATE_STATE(
1112 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1127 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1128 state.DidSwapBuffers();
1129 state.DidSwapBuffersComplete();
1113 1130
1114 // Verify another commit doesn't start on another frame either. 1131 // Verify another commit doesn't start on another frame either.
1115 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1132 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1116 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1133 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1117 EXPECT_FALSE(state.NeedsCommit()); 1134 EXPECT_FALSE(state.NeedsCommit());
1118 1135
1119 // Verify another commit can start if requested, though. 1136 // Verify another commit can start if requested, though.
1120 state.SetNeedsCommit(); 1137 state.SetNeedsCommit();
1121 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState()); 1138 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_IDLE, state.CommitState());
1122 EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME, 1139 EXPECT_EQ(SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME,
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 // Set damage and expect a draw. 1276 // Set damage and expect a draw.
1260 state.SetNeedsRedraw(true); 1277 state.SetNeedsRedraw(true);
1261 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1278 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1262 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1279 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1263 EXPECT_ACTION_UPDATE_STATE( 1280 EXPECT_ACTION_UPDATE_STATE(
1264 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1281 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1265 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1282 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1266 state.OnBeginImplFrameDeadline(); 1283 state.OnBeginImplFrameDeadline();
1267 EXPECT_ACTION_UPDATE_STATE( 1284 EXPECT_ACTION_UPDATE_STATE(
1268 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1285 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1286 state.DidSwapBuffers();
1287 state.DidSwapBuffersComplete();
1269 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1288 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1270 1289
1271 // Cause a lost context while the BeginMainFrame is in flight. 1290 // Cause a lost context while the BeginMainFrame is in flight.
1272 state.DidLoseOutputSurface(); 1291 state.DidLoseOutputSurface();
1273 1292
1274 // Ask for another draw. Expect nothing happens. 1293 // Ask for another draw. Expect nothing happens.
1275 state.SetNeedsRedraw(true); 1294 state.SetNeedsRedraw(true);
1276 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction()); 1295 EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.NextAction());
1277 1296
1278 // Finish the frame, and commit. 1297 // Finish the frame, and commit.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 // Set damage and expect a draw. 1343 // Set damage and expect a draw.
1325 state.SetNeedsRedraw(true); 1344 state.SetNeedsRedraw(true);
1326 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1345 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1327 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1346 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1328 EXPECT_ACTION_UPDATE_STATE( 1347 EXPECT_ACTION_UPDATE_STATE(
1329 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1348 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1330 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1349 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1331 state.OnBeginImplFrameDeadline(); 1350 state.OnBeginImplFrameDeadline();
1332 EXPECT_ACTION_UPDATE_STATE( 1351 EXPECT_ACTION_UPDATE_STATE(
1333 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1352 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1353 state.DidSwapBuffers();
1354 state.DidSwapBuffersComplete();
1334 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1355 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1335 1356
1336 // Cause a lost context while the BeginMainFrame is in flight. 1357 // Cause a lost context while the BeginMainFrame is in flight.
1337 state.DidLoseOutputSurface(); 1358 state.DidLoseOutputSurface();
1338 1359
1339 // Ask for another draw and also set needs commit. Expect nothing happens. 1360 // Ask for another draw and also set needs commit. Expect nothing happens.
1340 state.SetNeedsRedraw(true); 1361 state.SetNeedsRedraw(true);
1341 state.SetNeedsCommit(); 1362 state.SetNeedsCommit();
1342 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1363 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1343 1364
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1403 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1383 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1404 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1384 state.NotifyBeginMainFrameStarted(); 1405 state.NotifyBeginMainFrameStarted();
1385 state.NotifyReadyToCommit(); 1406 state.NotifyReadyToCommit();
1386 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1407 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1387 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1408 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1388 state.OnBeginImplFrameDeadline(); 1409 state.OnBeginImplFrameDeadline();
1389 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1410 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1390 EXPECT_ACTION_UPDATE_STATE( 1411 EXPECT_ACTION_UPDATE_STATE(
1391 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1412 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1413 state.DidSwapBuffers();
1414 state.DidSwapBuffersComplete();
1392 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1415 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1393 } 1416 }
1394 1417
1395 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) { 1418 TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) {
1396 SchedulerSettings default_scheduler_settings; 1419 SchedulerSettings default_scheduler_settings;
1397 StateMachine state(default_scheduler_settings); 1420 StateMachine state(default_scheduler_settings);
1398 state.SetCanStart(); 1421 state.SetCanStart();
1399 state.UpdateState(state.NextAction()); 1422 state.UpdateState(state.NextAction());
1400 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 1423 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1401 state.SetVisible(true); 1424 state.SetVisible(true);
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 } 1677 }
1655 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1678 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1656 1679
1657 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1680 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1658 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1681 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1659 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1682 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1660 // Perform the draw & swap of replacement commit. 1683 // Perform the draw & swap of replacement commit.
1661 state.OnBeginImplFrameDeadline(); 1684 state.OnBeginImplFrameDeadline();
1662 EXPECT_ACTION_UPDATE_STATE( 1685 EXPECT_ACTION_UPDATE_STATE(
1663 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1686 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1687 state.DidSwapBuffers();
1688 state.DidSwapBuffersComplete();
1664 if (!settings.main_frame_before_draw_enabled) { 1689 if (!settings.main_frame_before_draw_enabled) {
1665 // New replacement commit is scheduled. 1690 // New replacement commit is scheduled.
1666 EXPECT_ACTION_UPDATE_STATE( 1691 EXPECT_ACTION_UPDATE_STATE(
1667 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME); 1692 SchedulerStateMachine::ACTION_SEND_BEGIN_MAIN_FRAME);
1668 // Forced commit is started. 1693 // Forced commit is started.
1669 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_WAITING_FOR_COMMIT, 1694 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_WAITING_FOR_COMMIT,
1670 state.readback_state()); 1695 state.readback_state());
1671 } 1696 }
1672 EXPECT_ACTION_UPDATE_STATE( 1697 EXPECT_ACTION_UPDATE_STATE(
1673 SchedulerStateMachine::ACTION_NONE); 1698 SchedulerStateMachine::ACTION_NONE);
(...skipping 19 matching lines...) Expand all
1693 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1718 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1694 state.NotifyReadyToActivate(); 1719 state.NotifyReadyToActivate();
1695 EXPECT_ACTION_UPDATE_STATE( 1720 EXPECT_ACTION_UPDATE_STATE(
1696 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE); 1721 SchedulerStateMachine::ACTION_ACTIVATE_PENDING_TREE);
1697 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1722 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1698 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1723 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1699 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1724 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1700 state.OnBeginImplFrameDeadline(); 1725 state.OnBeginImplFrameDeadline();
1701 EXPECT_ACTION_UPDATE_STATE( 1726 EXPECT_ACTION_UPDATE_STATE(
1702 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1727 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1728 state.DidSwapBuffers();
1729 state.DidSwapBuffersComplete();
1703 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state()); 1730 EXPECT_EQ(SchedulerStateMachine::READBACK_STATE_IDLE, state.readback_state());
1704 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1731 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1705 } 1732 }
1706 1733
1707 // Explicitly test when main_frame_before_draw_enabled = true. 1734 // Explicitly test when main_frame_before_draw_enabled = true.
1708 TEST(SchedulerStateMachineTest, 1735 TEST(SchedulerStateMachineTest,
1709 ForceCommitWhenReplacementActivationInProgressAndMainFrameEnabled) { 1736 ForceCommitWhenReplacementActivationInProgressAndMainFrameEnabled) {
1710 bool main_frame_before_draw_enabled = true; 1737 bool main_frame_before_draw_enabled = true;
1711 TestForceCommitWhenReplacementActivationInProgress( 1738 TestForceCommitWhenReplacementActivationInProgress(
1712 main_frame_before_draw_enabled); 1739 main_frame_before_draw_enabled);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1765 EXPECT_FALSE(state.NeedsCommit()); 1792 EXPECT_FALSE(state.NeedsCommit());
1766 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1793 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1767 1794
1768 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting()); 1795 state.OnBeginImplFrame(BeginFrameArgs::CreateForTesting());
1769 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE); 1796 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_ANIMATE);
1770 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1797 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1771 // Perform the draw & swap of replacement commit. 1798 // Perform the draw & swap of replacement commit.
1772 state.OnBeginImplFrameDeadline(); 1799 state.OnBeginImplFrameDeadline();
1773 EXPECT_ACTION_UPDATE_STATE( 1800 EXPECT_ACTION_UPDATE_STATE(
1774 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 1801 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
1802 state.DidSwapBuffers();
1803 state.DidSwapBuffersComplete();
1775 EXPECT_ACTION_UPDATE_STATE( 1804 EXPECT_ACTION_UPDATE_STATE(
1776 SchedulerStateMachine::ACTION_NONE); 1805 SchedulerStateMachine::ACTION_NONE);
1777 1806
1778 // forced commit is started. 1807 // forced commit is started.
1779 state.NotifyBeginMainFrameStarted(); 1808 state.NotifyBeginMainFrameStarted();
1780 state.NotifyReadyToCommit(); 1809 state.NotifyReadyToCommit();
1781 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1810 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1782 } 1811 }
1783 1812
1784 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) { 1813 TEST(SchedulerStateMachineTest, TestInitialActionsWhenContextLost) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1834 state.NotifyBeginMainFrameStarted(); 1863 state.NotifyBeginMainFrameStarted();
1835 state.NotifyReadyToCommit(); 1864 state.NotifyReadyToCommit();
1836 1865
1837 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1866 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1838 state.CommitState()); 1867 state.CommitState());
1839 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1868 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1840 1869
1841 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1870 EXPECT_TRUE(state.active_tree_needs_first_draw());
1842 1871
1843 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1872 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1844 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1873 state.DidSwapBuffers();
1874 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1875 state.DidSwapBuffersComplete();
1845 1876
1846 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1877 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1847 1878
1848 // Should be waiting for the normal BeginMainFrame. 1879 // Should be waiting for the normal BeginMainFrame.
1849 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1880 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1850 state.CommitState()); 1881 state.CommitState());
1851 } 1882 }
1852 1883
1853 TEST(SchedulerStateMachineTest, TestImmediateFinishCommitDuringCommit) { 1884 TEST(SchedulerStateMachineTest, TestImmediateFinishCommitDuringCommit) {
1854 SchedulerSettings scheduler_settings; 1885 SchedulerSettings scheduler_settings;
(...skipping 15 matching lines...) Expand all
1870 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1901 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1871 state.NotifyBeginMainFrameStarted(); 1902 state.NotifyBeginMainFrameStarted();
1872 state.NotifyReadyToCommit(); 1903 state.NotifyReadyToCommit();
1873 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1904 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1874 state.CommitState()); 1905 state.CommitState());
1875 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1906 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1876 1907
1877 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1908 EXPECT_TRUE(state.active_tree_needs_first_draw());
1878 1909
1879 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1910 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1880 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1911 state.DidSwapBuffers();
1912 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1913 state.DidSwapBuffersComplete();
1881 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1914 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1882 1915
1883 // Should be waiting for the normal BeginMainFrame. 1916 // Should be waiting for the normal BeginMainFrame.
1884 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1917 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1885 state.CommitState()) 1918 state.CommitState())
1886 << *state.AsValue(); 1919 << *state.AsValue();
1887 } 1920 }
1888 1921
1889 TEST(SchedulerStateMachineTest, ImmediateBeginMainFrameAbortedWhileInvisible) { 1922 TEST(SchedulerStateMachineTest, ImmediateBeginMainFrameAbortedWhileInvisible) {
1890 SchedulerSettings scheduler_settings; 1923 SchedulerSettings scheduler_settings;
(...skipping 13 matching lines...) Expand all
1904 state.NotifyBeginMainFrameStarted(); 1937 state.NotifyBeginMainFrameStarted();
1905 state.NotifyReadyToCommit(); 1938 state.NotifyReadyToCommit();
1906 1939
1907 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1940 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1908 state.CommitState()); 1941 state.CommitState());
1909 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1942 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1910 1943
1911 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1944 EXPECT_TRUE(state.active_tree_needs_first_draw());
1912 1945
1913 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1946 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1914 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1947 state.DidSwapBuffers();
1948 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1949 state.DidSwapBuffersComplete();
1915 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1950 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1916 1951
1917 // Should be waiting for BeginMainFrame. 1952 // Should be waiting for BeginMainFrame.
1918 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 1953 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
1919 state.CommitState()) 1954 state.CommitState())
1920 << *state.AsValue(); 1955 << *state.AsValue();
1921 1956
1922 // Become invisible and abort BeginMainFrame. 1957 // Become invisible and abort BeginMainFrame.
1923 state.SetVisible(false); 1958 state.SetVisible(false);
1924 state.BeginMainFrameAborted(false); 1959 state.BeginMainFrameAborted(false);
(...skipping 20 matching lines...) Expand all
1945 state.NotifyBeginMainFrameStarted(); 1980 state.NotifyBeginMainFrameStarted();
1946 state.NotifyReadyToCommit(); 1981 state.NotifyReadyToCommit();
1947 1982
1948 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT, 1983 EXPECT_EQ(SchedulerStateMachine::COMMIT_STATE_READY_TO_COMMIT,
1949 state.CommitState()); 1984 state.CommitState());
1950 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT); 1985 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_COMMIT);
1951 1986
1952 EXPECT_TRUE(state.active_tree_needs_first_draw()); 1987 EXPECT_TRUE(state.active_tree_needs_first_draw());
1953 1988
1954 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK); 1989 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_DRAW_AND_READBACK);
1955 state.DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DRAW_SUCCESS); 1990 state.DidSwapBuffers();
1991 state.DidDrawIfPossibleCompleted(DRAW_SUCCESS);
1992 state.DidSwapBuffersComplete();
1956 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 1993 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
1957 } 1994 }
1958 1995
1959 TEST(SchedulerStateMachineTest, ReportIfNotDrawing) { 1996 TEST(SchedulerStateMachineTest, ReportIfNotDrawing) {
1960 SchedulerSettings default_scheduler_settings; 1997 SchedulerSettings default_scheduler_settings;
1961 StateMachine state(default_scheduler_settings); 1998 StateMachine state(default_scheduler_settings);
1962 state.SetCanStart(); 1999 state.SetCanStart();
1963 state.UpdateState(state.NextAction()); 2000 state.UpdateState(state.NextAction());
1964 state.CreateAndInitializeOutputSurfaceWithActivatedCommit(); 2001 state.CreateAndInitializeOutputSurfaceWithActivatedCommit();
1965 2002
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
2118 state.SetNeedsAnimate(); 2155 state.SetNeedsAnimate();
2119 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE); 2156 EXPECT_ACTION_UPDATE_STATE(SchedulerStateMachine::ACTION_NONE);
2120 2157
2121 state.OnBeginImplFrameDeadline(); 2158 state.OnBeginImplFrameDeadline();
2122 EXPECT_ACTION_UPDATE_STATE( 2159 EXPECT_ACTION_UPDATE_STATE(
2123 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE); 2160 SchedulerStateMachine::ACTION_DRAW_AND_SWAP_IF_POSSIBLE);
2124 } 2161 }
2125 2162
2126 } // namespace 2163 } // namespace
2127 } // namespace cc 2164 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698