Index: cc/gl_renderer_unittest.cc |
diff --git a/cc/gl_renderer_unittest.cc b/cc/gl_renderer_unittest.cc |
index 89603b1ece65c8fc80ad1e4ae92a6678a0ed091f..e9665abadb837ded2ab6d38e8a4068e0fdbff705 100644 |
--- a/cc/gl_renderer_unittest.cc |
+++ b/cc/gl_renderer_unittest.cc |
@@ -636,5 +636,63 @@ TEST(GLRendererTest2, shouldClearRootRenderPass) |
Mock::VerifyAndClearExpectations(&mockContext); |
} |
+class ScissorTestOnClearCheckingContext : public FakeWebGraphicsContext3D { |
+public: |
+ ScissorTestOnClearCheckingContext() : m_scissorEnabled(false) { } |
+ |
+ virtual void clear(WGC3Dbitfield) |
+ { |
+ EXPECT_FALSE(m_scissorEnabled); |
+ } |
+ |
+ virtual void enable(WGC3Denum cap) |
+ { |
+ if (cap == GL_SCISSOR_TEST) |
+ m_scissorEnabled = true; |
+ } |
+ |
+ virtual void disable(WGC3Denum cap) |
+ { |
+ if (cap == GL_SCISSOR_TEST) |
+ m_scissorEnabled = false; |
+ } |
+ |
+private: |
+ bool m_scissorEnabled; |
+}; |
+ |
+TEST(GLRendererTest2, scissorTestWhenClearing) { |
+ FakeRendererClient mockClient; |
+ scoped_ptr<OutputSurface> outputSurface(FakeOutputSurface::Create3d(scoped_ptr<WebKit::WebGraphicsContext3D>(new ScissorTestOnClearCheckingContext))); |
+ scoped_ptr<ResourceProvider> resourceProvider(ResourceProvider::create(outputSurface.get())); |
+ FakeRendererGL renderer(&mockClient, outputSurface.get(), resourceProvider.get()); |
+ EXPECT_TRUE(renderer.initialize()); |
+ EXPECT_FALSE(renderer.capabilities().usingPartialSwap); |
+ |
+ gfx::Rect viewportRect(mockClient.deviceViewportSize()); |
+ ScopedPtrVector<RenderPass>& renderPasses = mockClient.renderPassesInDrawOrder(); |
+ renderPasses.clear(); |
+ |
+ gfx::Rect grandChildRect(25, 25); |
+ RenderPass::Id grandChildPassId(3, 0); |
+ TestRenderPass* grandChildPass = addRenderPass(renderPasses, grandChildPassId, grandChildRect, gfx::Transform()); |
+ addClippedQuad(grandChildPass, grandChildRect, SK_ColorYELLOW); |
+ |
+ gfx::Rect childRect(50, 50); |
+ RenderPass::Id childPassId(2, 0); |
+ TestRenderPass* childPass = addRenderPass(renderPasses, childPassId, childRect, gfx::Transform()); |
+ addQuad(childPass, childRect, SK_ColorBLUE); |
+ |
+ RenderPass::Id rootPassId(1, 0); |
+ TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportRect, gfx::Transform()); |
+ addQuad(rootPass, viewportRect, SK_ColorGREEN); |
+ |
+ addRenderPassQuad(rootPass, childPass); |
+ addRenderPassQuad(childPass, grandChildPass); |
+ |
+ renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOrder()); |
+ renderer.drawFrame(mockClient.renderPassesInDrawOrder()); |
+} |
+ |
} // namespace |
} // namespace cc |