| 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 |