Index: Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp |
=================================================================== |
--- Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp (revision 122257) |
+++ Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp (working copy) |
@@ -485,7 +485,41 @@ |
runTestThreaded(); |
} |
+class CCLayerTreeHostTestAbortFrameWhenInvisible : public CCLayerTreeHostTestThreadOnly { |
+public: |
+ CCLayerTreeHostTestAbortFrameWhenInvisible() |
+ { |
+ } |
+ virtual void beginTest() |
+ { |
+ // Request a commit (from the main thread), which will trigger the commit flow from the impl side. |
+ m_layerTreeHost->setNeedsCommit(); |
+ // Then mark ourselves as not visible before processing any more messages on the main thread. |
+ m_layerTreeHost->setVisible(false); |
+ // If we make it without kicking a frame, we pass! |
+ endTestAfterDelay(1); |
+ } |
+ |
+ virtual void layout() OVERRIDE |
+ { |
+ ASSERT_FALSE(true); |
+ endTest(); |
+ } |
+ |
+ virtual void afterTest() |
+ { |
+ } |
+ |
+private: |
+}; |
+ |
+TEST_F(CCLayerTreeHostTestAbortFrameWhenInvisible, runMultiThread) |
+{ |
+ runTestThreaded(); |
+} |
+ |
+ |
// Trigger a frame with setNeedsCommit. Then, inside the resulting animate |
// callback, requet another frame using setNeedsAnimate. End the test when |
// animate gets called yet-again, indicating that the proxy is correctly |
@@ -952,113 +986,6 @@ |
runTest(true); |
} |
-class CCLayerTreeHostTestVisibilityAndAllocationControlDrawing : public CCLayerTreeHostTest { |
-public: |
- |
- CCLayerTreeHostTestVisibilityAndAllocationControlDrawing() { } |
- |
- virtual void beginTest() |
- { |
- postSetNeedsCommitToMainThread(); |
- } |
- |
- virtual void didCommitAndDrawFrame() |
- { |
- int lastFrame = m_layerTreeHost->frameNumber() - 1; |
- |
- // These frames should draw. |
- switch (lastFrame) { |
- case 0: |
- // Set the tree invisible, this should not draw. |
- m_layerTreeHost->setVisible(false); |
- break; |
- case 2: |
- // Set the tree invisible and give a non-visible allocation, this |
- // should not draw. |
- m_layerTreeHost->setVisible(false); |
- m_layerTreeHost->setContentsMemoryAllocationLimitBytes(0); |
- break; |
- case 5: |
- // Give a memory allocation not for display, but while we are |
- // visible. This should not be used and we should remain |
- // ready for display and it should draw. |
- m_layerTreeHost->setContentsMemoryAllocationLimitBytes(0); |
- break; |
- case 6: |
- endTest(); |
- break; |
- |
- default: |
- ASSERT_NOT_REACHED(); |
- } |
- } |
- |
- virtual void didCommit() |
- { |
- int lastFrame = m_layerTreeHost->frameNumber() - 1; |
- |
- // These frames should not draw. |
- switch (lastFrame) { |
- case 1: |
- // Set the tree visible, this should draw. |
- m_layerTreeHost->setVisible(true); |
- break; |
- case 3: |
- // Set visible without giving a visible memory allocation, this |
- // shouldn't make the impl side ready for display, so it should |
- // not draw. |
- m_layerTreeHost->setVisible(true); |
- break; |
- case 4: |
- // Now give a memory allocation for display, this should draw. |
- m_layerTreeHost->setContentsMemoryAllocationLimitBytes(1); |
- break; |
- } |
- } |
- |
- virtual void commitCompleteOnCCThread(CCLayerTreeHostImpl* impl) |
- { |
- switch (impl->sourceFrameNumber()) { |
- case 0: |
- // The host starts out visible and able to display before we do any commit. |
- EXPECT_TRUE(impl->visible()); |
- EXPECT_TRUE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 1: |
- // We still have a memory allocation for display. |
- EXPECT_FALSE(impl->visible()); |
- EXPECT_TRUE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 2: |
- EXPECT_TRUE(impl->visible()); |
- EXPECT_TRUE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 3: |
- EXPECT_FALSE(impl->visible()); |
- EXPECT_FALSE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 4: |
- EXPECT_TRUE(impl->visible()); |
- EXPECT_FALSE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 5: |
- EXPECT_TRUE(impl->visible()); |
- EXPECT_TRUE(impl->sourceFrameCanBeDrawn()); |
- break; |
- case 6: |
- EXPECT_TRUE(impl->visible()); |
- EXPECT_TRUE(impl->sourceFrameCanBeDrawn()); |
- break; |
- } |
- } |
- |
- virtual void afterTest() |
- { |
- } |
-}; |
- |
-SINGLE_AND_MULTI_THREAD_TEST_F(CCLayerTreeHostTestVisibilityAndAllocationControlDrawing) |
- |
// Verifies that startPageScaleAnimation events propagate correctly from CCLayerTreeHost to |
// CCLayerTreeHostImpl in the MT compositor. |
class CCLayerTreeHostTestStartPageScaleAnimation : public CCLayerTreeHostTest { |
@@ -1689,7 +1616,7 @@ |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
ASSERT_TRUE(m_layerTreeHost->initializeLayerRendererIfNeeded()); |
CCTextureUpdater updater; |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1706,7 +1633,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1724,7 +1651,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1744,7 +1671,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1766,7 +1693,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1788,7 +1715,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), child2->occludedScreenSpace().bounds()); |
@@ -1811,7 +1738,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), grandChild->occludedScreenSpace().bounds()); |
@@ -1834,7 +1761,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), child2->occludedScreenSpace().bounds()); |
@@ -1897,7 +1824,7 @@ |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
ASSERT_TRUE(m_layerTreeHost->initializeLayerRendererIfNeeded()); |
CCTextureUpdater updater; |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), child2->occludedScreenSpace().bounds()); |
@@ -1924,7 +1851,7 @@ |
m_layerTreeHost->setRootLayer(rootLayer); |
m_layerTreeHost->setViewportSize(rootLayer->bounds()); |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
EXPECT_EQ_RECT(IntRect(), child2->occludedScreenSpace().bounds()); |
@@ -1986,7 +1913,7 @@ |
m_layerTreeHost->setViewportSize(layers[0]->bounds()); |
ASSERT_TRUE(m_layerTreeHost->initializeLayerRendererIfNeeded()); |
CCTextureUpdater updater; |
- m_layerTreeHost->updateLayers(updater); |
+ m_layerTreeHost->updateLayers(updater, std::numeric_limits<size_t>::max()); |
m_layerTreeHost->commitComplete(); |
for (int i = 0; i < numSurfaces-1; ++i) { |