OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 // Test entering hibernation | 475 // Test entering hibernation |
476 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 476 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
477 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 477 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
478 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) | 478 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) |
479 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); | 479 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); |
480 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 480 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
481 hibernationStartedEvent->wait(); | 481 hibernationStartedEvent->wait(); |
482 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 482 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
483 EXPECT_FALSE(bridge->isAccelerated()); | 483 EXPECT_FALSE(bridge->isAccelerated()); |
484 EXPECT_TRUE(bridge->isHibernating()); | 484 EXPECT_TRUE(bridge->isHibernating()); |
| 485 EXPECT_TRUE(bridge->checkSurfaceValid()); |
485 | 486 |
486 // Test exiting hibernation | 487 // Test exiting hibernation |
487 OwnPtr<WebWaitableEvent> hibernationEndedEvent = adoptPtr(Platform::current(
)->createWaitableEvent()); | 488 OwnPtr<WebWaitableEvent> hibernationEndedEvent = adoptPtr(Platform::current(
)->createWaitableEvent()); |
488 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedNormally)); | 489 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedNormally)); |
489 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, hibernationEndedEvent.get())); | 490 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, hibernationEndedEvent.get())); |
490 hibernationEndedEvent->wait(); | 491 hibernationEndedEvent->wait(); |
491 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 492 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
492 EXPECT_TRUE(bridge->isAccelerated()); | 493 EXPECT_TRUE(bridge->isAccelerated()); |
493 EXPECT_FALSE(bridge->isHibernating()); | 494 EXPECT_FALSE(bridge->isHibernating()); |
| 495 EXPECT_TRUE(bridge->checkSurfaceValid()); |
494 | 496 |
495 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 497 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
496 // without crashing due to thread checks | 498 // without crashing due to thread checks |
497 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 499 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
498 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 500 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
499 bridgeDestroyedEvent->wait(); | 501 bridgeDestroyedEvent->wait(); |
500 | 502 |
501 ::testing::Mock::VerifyAndClearExpectations(&mainMock); | 503 ::testing::Mock::VerifyAndClearExpectations(&mainMock); |
502 } | 504 } |
503 | 505 |
(...skipping 22 matching lines...) Expand all Loading... |
526 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 528 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
527 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 529 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
528 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) | 530 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) |
529 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); | 531 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); |
530 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 532 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
531 hibernationStartedEvent->wait(); | 533 hibernationStartedEvent->wait(); |
532 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 534 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
533 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 535 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
534 EXPECT_FALSE(bridge->isAccelerated()); | 536 EXPECT_FALSE(bridge->isAccelerated()); |
535 EXPECT_TRUE(bridge->isHibernating()); | 537 EXPECT_TRUE(bridge->isHibernating()); |
| 538 EXPECT_TRUE(bridge->checkSurfaceValid()); |
536 | 539 |
537 // Test exiting hibernation | 540 // Test exiting hibernation |
538 OwnPtr<WebWaitableEvent> hibernationEndedEvent = adoptPtr(Platform::current(
)->createWaitableEvent()); | 541 OwnPtr<WebWaitableEvent> hibernationEndedEvent = adoptPtr(Platform::current(
)->createWaitableEvent()); |
539 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedNormally)); | 542 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedNormally)); |
540 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); // Because d
eferred rendering is disabled | 543 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); // Because d
eferred rendering is disabled |
541 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, hibernationEndedEvent.get())); | 544 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, hibernationEndedEvent.get())); |
542 hibernationEndedEvent->wait(); | 545 hibernationEndedEvent->wait(); |
543 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 546 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
544 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 547 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
545 EXPECT_TRUE(bridge->isAccelerated()); | 548 EXPECT_TRUE(bridge->isAccelerated()); |
546 EXPECT_FALSE(bridge->isHibernating()); | 549 EXPECT_FALSE(bridge->isHibernating()); |
| 550 EXPECT_TRUE(bridge->checkSurfaceValid()); |
547 | 551 |
548 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 552 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
549 // without crashing due to thread checks | 553 // without crashing due to thread checks |
550 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 554 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
551 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 555 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
552 bridgeDestroyedEvent->wait(); | 556 bridgeDestroyedEvent->wait(); |
553 | 557 |
554 ::testing::Mock::VerifyAndClearExpectations(&mainMock); | 558 ::testing::Mock::VerifyAndClearExpectations(&mainMock); |
555 } | 559 } |
556 | 560 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 // Test entering hibernation | 600 // Test entering hibernation |
597 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 601 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
598 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 602 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
599 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) | 603 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) |
600 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); | 604 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); |
601 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 605 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
602 hibernationStartedEvent->wait(); | 606 hibernationStartedEvent->wait(); |
603 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 607 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
604 EXPECT_FALSE(bridge->isAccelerated()); | 608 EXPECT_FALSE(bridge->isAccelerated()); |
605 EXPECT_TRUE(bridge->isHibernating()); | 609 EXPECT_TRUE(bridge->isHibernating()); |
| 610 EXPECT_TRUE(bridge->checkSurfaceValid()); |
606 | 611 |
607 // Rendering in the background -> temp switch to SW | 612 // Rendering in the background -> temp switch to SW |
608 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); | 613 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); |
609 OwnPtr<WebWaitableEvent> switchEvent = adoptPtr(Platform::current()->createW
aitableEvent()); | 614 OwnPtr<WebWaitableEvent> switchEvent = adoptPtr(Platform::current()->createW
aitableEvent()); |
610 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new RenderingTask(bridge
.get(), switchEvent.get())); | 615 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new RenderingTask(bridge
.get(), switchEvent.get())); |
611 switchEvent->wait(); | 616 switchEvent->wait(); |
612 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 617 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
613 EXPECT_FALSE(bridge->isAccelerated()); | 618 EXPECT_FALSE(bridge->isAccelerated()); |
614 EXPECT_FALSE(bridge->isHibernating()); | 619 EXPECT_FALSE(bridge->isHibernating()); |
| 620 EXPECT_TRUE(bridge->checkSurfaceValid()); |
615 | 621 |
616 // Unhide | 622 // Unhide |
617 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); | 623 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); |
618 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); | 624 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); |
619 unhideEvent->wait(); | 625 unhideEvent->wait(); |
620 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 626 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
621 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU | 627 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU |
622 EXPECT_FALSE(bridge->isHibernating()); | 628 EXPECT_FALSE(bridge->isHibernating()); |
| 629 EXPECT_TRUE(bridge->checkSurfaceValid()); |
623 | 630 |
624 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 631 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
625 // without crashing due to thread checks | 632 // without crashing due to thread checks |
626 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 633 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
627 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 634 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
628 bridgeDestroyedEvent->wait(); | 635 bridgeDestroyedEvent->wait(); |
629 | 636 |
630 ::testing::Mock::VerifyAndClearExpectations(&mainMock); | 637 ::testing::Mock::VerifyAndClearExpectations(&mainMock); |
631 } | 638 } |
632 | 639 |
(...skipping 22 matching lines...) Expand all Loading... |
655 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 662 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
656 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 663 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
657 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) | 664 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) |
658 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); | 665 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); |
659 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 666 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
660 hibernationStartedEvent->wait(); | 667 hibernationStartedEvent->wait(); |
661 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 668 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
662 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 669 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
663 EXPECT_FALSE(bridge->isAccelerated()); | 670 EXPECT_FALSE(bridge->isAccelerated()); |
664 EXPECT_TRUE(bridge->isHibernating()); | 671 EXPECT_TRUE(bridge->isHibernating()); |
| 672 EXPECT_TRUE(bridge->checkSurfaceValid()); |
665 | 673 |
666 // Rendering in the background -> temp switch to SW | 674 // Rendering in the background -> temp switch to SW |
667 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); | 675 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); |
668 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); | 676 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); |
669 OwnPtr<WebWaitableEvent> switchEvent = adoptPtr(Platform::current()->createW
aitableEvent()); | 677 OwnPtr<WebWaitableEvent> switchEvent = adoptPtr(Platform::current()->createW
aitableEvent()); |
670 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new RenderingTask(bridge
.get(), switchEvent.get())); | 678 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new RenderingTask(bridge
.get(), switchEvent.get())); |
671 switchEvent->wait(); | 679 switchEvent->wait(); |
672 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 680 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
673 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 681 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
674 EXPECT_FALSE(bridge->isAccelerated()); | 682 EXPECT_FALSE(bridge->isAccelerated()); |
675 EXPECT_FALSE(bridge->isHibernating()); | 683 EXPECT_FALSE(bridge->isHibernating()); |
| 684 EXPECT_TRUE(bridge->checkSurfaceValid()); |
676 | 685 |
677 // Unhide | 686 // Unhide |
678 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); | 687 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); |
679 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); | 688 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); |
680 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); | 689 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); |
681 unhideEvent->wait(); | 690 unhideEvent->wait(); |
682 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 691 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
683 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 692 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
684 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU | 693 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU |
685 EXPECT_FALSE(bridge->isHibernating()); | 694 EXPECT_FALSE(bridge->isHibernating()); |
| 695 EXPECT_TRUE(bridge->checkSurfaceValid()); |
686 | 696 |
687 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 697 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
688 // without crashing due to thread checks | 698 // without crashing due to thread checks |
689 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); | 699 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); |
690 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 700 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
691 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 701 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
692 bridgeDestroyedEvent->wait(); | 702 bridgeDestroyedEvent->wait(); |
693 } | 703 } |
694 | 704 |
695 TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating) | 705 TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating) |
(...skipping 20 matching lines...) Expand all Loading... |
716 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 726 OwnPtr<WebWaitableEvent> hibernationStartedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
717 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 727 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
718 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) | 728 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) |
719 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); | 729 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WebWaitableEve
nt::signal)); |
720 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 730 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
721 hibernationStartedEvent->wait(); | 731 hibernationStartedEvent->wait(); |
722 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 732 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
723 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 733 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
724 EXPECT_FALSE(bridge->isAccelerated()); | 734 EXPECT_FALSE(bridge->isAccelerated()); |
725 EXPECT_TRUE(bridge->isHibernating()); | 735 EXPECT_TRUE(bridge->isHibernating()); |
| 736 EXPECT_TRUE(bridge->checkSurfaceValid()); |
726 | 737 |
727 // Disable deferral while background rendering | 738 // Disable deferral while background rendering |
728 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); | 739 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationEndedWithSwitchToBackgroundRendering)); |
729 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); | 740 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); |
730 bridge->disableDeferral(); | 741 bridge->disableDeferral(); |
731 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 742 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
732 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 743 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
733 EXPECT_FALSE(bridge->isAccelerated()); | 744 EXPECT_FALSE(bridge->isAccelerated()); |
734 EXPECT_FALSE(bridge->isHibernating()); | 745 EXPECT_FALSE(bridge->isHibernating()); |
| 746 EXPECT_TRUE(bridge->checkSurfaceValid()); |
735 | 747 |
736 // Unhide | 748 // Unhide |
737 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); | 749 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AtLeast(1)); |
738 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); | 750 OwnPtr<WebWaitableEvent> unhideEvent = adoptPtr(Platform::current()->createW
aitableEvent()); |
739 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); | 751 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false, unhideEvent.get())); |
740 unhideEvent->wait(); | 752 unhideEvent->wait(); |
741 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 753 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
742 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); | 754 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); |
743 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU | 755 EXPECT_TRUE(bridge->isAccelerated()); // Becoming visible causes switch back
to GPU |
744 EXPECT_FALSE(bridge->isHibernating()); | 756 EXPECT_FALSE(bridge->isHibernating()); |
| 757 EXPECT_TRUE(bridge->checkSurfaceValid()); |
745 | 758 |
746 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 759 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
747 // without crashing due to thread checks | 760 // without crashing due to thread checks |
748 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); | 761 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); |
749 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 762 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
750 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 763 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
751 bridgeDestroyedEvent->wait(); | 764 bridgeDestroyedEvent->wait(); |
752 } | 765 } |
753 | 766 |
754 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernating) | 767 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernating) |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 OwnPtr<WebWaitableEvent> hibernationAbortedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); | 932 OwnPtr<WebWaitableEvent> hibernationAbortedEvent = adoptPtr(Platform::curren
t()->createWaitableEvent()); |
920 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); | 933 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationScheduled)); |
921 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationAbortedDueToVisibilityChange)) | 934 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe
rnationAbortedDueToVisibilityChange)) |
922 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Web
WaitableEvent::signal)); | 935 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Web
WaitableEvent::signal)); |
923 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); | 936 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), true)); |
924 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false)); | 937 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new SetIsHiddenTask(brid
ge.get(), false)); |
925 hibernationAbortedEvent->wait(); | 938 hibernationAbortedEvent->wait(); |
926 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); | 939 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); |
927 EXPECT_TRUE(bridge->isAccelerated()); | 940 EXPECT_TRUE(bridge->isAccelerated()); |
928 EXPECT_FALSE(bridge->isHibernating()); | 941 EXPECT_FALSE(bridge->isHibernating()); |
| 942 EXPECT_TRUE(bridge->checkSurfaceValid()); |
929 | 943 |
930 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 944 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
931 // without crashing due to thread checks | 945 // without crashing due to thread checks |
932 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 946 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
933 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 947 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
934 bridgeDestroyedEvent->wait(); | 948 bridgeDestroyedEvent->wait(); |
935 | 949 |
936 ::testing::Mock::VerifyAndClearExpectations(&mainMock); | 950 ::testing::Mock::VerifyAndClearExpectations(&mainMock); |
937 } | 951 } |
938 | 952 |
(...skipping 28 matching lines...) Expand all Loading... |
967 // Tear down the bridge on the thread so that 'bridge' can go out of scope | 981 // Tear down the bridge on the thread so that 'bridge' can go out of scope |
968 // without crashing due to thread checks | 982 // without crashing due to thread checks |
969 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); | 983 OwnPtr<WebWaitableEvent> bridgeDestroyedEvent = adoptPtr(Platform::current()
->createWaitableEvent()); |
970 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); | 984 testThread->taskRunner()->postTask(BLINK_FROM_HERE, new DestroyBridgeTask(&b
ridge, bridgeDestroyedEvent.get())); |
971 bridgeDestroyedEvent->wait(); | 985 bridgeDestroyedEvent->wait(); |
972 | 986 |
973 ::testing::Mock::VerifyAndClearExpectations(&mainMock); | 987 ::testing::Mock::VerifyAndClearExpectations(&mainMock); |
974 } | 988 } |
975 | 989 |
976 } // namespace blink | 990 } // namespace blink |
OLD | NEW |