|  | // Copyright 2014 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "cc/layers/delegated_renderer_layer.h" | 
|  |  | 
|  | #include "cc/layers/delegated_frame_provider.h" | 
|  | #include "cc/layers/delegated_frame_resource_collection.h" | 
|  | #include "cc/layers/solid_color_layer.h" | 
|  | #include "cc/output/delegated_frame_data.h" | 
|  | #include "cc/test/fake_delegated_renderer_layer.h" | 
|  | #include "cc/test/fake_layer_tree_host.h" | 
|  | #include "cc/test/fake_proxy.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace cc { | 
|  | namespace { | 
|  |  | 
|  | class DelegatedRendererLayerTest : public testing::Test { | 
|  | public: | 
|  | DelegatedRendererLayerTest() | 
|  | : proxy_(), host_client_(FakeLayerTreeHostClient::DIRECT_3D) { | 
|  | LayerTreeSettings settings; | 
|  | settings.minimum_occlusion_tracking_size = gfx::Size(); | 
|  |  | 
|  | host_impl_ = FakeLayerTreeHost::Create(&host_client_, settings); | 
|  | host_impl_->SetViewportSize(gfx::Size(10, 10)); | 
|  | } | 
|  |  | 
|  | protected: | 
|  | FakeProxy proxy_; | 
|  | FakeLayerTreeHostClient host_client_; | 
|  | TestSharedBitmapManager shared_bitmap_manager_; | 
|  | scoped_ptr<LayerTreeHost> host_impl_; | 
|  | }; | 
|  |  | 
|  | class DelegatedRendererLayerTestSimple : public DelegatedRendererLayerTest { | 
|  | public: | 
|  | DelegatedRendererLayerTestSimple() : DelegatedRendererLayerTest() { | 
|  | scoped_ptr<RenderPass> root_pass(RenderPass::Create()); | 
|  | root_pass->SetNew( | 
|  | RenderPassId(1, 1), gfx::Rect(1, 1), gfx::Rect(1, 1), gfx::Transform()); | 
|  | scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 
|  | frame_data->render_pass_list.push_back(root_pass.Pass()); | 
|  | resources_ = new DelegatedFrameResourceCollection; | 
|  | provider_ = new DelegatedFrameProvider(resources_, frame_data.Pass()); | 
|  | root_layer_ = SolidColorLayer::Create(); | 
|  | layer_before_ = SolidColorLayer::Create(); | 
|  | delegated_renderer_layer_ = | 
|  | FakeDelegatedRendererLayer::Create(provider_.get()); | 
|  | } | 
|  |  | 
|  | protected: | 
|  | scoped_refptr<Layer> root_layer_; | 
|  | scoped_refptr<Layer> layer_before_; | 
|  | scoped_refptr<DelegatedRendererLayer> delegated_renderer_layer_; | 
|  | scoped_refptr<DelegatedFrameResourceCollection> resources_; | 
|  | scoped_refptr<DelegatedFrameProvider> provider_; | 
|  | }; | 
|  |  | 
|  | TEST_F(DelegatedRendererLayerTestSimple, DelegatedManyDescendants) { | 
|  | EXPECT_EQ(0, root_layer_->NumDescendantsThatDrawContent()); | 
|  | root_layer_->AddChild(layer_before_); | 
|  | EXPECT_EQ(0, root_layer_->NumDescendantsThatDrawContent()); | 
|  | layer_before_->SetIsDrawable(true); | 
|  | EXPECT_EQ(1, root_layer_->NumDescendantsThatDrawContent()); | 
|  | EXPECT_EQ(0, layer_before_->NumDescendantsThatDrawContent()); | 
|  | layer_before_->AddChild(delegated_renderer_layer_); | 
|  | EXPECT_EQ(0, layer_before_->NumDescendantsThatDrawContent()); | 
|  | EXPECT_EQ(0, delegated_renderer_layer_->NumDescendantsThatDrawContent()); | 
|  | EXPECT_EQ(1, root_layer_->NumDescendantsThatDrawContent()); | 
|  | delegated_renderer_layer_->SetIsDrawable(true); | 
|  | EXPECT_EQ(1000, delegated_renderer_layer_->NumDescendantsThatDrawContent()); | 
|  | EXPECT_EQ(1001, layer_before_->NumDescendantsThatDrawContent()); | 
|  | EXPECT_EQ(1002, root_layer_->NumDescendantsThatDrawContent()); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  | }  // namespace cc |