| Index: cc/layer_tree_host_impl_unittest.cc
|
| diff --git a/cc/layer_tree_host_impl_unittest.cc b/cc/layer_tree_host_impl_unittest.cc
|
| index 965cfb9f43e0e7e161462d0652a5a43bfa5f22e9..7e9f2813eccdbd62aefbbdc868847fb94373c7ab 100644
|
| --- a/cc/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/layer_tree_host_impl_unittest.cc
|
| @@ -207,10 +207,7 @@ public:
|
| void pinchZoomPanViewportAndScrollBoundaryTest(const float deviceScaleFactor);
|
|
|
| protected:
|
| - scoped_ptr<OutputSurface> createOutputSurface()
|
| - {
|
| - return FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(new FakeWebGraphicsContext3D)).PassAs<OutputSurface>();
|
| - }
|
| + virtual scoped_ptr<OutputSurface> createOutputSurface() { return createFakeOutputSurface(); }
|
|
|
| FakeProxy m_proxy;
|
| DebugScopedSetImplThread m_alwaysImplThread;
|
| @@ -4892,6 +4889,45 @@ TEST_P(LayerTreeHostImplTest, pinchZoomPanViewportAndScrollBoundaryWithDeviceSca
|
| pinchZoomPanViewportAndScrollBoundaryTest(2);
|
| }
|
|
|
| +class LayerTreeHostImplTestWithDelegatingRenderer : public LayerTreeHostImplTest {
|
| +protected:
|
| + virtual scoped_ptr<OutputSurface> createOutputSurface()
|
| + {
|
| + // Creates an output surface with a parent to use a delegating renderer.
|
| + WebKit::WebGraphicsContext3D::Attributes attrs;
|
| + return FakeOutputSurface::CreateDelegating3d(WebKit::CompositorFakeWebGraphicsContext3D::create(attrs).PassAs<WebKit::WebGraphicsContext3D>()).PassAs<OutputSurface>();
|
| + }
|
| +
|
| + void drawFrameAndTestDamage(const gfx::RectF& expectedDamage) {
|
| + LayerTreeHostImpl::FrameData frame;
|
| + EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
|
| + ASSERT_EQ(1u, frame.renderPasses.size());
|
| +
|
| + // Verify the damage rect for the root render pass.
|
| + const RenderPass* rootRenderPass = frame.renderPasses.back();
|
| + EXPECT_RECT_EQ(expectedDamage, rootRenderPass->damage_rect);
|
| +
|
| + // Verify the root layer's quad is generated and not being culled.
|
| + ASSERT_EQ(1u, rootRenderPass->quad_list.size());
|
| + gfx::Rect expectedVisibleRect(m_hostImpl->rootLayer()->contentBounds());
|
| + EXPECT_RECT_EQ(expectedVisibleRect, rootRenderPass->quad_list[0]->visible_rect);
|
| +
|
| + m_hostImpl->drawLayers(frame);
|
| + m_hostImpl->didDrawAllLayers(frame);
|
| + }
|
| +};
|
| +
|
| +TEST_P(LayerTreeHostImplTestWithDelegatingRenderer, FrameIncludesDamageRect)
|
| +{
|
| + // Draw a frame. In the first frame, the entire viewport should be damaged.
|
| + gfx::Rect fullFrameDamage = gfx::Rect(m_hostImpl->deviceViewportSize());
|
| + drawFrameAndTestDamage(fullFrameDamage);
|
| +
|
| + // The second frame should have no damage, but the quads should still be generated.
|
| + gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize());
|
| + drawFrameAndTestDamage(noDamage);
|
| +}
|
| +
|
| INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests,
|
| LayerTreeHostImplTest,
|
| ::testing::Values(false, true));
|
|
|