OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "cc/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
8 #include "cc/debug/test_web_graphics_context_3d.h" | 8 #include "cc/debug/test_web_graphics_context_3d.h" |
9 #include "cc/layers/append_quads_data.h" | 9 #include "cc/layers/append_quads_data.h" |
10 #include "cc/layers/quad_sink.h" | 10 #include "cc/layers/quad_sink.h" |
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1238 // layer owns a surface, then it does not have a clip rect of its own. | 1238 // layer owns a surface, then it does not have a clip rect of its own. |
1239 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1239 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1240 root_delegated_shared_quad_state->clip_rect.ToString()); | 1240 root_delegated_shared_quad_state->clip_rect.ToString()); |
1241 // Quads came with a clip rect. | 1241 // Quads came with a clip rect. |
1242 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1242 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1243 | 1243 |
1244 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1244 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
1245 host_impl_->DidDrawAllLayers(frame); | 1245 host_impl_->DidDrawAllLayers(frame); |
1246 } | 1246 } |
1247 | 1247 |
| 1248 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { |
| 1249 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 1250 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); |
| 1251 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 1252 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 1253 |
| 1254 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 1255 |
| 1256 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 1257 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 1258 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 1259 delegated_renderer_layer->SetDrawsContent(true); |
| 1260 |
| 1261 ScopedPtrVector<RenderPass> delegated_render_passes; |
| 1262 TestRenderPass* pass1 = AddRenderPass( |
| 1263 &delegated_render_passes, |
| 1264 RenderPass::Id(9, 6), |
| 1265 gfx::Rect(0, 0, 10, 10), |
| 1266 gfx::Transform()); |
| 1267 AddQuad(pass1, gfx::Rect(0, 0, 6, 6), 33u); |
| 1268 |
| 1269 // This render pass isn't part of the frame. |
| 1270 scoped_ptr<TestRenderPass> missing_pass(TestRenderPass::Create()); |
| 1271 missing_pass->SetNew(RenderPass::Id(9, 7), |
| 1272 gfx::Rect(7, 7, 7, 7), |
| 1273 gfx::Rect(7, 7, 7, 7), |
| 1274 gfx::Transform()); |
| 1275 |
| 1276 // But a render pass quad refers to it. |
| 1277 AddRenderPassQuad(pass1, missing_pass.get()); |
| 1278 |
| 1279 delegated_renderer_layer->SetFrameDataForRenderPasses( |
| 1280 &delegated_render_passes); |
| 1281 |
| 1282 // The RenderPasses should be taken by the layer. |
| 1283 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 1284 |
| 1285 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 1286 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
| 1287 |
| 1288 LayerTreeHostImpl::FrameData frame; |
| 1289 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1290 |
| 1291 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1292 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1293 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1294 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1295 frame.render_passes[0]->quad_list[0]->material); |
| 1296 |
| 1297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1298 host_impl_->DidDrawAllLayers(frame); |
| 1299 } |
| 1300 |
1248 } // namespace | 1301 } // namespace |
1249 } // namespace cc | 1302 } // namespace cc |
OLD | NEW |