1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "cc/layers/delegated_renderer_layer.h"
7 #include "cc/layers/delegated_frame_provider.h"
8 #include "cc/layers/delegated_frame_resource_collection.h"
9 #include "cc/layers/solid_color_layer.h"
10 #include "cc/output/delegated_frame_data.h"
11 #include "cc/test/fake_delegated_renderer_layer.h"
12 #include "cc/test/fake_layer_tree_host.h"
13 #include "cc/test/fake_proxy.h"
14 #include "testing/gtest/include/gtest/gtest.h"
19 class DelegatedRendererLayerTest
: public testing::Test
{
21 DelegatedRendererLayerTest() : proxy_() {
22 LayerTreeSettings settings
;
23 settings
.minimum_occlusion_tracking_size
= gfx::Size();
25 host_impl_
= FakeLayerTreeHost::Create(settings
);
26 host_impl_
->SetViewportSize(gfx::Size(10, 10));
31 TestSharedBitmapManager shared_bitmap_manager_
;
32 scoped_ptr
<LayerTreeHost
> host_impl_
;
35 class DelegatedRendererLayerTestSimple
: public DelegatedRendererLayerTest
{
37 DelegatedRendererLayerTestSimple() : DelegatedRendererLayerTest() {
38 scoped_ptr
<RenderPass
> root_pass(RenderPass::Create());
40 RenderPassId(1, 1), gfx::Rect(1, 1), gfx::Rect(1, 1), gfx::Transform());
41 scoped_ptr
<DelegatedFrameData
> frame_data(new DelegatedFrameData
);
42 frame_data
->render_pass_list
.push_back(root_pass
.Pass());
43 resources_
= new DelegatedFrameResourceCollection
;
44 provider_
= new DelegatedFrameProvider(resources_
, frame_data
.Pass());
45 root_layer_
= SolidColorLayer::Create();
46 layer_before_
= SolidColorLayer::Create();
47 delegated_renderer_layer_
= FakeDelegatedRendererLayer::Create(provider_
);
51 scoped_refptr
<Layer
> root_layer_
;
52 scoped_refptr
<Layer
> layer_before_
;
53 scoped_refptr
<DelegatedRendererLayer
> delegated_renderer_layer_
;
54 scoped_refptr
<DelegatedFrameResourceCollection
> resources_
;
55 scoped_refptr
<DelegatedFrameProvider
> provider_
;
58 TEST_F(DelegatedRendererLayerTestSimple
, DelegatedManyDescendants
) {
59 EXPECT_EQ(0, root_layer_
->NumDescendantsThatDrawContent());
60 root_layer_
->AddChild(layer_before_
);
61 EXPECT_EQ(0, root_layer_
->NumDescendantsThatDrawContent());
62 layer_before_
->SetIsDrawable(true);
63 EXPECT_EQ(1, root_layer_
->NumDescendantsThatDrawContent());
64 EXPECT_EQ(0, layer_before_
->NumDescendantsThatDrawContent());
65 layer_before_
->AddChild(delegated_renderer_layer_
);
66 EXPECT_EQ(0, layer_before_
->NumDescendantsThatDrawContent());
67 EXPECT_EQ(0, delegated_renderer_layer_
->NumDescendantsThatDrawContent());
68 EXPECT_EQ(1, root_layer_
->NumDescendantsThatDrawContent());
69 delegated_renderer_layer_
->SetIsDrawable(true);
70 EXPECT_EQ(1000, delegated_renderer_layer_
->NumDescendantsThatDrawContent());
71 EXPECT_EQ(1001, layer_before_
->NumDescendantsThatDrawContent());
72 EXPECT_EQ(1002, root_layer_
->NumDescendantsThatDrawContent());