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

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 14925009: Run all LayerTreeHost tests with a delegating renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: uber-unittests: for landing2 Created 7 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
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_damage.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "cc/base/thread_impl.h" 8 #include "cc/base/thread_impl.h"
9 #include "cc/layers/content_layer.h" 9 #include "cc/layers/content_layer.h"
10 #include "cc/layers/heads_up_display_layer.h" 10 #include "cc/layers/heads_up_display_layer.h"
11 #include "cc/layers/io_surface_layer.h" 11 #include "cc/layers/io_surface_layer.h"
12 #include "cc/layers/layer_impl.h" 12 #include "cc/layers/layer_impl.h"
13 #include "cc/layers/picture_layer.h" 13 #include "cc/layers/picture_layer.h"
14 #include "cc/layers/scrollbar_layer.h" 14 #include "cc/layers/scrollbar_layer.h"
15 #include "cc/layers/texture_layer.h" 15 #include "cc/layers/texture_layer.h"
16 #include "cc/layers/texture_layer_impl.h"
16 #include "cc/layers/video_layer.h" 17 #include "cc/layers/video_layer.h"
17 #include "cc/layers/video_layer_impl.h" 18 #include "cc/layers/video_layer_impl.h"
18 #include "cc/test/fake_content_layer.h" 19 #include "cc/test/fake_content_layer.h"
19 #include "cc/test/fake_content_layer_client.h" 20 #include "cc/test/fake_content_layer_client.h"
20 #include "cc/test/fake_content_layer_impl.h" 21 #include "cc/test/fake_content_layer_impl.h"
21 #include "cc/test/fake_context_provider.h" 22 #include "cc/test/fake_context_provider.h"
22 #include "cc/test/fake_delegated_renderer_layer.h" 23 #include "cc/test/fake_delegated_renderer_layer.h"
23 #include "cc/test/fake_delegated_renderer_layer_impl.h" 24 #include "cc/test/fake_delegated_renderer_layer_impl.h"
24 #include "cc/test/fake_layer_tree_host_client.h" 25 #include "cc/test/fake_layer_tree_host_client.h"
25 #include "cc/test/fake_output_surface.h" 26 #include "cc/test/fake_output_surface.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // The number of times MakeCurrent succeeds is not important, and 100 // The number of times MakeCurrent succeeds is not important, and
100 // can be changed if needed to make this pass with future changes. 101 // can be changed if needed to make this pass with future changes.
101 context3d_->set_times_make_current_succeeds(2); 102 context3d_->set_times_make_current_succeeds(2);
102 ExpectCreateToFail(); 103 ExpectCreateToFail();
103 } else if (times_to_lose_on_create_) { 104 } else if (times_to_lose_on_create_) {
104 --times_to_lose_on_create_; 105 --times_to_lose_on_create_;
105 LoseContext(); 106 LoseContext();
106 ExpectCreateToFail(); 107 ExpectCreateToFail();
107 } 108 }
108 109
110 if (delegating_renderer()) {
111 return FakeOutputSurface::CreateDelegating3d(
112 context3d.PassAs<WebGraphicsContext3D>()).PassAs<OutputSurface>();
113 }
109 return FakeOutputSurface::Create3d( 114 return FakeOutputSurface::Create3d(
110 context3d.PassAs<WebGraphicsContext3D>()).PassAs<OutputSurface>(); 115 context3d.PassAs<WebGraphicsContext3D>()).PassAs<OutputSurface>();
111 } 116 }
112 117
113 scoped_ptr<TestWebGraphicsContext3D> CreateOffscreenContext3d() { 118 scoped_ptr<TestWebGraphicsContext3D> CreateOffscreenContext3d() {
114 if (!context3d_) 119 if (!context3d_)
115 return scoped_ptr<TestWebGraphicsContext3D>(); 120 return scoped_ptr<TestWebGraphicsContext3D>();
116 121
117 ++times_offscreen_created_; 122 ++times_offscreen_created_;
118 123
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 } 477 }
473 478
474 protected: 479 protected:
475 bool use_surface_; 480 bool use_surface_;
476 FakeContentLayerClient client_; 481 FakeContentLayerClient client_;
477 scoped_refptr<Layer> root_; 482 scoped_refptr<Layer> root_;
478 scoped_refptr<ContentLayer> content_; 483 scoped_refptr<ContentLayer> content_;
479 }; 484 };
480 485
481 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent, 486 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
482 NoSurface_SingleThread) { 487 NoSurface_SingleThread_DirectRenderer) {
483 use_surface_ = false; 488 use_surface_ = false;
484 RunTest(false); 489 RunTest(false, false);
485 } 490 }
486 491
487 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent, 492 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
488 NoSurface_MultiThread) { 493 NoSurface_SingleThread_DelegatingRenderer) {
489 use_surface_ = false; 494 use_surface_ = false;
490 RunTest(true); 495 RunTest(false, true);
491 } 496 }
492 497
493 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent, 498 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
494 WithSurface_SingleThread) { 499 NoSurface_MultiThread_DirectRenderer) {
495 use_surface_ = true; 500 use_surface_ = false;
496 RunTest(false); 501 RunTest(true, false);
497 } 502 }
498 503
499 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent, 504 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
500 WithSurface_MultiThread) { 505 NoSurface_MultiThread_DelegatingRenderer) {
506 use_surface_ = false;
507 RunTest(true, true);
508 }
509
510 // Surfaces don't exist with a delegating renderer.
511 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
512 WithSurface_SingleThread_DirectRenderer) {
501 use_surface_ = true; 513 use_surface_ = true;
502 RunTest(true); 514 RunTest(false, false);
515 }
516
517 TEST_F(LayerTreeHostContextTestLostContextSucceedsWithContent,
518 WithSurface_MultiThread_DirectRenderer) {
519 use_surface_ = true;
520 RunTest(true, false);
503 } 521 }
504 522
505 class LayerTreeHostContextTestOffscreenContextFails 523 class LayerTreeHostContextTestOffscreenContextFails
506 : public LayerTreeHostContextTest { 524 : public LayerTreeHostContextTest {
507 public: 525 public:
508 virtual void SetupTree() OVERRIDE { 526 virtual void SetupTree() OVERRIDE {
509 root_ = Layer::Create(); 527 root_ = Layer::Create();
510 root_->SetBounds(gfx::Size(10, 10)); 528 root_->SetBounds(gfx::Size(10, 10));
511 root_->SetAnchorPoint(gfx::PointF()); 529 root_->SetAnchorPoint(gfx::PointF());
512 root_->SetIsDrawable(true); 530 root_->SetIsDrawable(true);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 613 }
596 614
597 virtual void AfterTest() OVERRIDE {} 615 virtual void AfterTest() OVERRIDE {}
598 616
599 private: 617 private:
600 int num_commits_; 618 int num_commits_;
601 bool first_initialized_; 619 bool first_initialized_;
602 }; 620 };
603 621
604 TEST_F(LayerTreeHostContextTestLostContextFails, 622 TEST_F(LayerTreeHostContextTestLostContextFails,
605 FailReinitialize100_SingleThread) { 623 FailReinitialize100_SingleThread_DirectRenderer) {
606 times_to_fail_reinitialize_ = 100; 624 times_to_fail_reinitialize_ = 100;
607 times_to_fail_recreate_ = 0; 625 times_to_fail_recreate_ = 0;
608 times_to_lose_on_recreate_ = 0; 626 times_to_lose_on_recreate_ = 0;
609 RunTest(false); 627 RunTest(false, false);
610 } 628 }
611 629
612 TEST_F(LayerTreeHostContextTestLostContextFails, 630 TEST_F(LayerTreeHostContextTestLostContextFails,
613 FailReinitialize100_MultiThread) { 631 FailReinitialize100_SingleThread_DelegatingRenderer) {
614 times_to_fail_reinitialize_ = 100; 632 times_to_fail_reinitialize_ = 100;
615 times_to_fail_recreate_ = 0; 633 times_to_fail_recreate_ = 0;
616 times_to_lose_on_recreate_ = 0; 634 times_to_lose_on_recreate_ = 0;
617 RunTest(true); 635 RunTest(false, true);
618 } 636 }
619 637
620 TEST_F(LayerTreeHostContextTestLostContextFails, 638 TEST_F(LayerTreeHostContextTestLostContextFails,
621 FailRecreate100_SingleThread) { 639 FailReinitialize100_MultiThread_DirectRenderer) {
640 times_to_fail_reinitialize_ = 100;
641 times_to_fail_recreate_ = 0;
642 times_to_lose_on_recreate_ = 0;
643 RunTest(true, false);
644 }
645
646 TEST_F(LayerTreeHostContextTestLostContextFails,
647 FailReinitialize100_MultiThread_DelegatingRenderer) {
648 times_to_fail_reinitialize_ = 100;
649 times_to_fail_recreate_ = 0;
650 times_to_lose_on_recreate_ = 0;
651 RunTest(true, true);
652 }
653
654 TEST_F(LayerTreeHostContextTestLostContextFails,
655 FailRecreate100_SingleThread_DirectRenderer) {
622 times_to_fail_reinitialize_ = 0; 656 times_to_fail_reinitialize_ = 0;
623 times_to_fail_recreate_ = 100; 657 times_to_fail_recreate_ = 100;
624 times_to_lose_on_recreate_ = 0; 658 times_to_lose_on_recreate_ = 0;
625 RunTest(false); 659 RunTest(false, false);
626 } 660 }
627 661
628 TEST_F(LayerTreeHostContextTestLostContextFails, 662 TEST_F(LayerTreeHostContextTestLostContextFails,
629 FailRecreate100_MultiThread) { 663 FailRecreate100_SingleThread_DelegatingRenderer) {
630 times_to_fail_reinitialize_ = 0; 664 times_to_fail_reinitialize_ = 0;
631 times_to_fail_recreate_ = 100; 665 times_to_fail_recreate_ = 100;
632 times_to_lose_on_recreate_ = 0; 666 times_to_lose_on_recreate_ = 0;
633 RunTest(true); 667 RunTest(false, true);
634 } 668 }
635 669
636 TEST_F(LayerTreeHostContextTestLostContextFails, 670 TEST_F(LayerTreeHostContextTestLostContextFails,
637 LoseOnRecreate100_SingleThread) { 671 FailRecreate100_MultiThread_DirectRenderer) {
672 times_to_fail_reinitialize_ = 0;
673 times_to_fail_recreate_ = 100;
674 times_to_lose_on_recreate_ = 0;
675 RunTest(true, false);
676 }
677
678 TEST_F(LayerTreeHostContextTestLostContextFails,
679 FailRecreate100_MultiThread_DelegatingRenderer) {
680 times_to_fail_reinitialize_ = 0;
681 times_to_fail_recreate_ = 100;
682 times_to_lose_on_recreate_ = 0;
683 RunTest(true, true);
684 }
685
686 TEST_F(LayerTreeHostContextTestLostContextFails,
687 LoseOnRecreate100_SingleThread_DirectRenderer) {
638 times_to_fail_reinitialize_ = 0; 688 times_to_fail_reinitialize_ = 0;
639 times_to_fail_recreate_ = 0; 689 times_to_fail_recreate_ = 0;
640 times_to_lose_on_recreate_ = 100; 690 times_to_lose_on_recreate_ = 100;
641 RunTest(false); 691 RunTest(false, false);
642 } 692 }
643 693
644 TEST_F(LayerTreeHostContextTestLostContextFails, 694 TEST_F(LayerTreeHostContextTestLostContextFails,
645 LoseOnRecreate100_MultiThread) { 695 LoseOnRecreate100_SingleThread_DelegatingRenderer) {
646 times_to_fail_reinitialize_ = 0; 696 times_to_fail_reinitialize_ = 0;
647 times_to_fail_recreate_ = 0; 697 times_to_fail_recreate_ = 0;
648 times_to_lose_on_recreate_ = 100; 698 times_to_lose_on_recreate_ = 100;
649 RunTest(true); 699 RunTest(false, true);
700 }
701
702 TEST_F(LayerTreeHostContextTestLostContextFails,
703 LoseOnRecreate100_MultiThread_DirectRenderer) {
704 times_to_fail_reinitialize_ = 0;
705 times_to_fail_recreate_ = 0;
706 times_to_lose_on_recreate_ = 100;
707 RunTest(true, false);
708 }
709
710 TEST_F(LayerTreeHostContextTestLostContextFails,
711 LoseOnRecreate100_MultiThread_DelegatingRenderer) {
712 times_to_fail_reinitialize_ = 0;
713 times_to_fail_recreate_ = 0;
714 times_to_lose_on_recreate_ = 100;
715 RunTest(true, true);
650 } 716 }
651 717
652 class LayerTreeHostContextTestFinishAllRenderingAfterLoss 718 class LayerTreeHostContextTestFinishAllRenderingAfterLoss
653 : public LayerTreeHostContextTest { 719 : public LayerTreeHostContextTest {
654 public: 720 public:
655 virtual void BeginTest() OVERRIDE { 721 virtual void BeginTest() OVERRIDE {
656 // Lose the context until the compositor gives up on it. 722 // Lose the context until the compositor gives up on it.
657 first_initialized_ = false; 723 first_initialized_ = false;
658 times_to_lose_during_commit_ = 1; 724 times_to_lose_during_commit_ = 1;
659 times_to_fail_reinitialize_ = 10; 725 times_to_fail_reinitialize_ = 10;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 809
744 protected: 810 protected:
745 bool lose_after_evict_; 811 bool lose_after_evict_;
746 FakeContentLayerClient client_; 812 FakeContentLayerClient client_;
747 scoped_refptr<FakeContentLayer> layer_; 813 scoped_refptr<FakeContentLayer> layer_;
748 LayerTreeHostImpl* impl_host_; 814 LayerTreeHostImpl* impl_host_;
749 int num_commits_; 815 int num_commits_;
750 }; 816 };
751 817
752 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 818 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
753 LoseAfterEvict_SingleThread) { 819 LoseAfterEvict_SingleThread_DirectRenderer) {
754 lose_after_evict_ = true; 820 lose_after_evict_ = true;
755 RunTest(false); 821 RunTest(false, false);
756 } 822 }
757 823
758 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 824 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
759 LoseAfterEvict_MultiThread) { 825 LoseAfterEvict_SingleThread_DelegatingRenderer) {
760 lose_after_evict_ = true; 826 lose_after_evict_ = true;
761 RunTest(true); 827 RunTest(false, true);
762 } 828 }
763 829
764 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 830 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
765 LoseBeforeEvict_SingleThread) { 831 LoseAfterEvict_MultiThread_DirectRenderer) {
766 lose_after_evict_ = false; 832 lose_after_evict_ = true;
767 RunTest(false); 833 RunTest(true, false);
768 } 834 }
769 835
770 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures, 836 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
771 LoseBeforeEvict_MultiThread) { 837 LoseAfterEvict_MultiThread_DelegatingRenderer) {
838 lose_after_evict_ = true;
839 RunTest(true, true);
840 }
841
842 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
843 LoseBeforeEvict_SingleThread_DirectRenderer) {
772 lose_after_evict_ = false; 844 lose_after_evict_ = false;
773 RunTest(true); 845 RunTest(false, false);
846 }
847
848 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
849 LoseBeforeEvict_SingleThread_DelegatingRenderer) {
850 lose_after_evict_ = false;
851 RunTest(false, true);
852 }
853
854 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
855 LoseBeforeEvict_MultiThread_DirectRenderer) {
856 lose_after_evict_ = false;
857 RunTest(true, false);
858 }
859
860 TEST_F(LayerTreeHostContextTestLostContextAndEvictTextures,
861 LoseBeforeEvict_MultiThread_DelegatingRenderer) {
862 lose_after_evict_ = false;
863 RunTest(true, true);
774 } 864 }
775 865
776 class LayerTreeHostContextTestLostContextWhileUpdatingResources 866 class LayerTreeHostContextTestLostContextWhileUpdatingResources
777 : public LayerTreeHostContextTest { 867 : public LayerTreeHostContextTest {
778 public: 868 public:
779 LayerTreeHostContextTestLostContextWhileUpdatingResources() 869 LayerTreeHostContextTestLostContextWhileUpdatingResources()
780 : parent_(FakeContentLayer::Create(&client_)), 870 : parent_(FakeContentLayer::Create(&client_)),
781 num_children_(50), 871 num_children_(50),
782 times_to_lose_on_end_query_(3) {} 872 times_to_lose_on_end_query_(3) {}
783 873
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 1024
935 scoped_refptr<ContentLayer> content_ = ContentLayer::Create(&client_); 1025 scoped_refptr<ContentLayer> content_ = ContentLayer::Create(&client_);
936 content_->SetBounds(gfx::Size(10, 10)); 1026 content_->SetBounds(gfx::Size(10, 10));
937 content_->SetAnchorPoint(gfx::PointF()); 1027 content_->SetAnchorPoint(gfx::PointF());
938 content_->SetIsDrawable(true); 1028 content_->SetIsDrawable(true);
939 root_->AddChild(content_); 1029 root_->AddChild(content_);
940 1030
941 scoped_refptr<TextureLayer> texture_ = TextureLayer::Create(NULL); 1031 scoped_refptr<TextureLayer> texture_ = TextureLayer::Create(NULL);
942 texture_->SetBounds(gfx::Size(10, 10)); 1032 texture_->SetBounds(gfx::Size(10, 10));
943 texture_->SetAnchorPoint(gfx::PointF()); 1033 texture_->SetAnchorPoint(gfx::PointF());
944 texture_->SetTextureId(TestWebGraphicsContext3D::kExternalTextureId);
945 texture_->SetIsDrawable(true); 1034 texture_->SetIsDrawable(true);
946 root_->AddChild(texture_); 1035 root_->AddChild(texture_);
947 1036
948 scoped_refptr<ContentLayer> mask_ = ContentLayer::Create(&client_); 1037 scoped_refptr<ContentLayer> mask_ = ContentLayer::Create(&client_);
949 mask_->SetBounds(gfx::Size(10, 10)); 1038 mask_->SetBounds(gfx::Size(10, 10));
950 mask_->SetAnchorPoint(gfx::PointF()); 1039 mask_->SetAnchorPoint(gfx::PointF());
951 1040
952 scoped_refptr<ContentLayer> content_with_mask_ = 1041 scoped_refptr<ContentLayer> content_with_mask_ =
953 ContentLayer::Create(&client_); 1042 ContentLayer::Create(&client_);
954 content_with_mask_->SetBounds(gfx::Size(10, 10)); 1043 content_with_mask_->SetBounds(gfx::Size(10, 10));
955 content_with_mask_->SetAnchorPoint(gfx::PointF()); 1044 content_with_mask_->SetAnchorPoint(gfx::PointF());
956 content_with_mask_->SetIsDrawable(true); 1045 content_with_mask_->SetIsDrawable(true);
957 content_with_mask_->SetMaskLayer(mask_.get()); 1046 content_with_mask_->SetMaskLayer(mask_.get());
958 root_->AddChild(content_with_mask_); 1047 root_->AddChild(content_with_mask_);
959 1048
960 scoped_refptr<VideoLayer> video_color_ = VideoLayer::Create( 1049 scoped_refptr<VideoLayer> video_color_ = VideoLayer::Create(
961 &color_frame_provider_); 1050 &color_frame_provider_);
962 video_color_->SetBounds(gfx::Size(10, 10)); 1051 video_color_->SetBounds(gfx::Size(10, 10));
963 video_color_->SetAnchorPoint(gfx::PointF()); 1052 video_color_->SetAnchorPoint(gfx::PointF());
964 video_color_->SetIsDrawable(true); 1053 video_color_->SetIsDrawable(true);
965 root_->AddChild(video_color_); 1054 root_->AddChild(video_color_);
966 1055
967 scoped_refptr<VideoLayer> video_hw_ = VideoLayer::Create( 1056 if (!delegating_renderer()) {
968 &hw_frame_provider_); 1057 // TODO(danakj): Hardware video decode can not be transported.
969 video_hw_->SetBounds(gfx::Size(10, 10)); 1058 // crbug.com/179729
970 video_hw_->SetAnchorPoint(gfx::PointF()); 1059 scoped_refptr<VideoLayer> video_hw_ = VideoLayer::Create(
971 video_hw_->SetIsDrawable(true); 1060 &hw_frame_provider_);
972 root_->AddChild(video_hw_); 1061 video_hw_->SetBounds(gfx::Size(10, 10));
1062 video_hw_->SetAnchorPoint(gfx::PointF());
1063 video_hw_->SetIsDrawable(true);
1064 root_->AddChild(video_hw_);
973 1065
974 scoped_refptr<VideoLayer> video_scaled_hw_ = VideoLayer::Create( 1066 scoped_refptr<VideoLayer> video_scaled_hw_ = VideoLayer::Create(
975 &scaled_hw_frame_provider_); 1067 &scaled_hw_frame_provider_);
976 video_scaled_hw_->SetBounds(gfx::Size(10, 10)); 1068 video_scaled_hw_->SetBounds(gfx::Size(10, 10));
977 video_scaled_hw_->SetAnchorPoint(gfx::PointF()); 1069 video_scaled_hw_->SetAnchorPoint(gfx::PointF());
978 video_scaled_hw_->SetIsDrawable(true); 1070 video_scaled_hw_->SetIsDrawable(true);
979 root_->AddChild(video_scaled_hw_); 1071 root_->AddChild(video_scaled_hw_);
1072 }
980 1073
981 scoped_refptr<IOSurfaceLayer> io_surface_ = IOSurfaceLayer::Create(); 1074 if (!delegating_renderer()) {
982 io_surface_->SetBounds(gfx::Size(10, 10)); 1075 // TODO(danakj): IOSurface layer can not be transported. crbug.com/239335
983 io_surface_->SetAnchorPoint(gfx::PointF()); 1076 scoped_refptr<IOSurfaceLayer> io_surface_ = IOSurfaceLayer::Create();
984 io_surface_->SetIsDrawable(true); 1077 io_surface_->SetBounds(gfx::Size(10, 10));
985 io_surface_->SetIOSurfaceProperties(1, gfx::Size(10, 10)); 1078 io_surface_->SetAnchorPoint(gfx::PointF());
986 root_->AddChild(io_surface_); 1079 io_surface_->SetIsDrawable(true);
1080 io_surface_->SetIOSurfaceProperties(1, gfx::Size(10, 10));
1081 root_->AddChild(io_surface_);
1082 }
987 1083
988 // Enable the hud. 1084 // Enable the hud.
989 LayerTreeDebugState debug_state; 1085 LayerTreeDebugState debug_state;
990 debug_state.show_property_changed_rects = true; 1086 debug_state.show_property_changed_rects = true;
991 layer_tree_host()->SetDebugState(debug_state); 1087 layer_tree_host()->SetDebugState(debug_state);
992 1088
993 bool paint_scrollbar = true; 1089 bool paint_scrollbar = true;
994 bool has_thumb = true; 1090 bool has_thumb = true;
995 scoped_refptr<ScrollbarLayer> scrollbar_ = ScrollbarLayer::Create( 1091 scoped_refptr<ScrollbarLayer> scrollbar_ = ScrollbarLayer::Create(
996 FakeWebScrollbar::Create().PassAs<WebKit::WebScrollbar>(), 1092 FakeWebScrollbar::Create().PassAs<WebKit::WebScrollbar>(),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 pass_list.push_back(pass_for_quad.PassAs<RenderPass>()); 1137 pass_list.push_back(pass_for_quad.PassAs<RenderPass>());
1042 pass_list.push_back(pass.PassAs<RenderPass>()); 1138 pass_list.push_back(pass.PassAs<RenderPass>());
1043 1139
1044 // First child is the delegated layer. 1140 // First child is the delegated layer.
1045 FakeDelegatedRendererLayerImpl* delegated_impl = 1141 FakeDelegatedRendererLayerImpl* delegated_impl =
1046 static_cast<FakeDelegatedRendererLayerImpl*>( 1142 static_cast<FakeDelegatedRendererLayerImpl*>(
1047 host_impl->active_tree()->root_layer()->children()[0]); 1143 host_impl->active_tree()->root_layer()->children()[0]);
1048 delegated_impl->SetFrameDataForRenderPasses(&pass_list); 1144 delegated_impl->SetFrameDataForRenderPasses(&pass_list);
1049 EXPECT_TRUE(pass_list.empty()); 1145 EXPECT_TRUE(pass_list.empty());
1050 1146
1147 // Third child is the texture layer.
1148 TextureLayerImpl* texture_impl =
1149 static_cast<TextureLayerImpl*>(
1150 host_impl->active_tree()->root_layer()->children()[2]);
1151 texture_impl->set_texture_id(
1152 resource_provider->GraphicsContext3D()->createTexture());
1153
1154 DCHECK(resource_provider->GraphicsContext3D());
1155 ResourceProvider::ResourceId texture = resource_provider->CreateResource(
1156 gfx::Size(4, 4),
1157 resource_provider->default_resource_type(),
1158 ResourceProvider::TextureUsageAny);
1159 ResourceProvider::ScopedWriteLockGL lock(resource_provider, texture);
1160
1051 color_video_frame_ = VideoFrame::CreateColorFrame( 1161 color_video_frame_ = VideoFrame::CreateColorFrame(
1052 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta()); 1162 gfx::Size(4, 4), 0x80, 0x80, 0x80, base::TimeDelta());
1053 hw_video_frame_ = VideoFrame::WrapNativeTexture( 1163 hw_video_frame_ = VideoFrame::WrapNativeTexture(
1054 resource_provider->GraphicsContext3D()->createTexture(), 1164 lock.texture_id(),
1055 GL_TEXTURE_2D, 1165 GL_TEXTURE_2D,
1056 gfx::Size(4, 4), gfx::Rect(0, 0, 4, 4), gfx::Size(4, 4), 1166 gfx::Size(4, 4), gfx::Rect(0, 0, 4, 4), gfx::Size(4, 4),
1057 base::TimeDelta(), 1167 base::TimeDelta(),
1058 VideoFrame::ReadPixelsCB(), 1168 VideoFrame::ReadPixelsCB(),
1059 base::Closure()); 1169 base::Closure());
1060 scaled_hw_video_frame_ = VideoFrame::WrapNativeTexture( 1170 scaled_hw_video_frame_ = VideoFrame::WrapNativeTexture(
1061 resource_provider->GraphicsContext3D()->createTexture(), 1171 lock.texture_id(),
1062 GL_TEXTURE_2D, 1172 GL_TEXTURE_2D,
1063 gfx::Size(4, 4), gfx::Rect(0, 0, 3, 2), gfx::Size(4, 4), 1173 gfx::Size(4, 4), gfx::Rect(0, 0, 3, 2), gfx::Size(4, 4),
1064 base::TimeDelta(), 1174 base::TimeDelta(),
1065 VideoFrame::ReadPixelsCB(), 1175 VideoFrame::ReadPixelsCB(),
1066 base::Closure()); 1176 base::Closure());
1067 1177
1068 color_frame_provider_.set_frame(color_video_frame_); 1178 color_frame_provider_.set_frame(color_video_frame_);
1069 hw_frame_provider_.set_frame(hw_video_frame_); 1179 hw_frame_provider_.set_frame(hw_video_frame_);
1070 scaled_hw_frame_provider_.set_frame(scaled_hw_video_frame_); 1180 scaled_hw_frame_provider_.set_frame(scaled_hw_video_frame_);
1071 return; 1181 return;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 : public LayerTreeHostContextTest { 1310 : public LayerTreeHostContextTest {
1201 public: 1311 public:
1202 virtual void BeginTest() OVERRIDE { 1312 virtual void BeginTest() OVERRIDE {
1203 // This must be called immediately after creating LTH, before the first 1313 // This must be called immediately after creating LTH, before the first
1204 // OutputSurface is initialized. 1314 // OutputSurface is initialized.
1205 ASSERT_TRUE(layer_tree_host()->output_surface_lost()); 1315 ASSERT_TRUE(layer_tree_host()->output_surface_lost());
1206 1316
1207 times_output_surface_created_ = 0; 1317 times_output_surface_created_ = 0;
1208 1318
1209 char pixels[4]; 1319 char pixels[4];
1210 EXPECT_TRUE(layer_tree_host()->CompositeAndReadback( 1320 bool result = layer_tree_host()->CompositeAndReadback(
1211 &pixels, gfx::Rect(1, 1))); 1321 &pixels, gfx::Rect(1, 1));
1322 EXPECT_EQ(!delegating_renderer(), result);
1212 EXPECT_EQ(1, times_output_surface_created_); 1323 EXPECT_EQ(1, times_output_surface_created_);
1213 1324
1214 PostSetNeedsCommitToMainThread(); 1325 PostSetNeedsCommitToMainThread();
1215 } 1326 }
1216 1327
1217 virtual void DidInitializeOutputSurface(bool succeeded) OVERRIDE { 1328 virtual void DidInitializeOutputSurface(bool succeeded) OVERRIDE {
1218 EXPECT_TRUE(succeeded); 1329 EXPECT_TRUE(succeeded);
1219 ++times_output_surface_created_; 1330 ++times_output_surface_created_;
1220 } 1331 }
1221 1332
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1356 EXPECT_FALSE( 1467 EXPECT_FALSE(
1357 layer_tree_host()->CompositeAndReadback(pixels, gfx::Rect(1, 1))); 1468 layer_tree_host()->CompositeAndReadback(pixels, gfx::Rect(1, 1)));
1358 // If we've made it this far without crashing, we've succeeded. 1469 // If we've made it this far without crashing, we've succeeded.
1359 EndTest(); 1470 EndTest();
1360 } 1471 }
1361 1472
1362 private: 1473 private:
1363 int failure_count_; 1474 int failure_count_;
1364 }; 1475 };
1365 1476
1366 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestFailsToCreateSurface); 1477 SINGLE_AND_MULTI_THREAD_TEST_F(
1478 LayerTreeHostContextTestFailsToCreateSurface);
1367 1479
1368 // Not reusing LayerTreeTest because it expects creating LTH to always succeed. 1480 // Not reusing LayerTreeTest because it expects creating LTH to always succeed.
1369 class LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface 1481 class LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface
1370 : public testing::Test, 1482 : public testing::Test,
1371 public FakeLayerTreeHostClient { 1483 public FakeLayerTreeHostClient {
1372 public: 1484 public:
1373 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface() 1485 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface()
1374 : FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D) {} 1486 : FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D) {}
1375 1487
1376 // FakeLayerTreeHostClient 1488 // FakeLayerTreeHostClient implementation.
1377 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE { 1489 virtual scoped_ptr<OutputSurface> CreateOutputSurface() OVERRIDE {
1378 return scoped_ptr<OutputSurface>(); 1490 return scoped_ptr<OutputSurface>();
1379 } 1491 }
1380 1492
1381 void RunTest(bool threaded) { 1493 void RunTest(bool threaded, bool delegating_renderer) {
1382 scoped_ptr<base::Thread> impl_thread; 1494 scoped_ptr<base::Thread> impl_thread;
1383 scoped_ptr<cc::Thread> impl_ccthread(NULL); 1495 scoped_ptr<cc::Thread> impl_ccthread(NULL);
1384 if (threaded) { 1496 if (threaded) {
1385 impl_thread.reset(new base::Thread("LayerTreeTest")); 1497 impl_thread.reset(new base::Thread("LayerTreeTest"));
1386 impl_ccthread = cc::ThreadImpl::CreateForDifferentThread( 1498 impl_ccthread = cc::ThreadImpl::CreateForDifferentThread(
1387 impl_thread->message_loop_proxy()); 1499 impl_thread->message_loop_proxy());
1388 ASSERT_TRUE(impl_ccthread); 1500 ASSERT_TRUE(impl_ccthread);
1389 } 1501 }
1390 1502
1391 LayerTreeSettings settings; 1503 LayerTreeSettings settings;
1392 scoped_ptr<LayerTreeHost> layer_tree_host = 1504 scoped_ptr<LayerTreeHost> layer_tree_host =
1393 LayerTreeHost::Create(this, settings, impl_ccthread.Pass()); 1505 LayerTreeHost::Create(this, settings, impl_ccthread.Pass());
1394 EXPECT_FALSE(layer_tree_host); 1506 EXPECT_FALSE(layer_tree_host);
1395 } 1507 }
1396 }; 1508 };
1397 1509
1398 SINGLE_AND_MULTI_THREAD_TEST_F( 1510 SINGLE_AND_MULTI_THREAD_TEST_F(
1399 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface); 1511 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface);
1400 1512
1401 } // namespace 1513 } // namespace
1402 } // namespace cc 1514 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_damage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698