OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "cc/layers/heads_up_display_layer.h" | 9 #include "cc/layers/heads_up_display_layer.h" |
10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 223 |
224 recovered_context_ = false; | 224 recovered_context_ = false; |
225 if (NextTestCase()) | 225 if (NextTestCase()) |
226 InvalidateAndSetNeedsCommit(); | 226 InvalidateAndSetNeedsCommit(); |
227 else | 227 else |
228 EndTest(); | 228 EndTest(); |
229 } | 229 } |
230 | 230 |
231 virtual void InvalidateAndSetNeedsCommit() { | 231 virtual void InvalidateAndSetNeedsCommit() { |
232 // Cause damage so we try to draw. | 232 // Cause damage so we try to draw. |
233 layer_tree_host()->root_layer()->SetNeedsDisplay(); | 233 layer_tree()->root_layer()->SetNeedsDisplay(); |
234 layer_tree_host()->SetNeedsCommit(); | 234 layer_tree_host()->SetNeedsCommit(); |
235 } | 235 } |
236 | 236 |
237 bool NextTestCase() { | 237 bool NextTestCase() { |
238 static const TestCase kTests[] = { | 238 static const TestCase kTests[] = { |
239 // Losing the context and failing to recreate it (or losing it again | 239 // Losing the context and failing to recreate it (or losing it again |
240 // immediately) a small number of times should succeed. | 240 // immediately) a small number of times should succeed. |
241 { | 241 { |
242 1, // times_to_lose_during_commit | 242 1, // times_to_lose_during_commit |
243 0, // times_to_lose_during_draw | 243 0, // times_to_lose_during_draw |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 SkPaint paint; | 627 SkPaint paint; |
628 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); | 628 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); |
629 client_.add_draw_rect(gfx::Rect(5, 5), paint); | 629 client_.add_draw_rect(gfx::Rect(5, 5), paint); |
630 | 630 |
631 layer_ = FakePictureLayer::Create(&client_); | 631 layer_ = FakePictureLayer::Create(&client_); |
632 layer_->SetBounds(gfx::Size(10, 10)); | 632 layer_->SetBounds(gfx::Size(10, 10)); |
633 layer_->SetIsDrawable(true); | 633 layer_->SetIsDrawable(true); |
634 | 634 |
635 root_->AddChild(layer_); | 635 root_->AddChild(layer_); |
636 | 636 |
637 layer_tree_host()->SetRootLayer(root_); | 637 layer_tree()->SetRootLayer(root_); |
638 LayerTreeHostContextTest::SetupTree(); | 638 LayerTreeHostContextTest::SetupTree(); |
639 client_.set_bounds(root_->bounds()); | 639 client_.set_bounds(root_->bounds()); |
640 } | 640 } |
641 | 641 |
642 void InvalidateAndSetNeedsCommit() override { | 642 void InvalidateAndSetNeedsCommit() override { |
643 // Invalidate the render surface so we don't try to use a cached copy of the | 643 // Invalidate the render surface so we don't try to use a cached copy of the |
644 // surface. We want to make sure to test the drawing paths for drawing to | 644 // surface. We want to make sure to test the drawing paths for drawing to |
645 // a child surface. | 645 // a child surface. |
646 layer_->SetNeedsDisplay(); | 646 layer_->SetNeedsDisplay(); |
647 LayerTreeHostContextTestLostContextSucceeds::InvalidateAndSetNeedsCommit(); | 647 LayerTreeHostContextTestLostContextSucceeds::InvalidateAndSetNeedsCommit(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 void SetupTree() override { | 704 void SetupTree() override { |
705 // Paint non-solid color. | 705 // Paint non-solid color. |
706 SkPaint paint; | 706 SkPaint paint; |
707 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); | 707 paint.setColor(SkColorSetARGB(100, 80, 200, 200)); |
708 client_.add_draw_rect(gfx::Rect(5, 5), paint); | 708 client_.add_draw_rect(gfx::Rect(5, 5), paint); |
709 | 709 |
710 scoped_refptr<FakePictureLayer> picture_layer = | 710 scoped_refptr<FakePictureLayer> picture_layer = |
711 FakePictureLayer::Create(&client_); | 711 FakePictureLayer::Create(&client_); |
712 picture_layer->SetBounds(gfx::Size(10, 20)); | 712 picture_layer->SetBounds(gfx::Size(10, 20)); |
713 client_.set_bounds(picture_layer->bounds()); | 713 client_.set_bounds(picture_layer->bounds()); |
714 layer_tree_host()->SetRootLayer(picture_layer); | 714 layer_tree()->SetRootLayer(picture_layer); |
715 | 715 |
716 LayerTreeHostContextTest::SetupTree(); | 716 LayerTreeHostContextTest::SetupTree(); |
717 } | 717 } |
718 | 718 |
719 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 719 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
720 | 720 |
721 void PostEvictTextures() { | 721 void PostEvictTextures() { |
722 if (HasImplThread()) { | 722 if (HasImplThread()) { |
723 ImplThreadTaskRunner()->PostTask( | 723 ImplThreadTaskRunner()->PostTask( |
724 FROM_HERE, | 724 FROM_HERE, |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 : LayerTreeHostContextTest(), num_commits_(0) {} | 812 : LayerTreeHostContextTest(), num_commits_(0) {} |
813 | 813 |
814 void SetupTree() override { | 814 void SetupTree() override { |
815 root_ = FakePictureLayer::Create(&client_); | 815 root_ = FakePictureLayer::Create(&client_); |
816 child_ = FakePictureLayer::Create(&client_); | 816 child_ = FakePictureLayer::Create(&client_); |
817 grandchild_ = FakePictureLayer::Create(&client_); | 817 grandchild_ = FakePictureLayer::Create(&client_); |
818 | 818 |
819 root_->AddChild(child_); | 819 root_->AddChild(child_); |
820 child_->AddChild(grandchild_); | 820 child_->AddChild(grandchild_); |
821 | 821 |
822 layer_tree_host()->SetRootLayer(root_); | 822 layer_tree()->SetRootLayer(root_); |
823 LayerTreeHostContextTest::SetupTree(); | 823 LayerTreeHostContextTest::SetupTree(); |
824 client_.set_bounds(root_->bounds()); | 824 client_.set_bounds(root_->bounds()); |
825 } | 825 } |
826 | 826 |
827 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 827 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
828 | 828 |
829 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 829 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
830 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl); | 830 LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl); |
831 | 831 |
832 FakePictureLayerImpl* root_picture = NULL; | 832 FakePictureLayerImpl* root_picture = NULL; |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1005 debug_state.show_property_changed_rects = true; | 1005 debug_state.show_property_changed_rects = true; |
1006 layer_tree_host()->SetDebugState(debug_state); | 1006 layer_tree_host()->SetDebugState(debug_state); |
1007 | 1007 |
1008 scoped_refptr<PaintedScrollbarLayer> scrollbar = | 1008 scoped_refptr<PaintedScrollbarLayer> scrollbar = |
1009 PaintedScrollbarLayer::Create( | 1009 PaintedScrollbarLayer::Create( |
1010 std::unique_ptr<Scrollbar>(new FakeScrollbar), layer->id()); | 1010 std::unique_ptr<Scrollbar>(new FakeScrollbar), layer->id()); |
1011 scrollbar->SetBounds(gfx::Size(10, 10)); | 1011 scrollbar->SetBounds(gfx::Size(10, 10)); |
1012 scrollbar->SetIsDrawable(true); | 1012 scrollbar->SetIsDrawable(true); |
1013 root->AddChild(scrollbar); | 1013 root->AddChild(scrollbar); |
1014 | 1014 |
1015 layer_tree_host()->SetRootLayer(root); | 1015 layer_tree()->SetRootLayer(root); |
1016 LayerTreeHostContextTest::SetupTree(); | 1016 LayerTreeHostContextTest::SetupTree(); |
1017 } | 1017 } |
1018 | 1018 |
1019 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1019 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1020 | 1020 |
1021 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 1021 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
1022 LayerTreeHostContextTest::CommitCompleteOnThread(host_impl); | 1022 LayerTreeHostContextTest::CommitCompleteOnThread(host_impl); |
1023 | 1023 |
1024 if (host_impl->active_tree()->source_frame_number() == 3) { | 1024 if (host_impl->active_tree()->source_frame_number() == 3) { |
1025 // On the third commit we're recovering from context loss. Hardware | 1025 // On the third commit we're recovering from context loss. Hardware |
(...skipping 19 matching lines...) Expand all Loading... |
1045 // This will get called twice: | 1045 // This will get called twice: |
1046 // First when we create the initial output surface... | 1046 // First when we create the initial output surface... |
1047 if (layer_tree_host()->source_frame_number() > 0) { | 1047 if (layer_tree_host()->source_frame_number() > 0) { |
1048 // ... and then again after we forced the context to be lost. | 1048 // ... and then again after we forced the context to be lost. |
1049 lost_context_ = true; | 1049 lost_context_ = true; |
1050 } | 1050 } |
1051 LayerTreeHostContextTest::RequestNewOutputSurface(); | 1051 LayerTreeHostContextTest::RequestNewOutputSurface(); |
1052 } | 1052 } |
1053 | 1053 |
1054 void DidCommitAndDrawFrame() override { | 1054 void DidCommitAndDrawFrame() override { |
1055 ASSERT_TRUE(layer_tree_host()->hud_layer()); | 1055 ASSERT_TRUE(layer_tree()->hud_layer()); |
1056 // End the test once we know the 3nd frame drew. | 1056 // End the test once we know the 3nd frame drew. |
1057 if (layer_tree_host()->source_frame_number() < 5) { | 1057 if (layer_tree_host()->source_frame_number() < 5) { |
1058 layer_tree_host()->root_layer()->SetNeedsDisplay(); | 1058 layer_tree()->root_layer()->SetNeedsDisplay(); |
1059 layer_tree_host()->SetNeedsCommit(); | 1059 layer_tree_host()->SetNeedsCommit(); |
1060 } else { | 1060 } else { |
1061 EndTest(); | 1061 EndTest(); |
1062 } | 1062 } |
1063 } | 1063 } |
1064 | 1064 |
1065 void AfterTest() override { EXPECT_TRUE(lost_context_); } | 1065 void AfterTest() override { EXPECT_TRUE(lost_context_); } |
1066 | 1066 |
1067 private: | 1067 private: |
1068 FakeContentLayerClient client_; | 1068 FakeContentLayerClient client_; |
(...skipping 22 matching lines...) Expand all Loading... |
1091 scoped_refptr<Layer> root = Layer::Create(); | 1091 scoped_refptr<Layer> root = Layer::Create(); |
1092 root->SetBounds(gfx::Size(10, 10)); | 1092 root->SetBounds(gfx::Size(10, 10)); |
1093 root->SetIsDrawable(true); | 1093 root->SetIsDrawable(true); |
1094 | 1094 |
1095 scoped_refptr<PictureLayer> picture = PictureLayer::Create(&client_); | 1095 scoped_refptr<PictureLayer> picture = PictureLayer::Create(&client_); |
1096 picture->SetBounds(gfx::Size(10, 10)); | 1096 picture->SetBounds(gfx::Size(10, 10)); |
1097 client_.set_bounds(picture->bounds()); | 1097 client_.set_bounds(picture->bounds()); |
1098 picture->SetIsDrawable(true); | 1098 picture->SetIsDrawable(true); |
1099 root->AddChild(picture); | 1099 root->AddChild(picture); |
1100 | 1100 |
1101 layer_tree_host()->SetRootLayer(root); | 1101 layer_tree()->SetRootLayer(root); |
1102 LayerTreeHostContextTest::SetupTree(); | 1102 LayerTreeHostContextTest::SetupTree(); |
1103 } | 1103 } |
1104 | 1104 |
1105 void BeginTest() override { | 1105 void BeginTest() override { |
1106 times_to_lose_during_commit_ = 1; | 1106 times_to_lose_during_commit_ = 1; |
1107 PostSetNeedsCommitToMainThread(); | 1107 PostSetNeedsCommitToMainThread(); |
1108 } | 1108 } |
1109 | 1109 |
1110 void AfterTest() override {} | 1110 void AfterTest() override {} |
1111 | 1111 |
1112 void DidInitializeOutputSurface() override { EndTest(); } | 1112 void DidInitializeOutputSurface() override { EndTest(); } |
1113 | 1113 |
1114 private: | 1114 private: |
1115 FakeContentLayerClient client_; | 1115 FakeContentLayerClient client_; |
1116 }; | 1116 }; |
1117 | 1117 |
1118 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestImplSidePainting); | 1118 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestImplSidePainting); |
1119 | 1119 |
1120 class ScrollbarLayerLostContext : public LayerTreeHostContextTest { | 1120 class ScrollbarLayerLostContext : public LayerTreeHostContextTest { |
1121 public: | 1121 public: |
1122 ScrollbarLayerLostContext() : commits_(0) {} | 1122 ScrollbarLayerLostContext() : commits_(0) {} |
1123 | 1123 |
1124 void BeginTest() override { | 1124 void BeginTest() override { |
1125 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 1125 scoped_refptr<Layer> scroll_layer = Layer::Create(); |
1126 scrollbar_layer_ = | 1126 scrollbar_layer_ = |
1127 FakePaintedScrollbarLayer::Create(false, true, scroll_layer->id()); | 1127 FakePaintedScrollbarLayer::Create(false, true, scroll_layer->id()); |
1128 scrollbar_layer_->SetBounds(gfx::Size(10, 100)); | 1128 scrollbar_layer_->SetBounds(gfx::Size(10, 100)); |
1129 layer_tree_host()->root_layer()->AddChild(scrollbar_layer_); | 1129 layer_tree()->root_layer()->AddChild(scrollbar_layer_); |
1130 layer_tree_host()->root_layer()->AddChild(scroll_layer); | 1130 layer_tree()->root_layer()->AddChild(scroll_layer); |
1131 PostSetNeedsCommitToMainThread(); | 1131 PostSetNeedsCommitToMainThread(); |
1132 } | 1132 } |
1133 | 1133 |
1134 void AfterTest() override {} | 1134 void AfterTest() override {} |
1135 | 1135 |
1136 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { | 1136 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override { |
1137 LayerTreeHostContextTest::CommitCompleteOnThread(impl); | 1137 LayerTreeHostContextTest::CommitCompleteOnThread(impl); |
1138 | 1138 |
1139 ++commits_; | 1139 ++commits_; |
1140 switch (commits_) { | 1140 switch (commits_) { |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 void AfterTest() override {} | 1578 void AfterTest() override {} |
1579 | 1579 |
1580 bool deferred_; | 1580 bool deferred_; |
1581 }; | 1581 }; |
1582 | 1582 |
1583 SINGLE_AND_MULTI_THREAD_TEST_F( | 1583 SINGLE_AND_MULTI_THREAD_TEST_F( |
1584 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); | 1584 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); |
1585 | 1585 |
1586 } // namespace | 1586 } // namespace |
1587 } // namespace cc | 1587 } // namespace cc |
OLD | NEW |