Chromium Code Reviews| Index: cc/trees/layer_tree_host_unittest_context.cc |
| diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc |
| index 0e15071458f3842a22cbe1913183b66eeacbc1bc..2877c4e08f7e3fe62e86973cc295244742643187 100644 |
| --- a/cc/trees/layer_tree_host_unittest_context.cc |
| +++ b/cc/trees/layer_tree_host_unittest_context.cc |
| @@ -28,6 +28,8 @@ |
| #include "cc/test/fake_output_surface.h" |
| #include "cc/test/fake_output_surface_client.h" |
| #include "cc/test/fake_painted_scrollbar_layer.h" |
| +#include "cc/test/fake_picture_layer.h" |
| +#include "cc/test/fake_picture_layer_impl.h" |
| #include "cc/test/fake_scoped_ui_resource.h" |
| #include "cc/test/fake_scrollbar.h" |
| #include "cc/test/fake_video_frame_provider.h" |
| @@ -323,11 +325,19 @@ class LayerTreeHostContextTestLostContextSucceedsWithContent |
| root_->SetBounds(gfx::Size(10, 10)); |
| root_->SetIsDrawable(true); |
| - content_ = FakeContentLayer::Create(&client_); |
| - content_->SetBounds(gfx::Size(10, 10)); |
| - content_->SetIsDrawable(true); |
| + // Paint non-solid color. |
| + SkPaint paint; |
| + paint.setColor(SkColorSetARGB(100, 80, 200, 200)); |
| + client_.add_draw_rect(gfx::Rect(0, 0, 5, 5), paint); |
| - root_->AddChild(content_); |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + layer_ = FakePictureLayer::Create(&client_); |
| + else |
| + layer_ = FakeContentLayer::Create(&client_); |
| + layer_->SetBounds(gfx::Size(10, 10)); |
| + layer_->SetIsDrawable(true); |
| + |
| + root_->AddChild(layer_); |
| layer_tree_host()->SetRootLayer(root_); |
| LayerTreeHostContextTest::SetupTree(); |
| @@ -337,27 +347,33 @@ class LayerTreeHostContextTestLostContextSucceedsWithContent |
| // Invalidate the render surface so we don't try to use a cached copy of the |
| // surface. We want to make sure to test the drawing paths for drawing to |
| // a child surface. |
| - content_->SetNeedsDisplay(); |
| + layer_->SetNeedsDisplay(); |
| LayerTreeHostContextTestLostContextSucceeds::InvalidateAndSetNeedsCommit(); |
| } |
| virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| - FakeContentLayerImpl* content_impl = static_cast<FakeContentLayerImpl*>( |
| - host_impl->active_tree()->root_layer()->children()[0]); |
| - // Even though the context was lost, we should have a resource. The |
| - // TestWebGraphicsContext3D ensures that this resource is created with |
| - // the active context. |
| - EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0)); |
| + if (!host_impl->settings().impl_side_painting) { |
| + FakeContentLayerImpl* content_impl = static_cast<FakeContentLayerImpl*>( |
| + host_impl->active_tree()->root_layer()->children()[0]); |
| + // Even though the context was lost, we should have a resource. The |
| + // TestWebGraphicsContext3D ensures that this resource is created with |
| + // the active context. |
| + EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0)); |
| + } else { |
| + FakePictureLayerImpl* picture_impl = static_cast<FakePictureLayerImpl*>( |
| + host_impl->active_tree()->root_layer()->children()[0]); |
| + EXPECT_TRUE(picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw()); |
| + } |
| } |
| protected: |
| FakeContentLayerClient client_; |
| scoped_refptr<Layer> root_; |
| - scoped_refptr<ContentLayer> content_; |
| + scoped_refptr<Layer> layer_; |
| }; |
| -// This test uses TiledLayer to check for a working context. |
| -SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( |
| +// This test uses TiledLayer and PictureLayer to check for a working context. |
| +SINGLE_AND_MULTI_THREAD_TEST_F( |
| LayerTreeHostContextTestLostContextSucceedsWithContent); |
| class LayerTreeHostContextTestCreateOutputSurfaceFails |
| @@ -437,13 +453,20 @@ class LayerTreeHostContextTestLostContextAndEvictTextures |
| public: |
| LayerTreeHostContextTestLostContextAndEvictTextures() |
| : LayerTreeHostContextTest(), |
| - layer_(FakeContentLayer::Create(&client_)), |
| impl_host_(0), |
| num_commits_(0) {} |
| virtual void SetupTree() OVERRIDE { |
| - layer_->SetBounds(gfx::Size(10, 20)); |
| - layer_tree_host()->SetRootLayer(layer_); |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + picture_layer_ = FakePictureLayer::Create(&client_); |
| + picture_layer_->SetBounds(gfx::Size(10, 20)); |
| + layer_tree_host()->SetRootLayer(picture_layer_); |
| + } else { |
| + content_layer_ = FakeContentLayer::Create(&client_); |
| + content_layer_->SetBounds(gfx::Size(10, 20)); |
| + layer_tree_host()->SetRootLayer(content_layer_); |
| + } |
| + |
| LayerTreeHostContextTest::SetupTree(); |
| } |
| @@ -464,6 +487,7 @@ class LayerTreeHostContextTestLostContextAndEvictTextures |
| void EvictTexturesOnImplThread() { |
| impl_host_->EvictTexturesForTesting(); |
| + |
|
sohanjg
2014/09/20 09:56:18
We had a check here in the prev patch for,
EXPECT
danakj
2014/09/22 14:57:33
Ah ok, it was a bad check I guess, sorry.
sohanjg
2014/09/22 15:12:12
np :)
|
| if (lose_after_evict_) |
| LoseContext(); |
| } |
| @@ -471,28 +495,37 @@ class LayerTreeHostContextTestLostContextAndEvictTextures |
| virtual void DidCommitAndDrawFrame() OVERRIDE { |
| if (num_commits_ > 1) |
|
danakj
2014/09/22 14:57:33
I don't see anything setting this variable anymore
sohanjg
2014/09/22 15:12:13
Done.
|
| return; |
| - EXPECT_TRUE(layer_->HaveBackingAt(0, 0)); |
| + if (!layer_tree_host()->settings().impl_side_painting) { |
| + EXPECT_TRUE(content_layer_->HaveBackingAt(0, 0)); |
| + } |
| PostEvictTextures(); |
| + |
| + EndTest(); |
|
danakj
2014/09/22 14:57:33
Can you move this into the num_commits_ > 1 early
sohanjg
2014/09/22 15:12:13
Done.
You mean EndTest here, as well in early-out,
danakj
2014/09/22 15:15:33
No, just in the early out. We want to end after we
sohanjg_
2014/09/22 17:12:28
Hmm..ok..it seems like few of the test goes to tim
|
| } |
| - virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| - LayerTreeHostContextTest::CommitCompleteOnThread(impl); |
| - if (num_commits_ > 1) |
| - return; |
| - ++num_commits_; |
| - if (!lose_after_evict_) |
| - LoseContext(); |
| + virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
| + if (impl->settings().impl_side_painting) { |
| + FakePictureLayerImpl* picture_impl = |
| + static_cast<FakePictureLayerImpl*>(impl->active_tree()->root_layer()); |
| + EXPECT_TRUE(picture_impl->HighResTiling()->TileAt(0, 0)->IsReadyToDraw()); |
| + } else { |
| + FakeContentLayerImpl* content_impl = |
| + static_cast<FakeContentLayerImpl*>(impl->active_tree()->root_layer()); |
| + EXPECT_TRUE(content_impl->HaveResourceForTileAt(0, 0)); |
| + } |
| + |
| impl_host_ = impl; |
| } |
| - virtual void DidInitializeOutputSurface() OVERRIDE { EndTest(); } |
| + virtual void DidInitializeOutputSurface() OVERRIDE {} |
| virtual void AfterTest() OVERRIDE {} |
| protected: |
| bool lose_after_evict_; |
| FakeContentLayerClient client_; |
| - scoped_refptr<FakeContentLayer> layer_; |
| + scoped_refptr<FakeContentLayer> content_layer_; |
| + scoped_refptr<FakePictureLayer> picture_layer_; |
| LayerTreeHostImpl* impl_host_; |
| int num_commits_; |
| }; |
| @@ -568,9 +601,7 @@ class LayerTreeHostContextTestLostContextWhileUpdatingResources |
| : public LayerTreeHostContextTest { |
| public: |
| LayerTreeHostContextTestLostContextWhileUpdatingResources() |
| - : parent_(FakeContentLayer::Create(&client_)), |
| - num_children_(50), |
| - times_to_lose_on_end_query_(3) {} |
| + : num_children_(50), times_to_lose_on_end_query_(3) {} |
| virtual scoped_ptr<TestWebGraphicsContext3D> CreateContext3d() OVERRIDE { |
| scoped_ptr<TestWebGraphicsContext3D> context = |
| @@ -583,11 +614,19 @@ class LayerTreeHostContextTestLostContextWhileUpdatingResources |
| } |
| virtual void SetupTree() OVERRIDE { |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + parent_ = FakePictureLayer::Create(&client_); |
| + else |
| + parent_ = FakeContentLayer::Create(&client_); |
| + |
| parent_->SetBounds(gfx::Size(num_children_, 1)); |
| for (int i = 0; i < num_children_; i++) { |
| - scoped_refptr<FakeContentLayer> child = |
| - FakeContentLayer::Create(&client_); |
| + scoped_refptr<Layer> child; |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + child = FakePictureLayer::Create(&client_); |
| + else |
| + child = FakeContentLayer::Create(&client_); |
| child->SetPosition(gfx::PointF(i, 0.f)); |
| child->SetBounds(gfx::Size(1, 1)); |
| parent_->AddChild(child); |
| @@ -610,7 +649,7 @@ class LayerTreeHostContextTestLostContextWhileUpdatingResources |
| private: |
| FakeContentLayerClient client_; |
| - scoped_refptr<FakeContentLayer> parent_; |
| + scoped_refptr<Layer> parent_; |
| int num_children_; |
| int times_to_lose_on_end_query_; |
| }; |
| @@ -624,9 +663,15 @@ class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { |
| : LayerTreeHostContextTest(), num_commits_(0) {} |
| virtual void SetupTree() OVERRIDE { |
| - root_ = FakeContentLayer::Create(&client_); |
| - child_ = FakeContentLayer::Create(&client_); |
| - grandchild_ = FakeContentLayer::Create(&client_); |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + root_ = FakePictureLayer::Create(&client_); |
| + child_ = FakePictureLayer::Create(&client_); |
| + grandchild_ = FakePictureLayer::Create(&client_); |
| + } else { |
| + root_ = FakeContentLayer::Create(&client_); |
| + child_ = FakeContentLayer::Create(&client_); |
| + grandchild_ = FakeContentLayer::Create(&client_); |
| + } |
| root_->AddChild(child_); |
| child_->AddChild(grandchild_); |
| @@ -640,27 +685,58 @@ class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { |
| virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
| LayerTreeHostContextTest::DidActivateTreeOnThread(host_impl); |
| - FakeContentLayerImpl* root = static_cast<FakeContentLayerImpl*>( |
| - host_impl->active_tree()->root_layer()); |
| - FakeContentLayerImpl* child = |
| - static_cast<FakeContentLayerImpl*>(root->children()[0]); |
| - FakeContentLayerImpl* grandchild = |
| - static_cast<FakeContentLayerImpl*>(child->children()[0]); |
| + FakePictureLayerImpl* root_picture = NULL; |
| + FakePictureLayerImpl* child_picture = NULL; |
| + FakePictureLayerImpl* grandchild_picture = NULL; |
| + FakeContentLayerImpl* root_content = NULL; |
| + FakeContentLayerImpl* child_content = NULL; |
| + FakeContentLayerImpl* grandchild_content = NULL; |
| + |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + root_picture = static_cast<FakePictureLayerImpl*>( |
| + host_impl->active_tree()->root_layer()); |
| + child_picture = |
| + static_cast<FakePictureLayerImpl*>(root_picture->children()[0]); |
| + grandchild_picture = |
| + static_cast<FakePictureLayerImpl*>(child_picture->children()[0]); |
| + |
| + } else { |
| + root_content = static_cast<FakeContentLayerImpl*>( |
| + host_impl->active_tree()->root_layer()); |
| + child_content = |
| + static_cast<FakeContentLayerImpl*>(root_content->children()[0]); |
| + grandchild_content = |
| + static_cast<FakeContentLayerImpl*>(child_content->children()[0]); |
| + } |
| ++num_commits_; |
| switch (num_commits_) { |
| case 1: |
| - EXPECT_EQ(0u, root->lost_output_surface_count()); |
| - EXPECT_EQ(0u, child->lost_output_surface_count()); |
| - EXPECT_EQ(0u, grandchild->lost_output_surface_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + EXPECT_EQ(0u, root_picture->release_resources_count()); |
| + EXPECT_EQ(0u, child_picture->release_resources_count()); |
| + EXPECT_EQ(0u, grandchild_picture->release_resources_count()); |
| + } else { |
| + EXPECT_EQ(0u, root_content->lost_output_surface_count()); |
| + EXPECT_EQ(0u, child_content->lost_output_surface_count()); |
| + EXPECT_EQ(0u, grandchild_content->lost_output_surface_count()); |
| + } |
| + |
| // Lose the context and struggle to recreate it. |
| LoseContext(); |
| times_to_fail_create_ = 1; |
| break; |
| case 2: |
| - EXPECT_GE(1u, root->lost_output_surface_count()); |
| - EXPECT_GE(1u, child->lost_output_surface_count()); |
| - EXPECT_GE(1u, grandchild->lost_output_surface_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + EXPECT_TRUE(root_picture->release_resources_count()); |
| + EXPECT_TRUE(child_picture->release_resources_count()); |
| + EXPECT_TRUE(grandchild_picture->release_resources_count()); |
| + } else { |
| + EXPECT_TRUE(root_content->lost_output_surface_count()); |
| + EXPECT_TRUE(child_content->lost_output_surface_count()); |
| + EXPECT_TRUE(grandchild_content->lost_output_surface_count()); |
| + } |
| + |
| EndTest(); |
| break; |
| default: |
| @@ -674,9 +750,9 @@ class LayerTreeHostContextTestLayersNotified : public LayerTreeHostContextTest { |
| int num_commits_; |
| FakeContentLayerClient client_; |
| - scoped_refptr<FakeContentLayer> root_; |
| - scoped_refptr<FakeContentLayer> child_; |
| - scoped_refptr<FakeContentLayer> grandchild_; |
| + scoped_refptr<Layer> root_; |
| + scoped_refptr<Layer> child_; |
| + scoped_refptr<Layer> grandchild_; |
| }; |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestLayersNotified); |
| @@ -754,10 +830,14 @@ class LayerTreeHostContextTestDontUseLostResources |
| delegated->SetIsDrawable(true); |
| root->AddChild(delegated); |
| - scoped_refptr<ContentLayer> content = ContentLayer::Create(&client_); |
| - content->SetBounds(gfx::Size(10, 10)); |
| - content->SetIsDrawable(true); |
| - root->AddChild(content); |
| + scoped_refptr<Layer> layer; |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + layer = PictureLayer::Create(&client_); |
| + else |
| + layer = ContentLayer::Create(&client_); |
| + layer->SetBounds(gfx::Size(10, 10)); |
| + layer->SetIsDrawable(true); |
| + root->AddChild(layer); |
| scoped_refptr<TextureLayer> texture = TextureLayer::CreateForMailbox(NULL); |
| texture->SetBounds(gfx::Size(10, 10)); |
| @@ -769,15 +849,22 @@ class LayerTreeHostContextTestDontUseLostResources |
| EmptyReleaseCallback))); |
| root->AddChild(texture); |
| - scoped_refptr<ContentLayer> mask = ContentLayer::Create(&client_); |
| + scoped_refptr<Layer> mask; |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + mask = PictureLayer::Create(&client_); |
| + else |
| + mask = ContentLayer::Create(&client_); |
| mask->SetBounds(gfx::Size(10, 10)); |
| - scoped_refptr<ContentLayer> content_with_mask = |
| - ContentLayer::Create(&client_); |
| - content_with_mask->SetBounds(gfx::Size(10, 10)); |
| - content_with_mask->SetIsDrawable(true); |
| - content_with_mask->SetMaskLayer(mask.get()); |
| - root->AddChild(content_with_mask); |
| + scoped_refptr<Layer> layer_with_mask; |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + layer_with_mask = PictureLayer::Create(&client_); |
| + else |
| + layer_with_mask = ContentLayer::Create(&client_); |
| + layer_with_mask->SetBounds(gfx::Size(10, 10)); |
| + layer_with_mask->SetIsDrawable(true); |
| + layer_with_mask->SetMaskLayer(mask.get()); |
| + root->AddChild(layer_with_mask); |
| scoped_refptr<VideoLayer> video_color = |
| VideoLayer::Create(&color_frame_provider_, media::VIDEO_ROTATION_0); |
| @@ -838,7 +925,7 @@ class LayerTreeHostContextTestDontUseLostResources |
| scoped_refptr<PaintedScrollbarLayer> scrollbar = |
| PaintedScrollbarLayer::Create( |
| - scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), content->id()); |
| + scoped_ptr<Scrollbar>(new FakeScrollbar).Pass(), layer->id()); |
| scrollbar->SetBounds(gfx::Size(10, 10)); |
| scrollbar->SetIsDrawable(true); |
| root->AddChild(scrollbar); |
| @@ -1411,12 +1498,19 @@ class LayerTreeHostContextTestSurfaceCreateCallback |
| : public LayerTreeHostContextTest { |
| public: |
| LayerTreeHostContextTestSurfaceCreateCallback() |
| - : LayerTreeHostContextTest(), |
| - layer_(FakeContentLayer::Create(&client_)) {} |
| + : LayerTreeHostContextTest() {} |
| virtual void SetupTree() OVERRIDE { |
| - layer_->SetBounds(gfx::Size(10, 20)); |
| - layer_tree_host()->SetRootLayer(layer_); |
| + if (layer_tree_host()->settings().impl_side_painting) { |
| + picture_layer_ = FakePictureLayer::Create(&client_); |
| + picture_layer_->SetBounds(gfx::Size(10, 20)); |
| + layer_tree_host()->SetRootLayer(picture_layer_); |
| + } else { |
| + content_layer_ = FakeContentLayer::Create(&client_); |
| + content_layer_->SetBounds(gfx::Size(10, 20)); |
| + layer_tree_host()->SetRootLayer(content_layer_); |
| + } |
| + |
| LayerTreeHostContextTest::SetupTree(); |
| } |
| @@ -1425,18 +1519,30 @@ class LayerTreeHostContextTestSurfaceCreateCallback |
| virtual void DidCommit() OVERRIDE { |
| switch (layer_tree_host()->source_frame_number()) { |
| case 1: |
| - EXPECT_EQ(1u, layer_->output_surface_created_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + EXPECT_EQ(1u, picture_layer_->output_surface_created_count()); |
| + else |
| + EXPECT_EQ(1u, content_layer_->output_surface_created_count()); |
| layer_tree_host()->SetNeedsCommit(); |
| break; |
| case 2: |
| - EXPECT_EQ(1u, layer_->output_surface_created_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + EXPECT_EQ(1u, picture_layer_->output_surface_created_count()); |
| + else |
| + EXPECT_EQ(1u, content_layer_->output_surface_created_count()); |
| layer_tree_host()->SetNeedsCommit(); |
| break; |
| case 3: |
| - EXPECT_EQ(1u, layer_->output_surface_created_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + EXPECT_EQ(1u, picture_layer_->output_surface_created_count()); |
| + else |
| + EXPECT_EQ(1u, content_layer_->output_surface_created_count()); |
| break; |
| case 4: |
| - EXPECT_EQ(2u, layer_->output_surface_created_count()); |
| + if (layer_tree_host()->settings().impl_side_painting) |
| + EXPECT_EQ(2u, picture_layer_->output_surface_created_count()); |
| + else |
| + EXPECT_EQ(2u, content_layer_->output_surface_created_count()); |
| layer_tree_host()->SetNeedsCommit(); |
| break; |
| } |
| @@ -1462,7 +1568,8 @@ class LayerTreeHostContextTestSurfaceCreateCallback |
| protected: |
| FakeContentLayerClient client_; |
| - scoped_refptr<FakeContentLayer> layer_; |
| + scoped_refptr<FakePictureLayer> picture_layer_; |
| + scoped_refptr<FakeContentLayer> content_layer_; |
| }; |
| SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback); |