Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4229)

Unified Diff: cc/gl_renderer_unittest.cc

Issue 12036091: Fixes a bug when the framebuffer is cleared with invalid scissor rect (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/gl_renderer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/gl_renderer_unittest.cc
diff --git a/cc/gl_renderer_unittest.cc b/cc/gl_renderer_unittest.cc
index 89603b1ece65c8fc80ad1e4ae92a6678a0ed091f..5ca2e35bc7371f19718b9cd84d364911ff7ad3ba 100644
--- a/cc/gl_renderer_unittest.cc
+++ b/cc/gl_renderer_unittest.cc
@@ -636,5 +636,56 @@ 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());
+ renderer.enableScissorForTesting();
danakj 2013/01/29 21:39:20 Instead of this, I think you could set a clip_rect
+
+ gfx::Rect viewportRect(mockClient.deviceViewportSize());
+ ScopedPtrVector<RenderPass>& renderPasses = mockClient.renderPassesInDrawOrder();
+ renderPasses.clear();
+
+ RenderPass::Id rootPassId(1, 0);
+ TestRenderPass* rootPass = addRenderPass(renderPasses, rootPassId, viewportRect, gfx::Transform());
+ addQuad(rootPass, viewportRect, SK_ColorGREEN);
+
+ RenderPass::Id childPassId(2, 0);
+ TestRenderPass* childPass = addRenderPass(renderPasses, childPassId, viewportRect, gfx::Transform());
+ addQuad(childPass, viewportRect, SK_ColorBLUE);
+
+ addRenderPassQuad(rootPass, childPass);
+
+ renderer.decideRenderPassAllocationsForFrame(mockClient.renderPassesInDrawOrder());
+ renderer.drawFrame(mockClient.renderPassesInDrawOrder());
+}
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/gl_renderer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698