Index: Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp |
=================================================================== |
--- Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp (revision 122257) |
+++ Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp (working copy) |
@@ -83,12 +83,13 @@ |
} |
// CCRendererClient methods. |
- virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize; return fakeSize; } |
+ virtual const IntSize& deviceViewportSize() const OVERRIDE { static IntSize fakeSize(1, 1); return fakeSize; } |
virtual const CCLayerTreeSettings& settings() const OVERRIDE { static CCLayerTreeSettings fakeSettings; return fakeSettings; } |
virtual void didLoseContext() OVERRIDE { } |
virtual void onSwapBuffersComplete() OVERRIDE { } |
virtual void setFullRootLayerDamage() OVERRIDE { m_setFullRootLayerDamageCount++; } |
- virtual void setContentsMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memoryAllocationLimitBytes = bytes; } |
+ virtual void releaseContentsTextures() OVERRIDE { } |
+ virtual void setMemoryAllocationLimitBytes(size_t bytes) OVERRIDE { m_memoryAllocationLimitBytes = bytes; } |
// Methods added for test. |
int setFullRootLayerDamageCount() const { return m_setFullRootLayerDamageCount; } |
@@ -167,20 +168,34 @@ |
} |
// Test LayerRendererChromium discardFramebuffer functionality: |
-// Suggest discarding framebuffer when one exists. |
+// Suggest discarding framebuffer when one exists and the renderer is not visible. |
// Expected: it is discarded and damage tracker is reset. |
-TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayer) |
+TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayerWhileNotVisible) |
{ |
+ m_layerRendererChromium.setVisible(false); |
m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); |
EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); |
EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); |
} |
// Test LayerRendererChromium discardFramebuffer functionality: |
+// Suggest discarding framebuffer when one exists and the renderer is visible. |
+// Expected: the allocation is ignored. |
+TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoDoNothingWhenVisible) |
+{ |
+ m_layerRendererChromium.setVisible(true); |
+ m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); |
+ EXPECT_EQ(0, m_mockClient.setFullRootLayerDamageCount()); |
+ EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded()); |
+} |
+ |
+ |
+// Test LayerRendererChromium discardFramebuffer functionality: |
// Suggest discarding framebuffer when one does not exist. |
// Expected: it does nothing. |
TEST_F(LayerRendererChromiumTest, SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) |
{ |
+ m_layerRendererChromium.setVisible(false); |
m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); |
EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); |
EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); |
@@ -191,37 +206,37 @@ |
} |
// Test LayerRendererChromium discardFramebuffer functionality: |
-// Suggest discarding framebuffer, then try to swapBuffers. |
-// Expected: framebuffer is discarded, swaps are ignored, and damage is reset after discard and after each swap. |
-TEST_F(LayerRendererChromiumTest, SwapBuffersWhileBackbufferDiscardedShouldIgnoreSwapAndDamageRootLayer) |
+// Begin drawing a frame while a framebuffer is discarded. |
+// Expected: will recreate framebuffer. |
+TEST_F(LayerRendererChromiumTest, DiscardedBackbufferIsRecreatedForScopeDuration) |
{ |
+ m_layerRendererChromium.setVisible(false); |
m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); |
EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); |
EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); |
- swapBuffers(); |
- EXPECT_EQ(0, m_mockContext.frameCount()); |
- EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount()); |
+ m_layerRendererChromium.setVisible(true); |
+ m_layerRendererChromium.beginDrawingFrame(m_mockClient.rootRenderPass()); |
+ EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded()); |
swapBuffers(); |
- EXPECT_EQ(0, m_mockContext.frameCount()); |
- EXPECT_EQ(3, m_mockClient.setFullRootLayerDamageCount()); |
+ EXPECT_EQ(1, m_mockContext.frameCount()); |
} |
-// Test LayerRendererChromium discardFramebuffer functionality: |
-// Begin drawing a frame while a framebuffer is discarded. |
-// Expected: will recreate framebuffer. |
-TEST_F(LayerRendererChromiumTest, DiscardedBackbufferIsRecreatredForScopeDuration) |
+TEST_F(LayerRendererChromiumTest, FramebufferDiscardedAfterReadbackWhenNotVisible) |
{ |
+ m_layerRendererChromium.setVisible(false); |
m_mockContext.setMemoryAllocation(m_suggestHaveBackbufferNo); |
EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); |
EXPECT_EQ(1, m_mockClient.setFullRootLayerDamageCount()); |
+ char pixels[4]; |
m_layerRendererChromium.beginDrawingFrame(m_mockClient.rootRenderPass()); |
EXPECT_FALSE(m_layerRendererChromium.isFramebufferDiscarded()); |
- swapBuffers(); |
- EXPECT_EQ(1, m_mockContext.frameCount()); |
+ m_layerRendererChromium.getFramebufferPixels(pixels, IntRect(0, 0, 1, 1)); |
+ EXPECT_TRUE(m_layerRendererChromium.isFramebufferDiscarded()); |
+ EXPECT_EQ(2, m_mockClient.setFullRootLayerDamageCount()); |
} |
class ForbidSynchronousCallContext : public FakeWebGraphicsContext3D { |