OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 | 6 |
7 #include "cc/layers/append_quads_data.h" | 7 #include "cc/layers/append_quads_data.h" |
8 #include "cc/layers/ui_resource_layer_impl.h" | 8 #include "cc/layers/ui_resource_layer_impl.h" |
9 #include "cc/quads/draw_quad.h" | 9 #include "cc/quads/draw_quad.h" |
10 #include "cc/resources/ui_resource_bitmap.h" | 10 #include "cc/resources/ui_resource_bitmap.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 layer->test_properties()->force_render_surface = true; | 37 layer->test_properties()->force_render_surface = true; |
38 | 38 |
39 UIResourceBitmap bitmap(bitmap_size, opaque); | 39 UIResourceBitmap bitmap(bitmap_size, opaque); |
40 | 40 |
41 host_impl->CreateUIResource(uid, bitmap); | 41 host_impl->CreateUIResource(uid, bitmap); |
42 layer->SetUIResourceId(uid); | 42 layer->SetUIResourceId(uid); |
43 | 43 |
44 return layer; | 44 return layer; |
45 } | 45 } |
46 | 46 |
47 void QuadSizeTest(std::unique_ptr<UIResourceLayerImpl> layer, | 47 void QuadSizeTest(FakeUIResourceLayerTreeHostImpl* host_impl, |
| 48 std::unique_ptr<UIResourceLayerImpl> layer, |
48 size_t expected_quad_size) { | 49 size_t expected_quad_size) { |
| 50 host_impl->active_tree()->SetRootLayerForTesting(std::move(layer)); |
| 51 host_impl->active_tree()->BuildPropertyTreesForTesting(); |
| 52 |
49 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); | 53 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
50 | 54 |
51 AppendQuadsData data; | 55 AppendQuadsData data; |
52 layer->AppendQuads(render_pass.get(), &data); | 56 host_impl->active_tree()->root_layer_for_testing()->AppendQuads( |
| 57 render_pass.get(), &data); |
53 | 58 |
54 // Verify quad rects | 59 // Verify quad rects |
55 const QuadList& quads = render_pass->quad_list; | 60 const QuadList& quads = render_pass->quad_list; |
56 EXPECT_EQ(expected_quad_size, quads.size()); | 61 EXPECT_EQ(expected_quad_size, quads.size()); |
| 62 |
| 63 host_impl->active_tree()->DetachLayers(); |
57 } | 64 } |
58 | 65 |
59 TEST(UIResourceLayerImplTest, VerifyDrawQuads) { | 66 TEST(UIResourceLayerImplTest, VerifyDrawQuads) { |
60 FakeImplTaskRunnerProvider task_runner_provider; | 67 FakeImplTaskRunnerProvider task_runner_provider; |
61 TestTaskGraphRunner task_graph_runner; | 68 TestTaskGraphRunner task_graph_runner; |
62 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = | 69 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = |
63 FakeCompositorFrameSink::Create3d(); | 70 FakeCompositorFrameSink::Create3d(); |
64 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, | 71 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, |
65 &task_graph_runner); | 72 &task_graph_runner); |
66 host_impl.SetVisible(true); | 73 host_impl.SetVisible(true); |
67 host_impl.InitializeRenderer(compositor_frame_sink.get()); | 74 host_impl.InitializeRenderer(compositor_frame_sink.get()); |
68 | 75 |
69 // Make sure we're appending quads when there are valid values. | 76 // Make sure we're appending quads when there are valid values. |
70 gfx::Size bitmap_size(100, 100); | 77 gfx::Size bitmap_size(100, 100); |
71 gfx::Size layer_size(100, 100); | 78 gfx::Size layer_size(100, 100); |
72 size_t expected_quad_size = 1; | 79 size_t expected_quad_size = 1; |
73 bool opaque = true; | 80 bool opaque = true; |
74 UIResourceId uid = 1; | 81 UIResourceId uid = 1; |
75 std::unique_ptr<UIResourceLayerImpl> layer = | 82 std::unique_ptr<UIResourceLayerImpl> layer = |
76 GenerateUIResourceLayer(&host_impl, bitmap_size, layer_size, opaque, uid); | 83 GenerateUIResourceLayer(&host_impl, bitmap_size, layer_size, opaque, uid); |
77 QuadSizeTest(std::move(layer), expected_quad_size); | 84 QuadSizeTest(&host_impl, std::move(layer), expected_quad_size); |
78 | 85 |
79 // Make sure we're not appending quads when there are invalid values. | 86 // Make sure we're not appending quads when there are invalid values. |
80 expected_quad_size = 0; | 87 expected_quad_size = 0; |
81 uid = 0; | 88 uid = 0; |
82 layer = GenerateUIResourceLayer(&host_impl, | 89 layer = GenerateUIResourceLayer(&host_impl, |
83 bitmap_size, | 90 bitmap_size, |
84 layer_size, | 91 layer_size, |
85 opaque, | 92 opaque, |
86 uid); | 93 uid); |
87 QuadSizeTest(std::move(layer), expected_quad_size); | 94 QuadSizeTest(&host_impl, std::move(layer), expected_quad_size); |
88 } | 95 } |
89 | 96 |
90 void OpaqueBoundsTest(std::unique_ptr<UIResourceLayerImpl> layer, | 97 void OpaqueBoundsTest(FakeUIResourceLayerTreeHostImpl* host_impl, |
| 98 std::unique_ptr<UIResourceLayerImpl> layer, |
91 const gfx::Rect& expected_opaque_bounds) { | 99 const gfx::Rect& expected_opaque_bounds) { |
| 100 host_impl->active_tree()->SetRootLayerForTesting(std::move(layer)); |
| 101 host_impl->active_tree()->BuildPropertyTreesForTesting(); |
| 102 |
92 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); | 103 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); |
93 | 104 |
94 AppendQuadsData data; | 105 AppendQuadsData data; |
95 layer->AppendQuads(render_pass.get(), &data); | 106 host_impl->active_tree()->root_layer_for_testing()->AppendQuads( |
| 107 render_pass.get(), &data); |
96 | 108 |
97 // Verify quad rects | 109 // Verify quad rects |
98 const QuadList& quads = render_pass->quad_list; | 110 const QuadList& quads = render_pass->quad_list; |
99 EXPECT_GE(quads.size(), (size_t)0); | 111 EXPECT_GE(quads.size(), (size_t)0); |
100 gfx::Rect opaque_rect = quads.front()->opaque_rect; | 112 gfx::Rect opaque_rect = quads.front()->opaque_rect; |
101 EXPECT_EQ(expected_opaque_bounds, opaque_rect); | 113 EXPECT_EQ(expected_opaque_bounds, opaque_rect); |
| 114 |
| 115 host_impl->active_tree()->DetachLayers(); |
102 } | 116 } |
103 | 117 |
104 TEST(UIResourceLayerImplTest, VerifySetOpaqueOnSkBitmap) { | 118 TEST(UIResourceLayerImplTest, VerifySetOpaqueOnSkBitmap) { |
105 FakeImplTaskRunnerProvider task_runner_provider; | 119 FakeImplTaskRunnerProvider task_runner_provider; |
106 TestTaskGraphRunner task_graph_runner; | 120 TestTaskGraphRunner task_graph_runner; |
107 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = | 121 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = |
108 FakeCompositorFrameSink::Create3d(); | 122 FakeCompositorFrameSink::Create3d(); |
109 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, | 123 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, |
110 &task_graph_runner); | 124 &task_graph_runner); |
111 host_impl.SetVisible(true); | 125 host_impl.SetVisible(true); |
112 host_impl.InitializeRenderer(compositor_frame_sink.get()); | 126 host_impl.InitializeRenderer(compositor_frame_sink.get()); |
113 | 127 |
114 gfx::Size bitmap_size(100, 100); | 128 gfx::Size bitmap_size(100, 100); |
115 gfx::Size layer_size(100, 100); | 129 gfx::Size layer_size(100, 100); |
116 bool opaque = false; | 130 bool opaque = false; |
117 UIResourceId uid = 1; | 131 UIResourceId uid = 1; |
118 std::unique_ptr<UIResourceLayerImpl> layer = | 132 std::unique_ptr<UIResourceLayerImpl> layer = |
119 GenerateUIResourceLayer(&host_impl, bitmap_size, layer_size, opaque, uid); | 133 GenerateUIResourceLayer(&host_impl, bitmap_size, layer_size, opaque, uid); |
120 gfx::Rect expected_opaque_bounds; | 134 gfx::Rect expected_opaque_bounds; |
121 OpaqueBoundsTest(std::move(layer), expected_opaque_bounds); | 135 OpaqueBoundsTest(&host_impl, std::move(layer), expected_opaque_bounds); |
122 | 136 |
123 opaque = true; | 137 opaque = true; |
124 layer = GenerateUIResourceLayer(&host_impl, | 138 layer = GenerateUIResourceLayer(&host_impl, |
125 bitmap_size, | 139 bitmap_size, |
126 layer_size, | 140 layer_size, |
127 opaque, | 141 opaque, |
128 uid); | 142 uid); |
129 expected_opaque_bounds = gfx::Rect(layer->bounds()); | 143 expected_opaque_bounds = gfx::Rect(layer->bounds()); |
130 OpaqueBoundsTest(std::move(layer), expected_opaque_bounds); | 144 OpaqueBoundsTest(&host_impl, std::move(layer), expected_opaque_bounds); |
131 } | 145 } |
132 | 146 |
133 TEST(UIResourceLayerImplTest, VerifySetOpaqueOnLayer) { | 147 TEST(UIResourceLayerImplTest, VerifySetOpaqueOnLayer) { |
134 FakeImplTaskRunnerProvider task_runner_provider; | 148 FakeImplTaskRunnerProvider task_runner_provider; |
135 TestTaskGraphRunner task_graph_runner; | 149 TestTaskGraphRunner task_graph_runner; |
136 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = | 150 std::unique_ptr<CompositorFrameSink> compositor_frame_sink = |
137 FakeCompositorFrameSink::Create3d(); | 151 FakeCompositorFrameSink::Create3d(); |
138 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, | 152 FakeUIResourceLayerTreeHostImpl host_impl(&task_runner_provider, |
139 &task_graph_runner); | 153 &task_graph_runner); |
140 host_impl.SetVisible(true); | 154 host_impl.SetVisible(true); |
141 host_impl.InitializeRenderer(compositor_frame_sink.get()); | 155 host_impl.InitializeRenderer(compositor_frame_sink.get()); |
142 | 156 |
143 gfx::Size bitmap_size(100, 100); | 157 gfx::Size bitmap_size(100, 100); |
144 gfx::Size layer_size(100, 100); | 158 gfx::Size layer_size(100, 100); |
145 bool skbitmap_opaque = false; | 159 bool skbitmap_opaque = false; |
146 UIResourceId uid = 1; | 160 UIResourceId uid = 1; |
147 std::unique_ptr<UIResourceLayerImpl> layer = GenerateUIResourceLayer( | 161 std::unique_ptr<UIResourceLayerImpl> layer = GenerateUIResourceLayer( |
148 &host_impl, bitmap_size, layer_size, skbitmap_opaque, uid); | 162 &host_impl, bitmap_size, layer_size, skbitmap_opaque, uid); |
149 layer->SetContentsOpaque(false); | 163 layer->SetContentsOpaque(false); |
150 gfx::Rect expected_opaque_bounds; | 164 gfx::Rect expected_opaque_bounds; |
151 OpaqueBoundsTest(std::move(layer), expected_opaque_bounds); | 165 OpaqueBoundsTest(&host_impl, std::move(layer), expected_opaque_bounds); |
152 | 166 |
153 layer = GenerateUIResourceLayer( | 167 layer = GenerateUIResourceLayer( |
154 &host_impl, bitmap_size, layer_size, skbitmap_opaque, uid); | 168 &host_impl, bitmap_size, layer_size, skbitmap_opaque, uid); |
155 layer->SetContentsOpaque(true); | 169 layer->SetContentsOpaque(true); |
156 expected_opaque_bounds = gfx::Rect(layer->bounds()); | 170 expected_opaque_bounds = gfx::Rect(layer->bounds()); |
157 OpaqueBoundsTest(std::move(layer), expected_opaque_bounds); | 171 OpaqueBoundsTest(&host_impl, std::move(layer), expected_opaque_bounds); |
158 } | 172 } |
159 | 173 |
160 TEST(UIResourceLayerImplTest, Occlusion) { | 174 TEST(UIResourceLayerImplTest, Occlusion) { |
161 gfx::Size layer_size(1000, 1000); | 175 gfx::Size layer_size(1000, 1000); |
162 gfx::Size viewport_size(1000, 1000); | 176 gfx::Size viewport_size(1000, 1000); |
163 | 177 |
164 LayerTestCommon::LayerImplTest impl; | 178 LayerTestCommon::LayerImplTest impl; |
165 | 179 |
166 SkBitmap sk_bitmap; | 180 SkBitmap sk_bitmap; |
167 sk_bitmap.allocN32Pixels(10, 10); | 181 sk_bitmap.allocN32Pixels(10, 10); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 LayerTestCommon::VerifyQuadsAreOccluded( | 220 LayerTestCommon::VerifyQuadsAreOccluded( |
207 impl.quad_list(), occluded, &partially_occluded_count); | 221 impl.quad_list(), occluded, &partially_occluded_count); |
208 // The layer outputs one quad, which is partially occluded. | 222 // The layer outputs one quad, which is partially occluded. |
209 EXPECT_EQ(1u, impl.quad_list().size()); | 223 EXPECT_EQ(1u, impl.quad_list().size()); |
210 EXPECT_EQ(1u, partially_occluded_count); | 224 EXPECT_EQ(1u, partially_occluded_count); |
211 } | 225 } |
212 } | 226 } |
213 | 227 |
214 } // namespace | 228 } // namespace |
215 } // namespace cc | 229 } // namespace cc |
OLD | NEW |