Title: [106994] trunk/Source/WebKit/chromium
Revision
106994
Author
commit-qu...@webkit.org
Date
2012-02-07 15:03:10 -0800 (Tue, 07 Feb 2012)

Log Message

[chromium] Unit test for bug #77996
https://bugs.webkit.org/show_bug.cgi?id=78019

Patch by Dana Jansens <dan...@chromium.org> on 2012-02-07
Reviewed by James Robinson.

* tests/CCLayerTreeHostTest.cpp:
(CCLayerTreeHostTestManySurfaces):
(WTF::CCLayerTreeHostTestManySurfaces::CCLayerTreeHostTestManySurfaces):
(WTF::CCLayerTreeHostTestManySurfaces::beginTest):
(WTF::CCLayerTreeHostTestManySurfaces::afterTest):
(WTF):

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (106993 => 106994)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-02-07 22:52:27 UTC (rev 106993)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-02-07 23:03:10 UTC (rev 106994)
@@ -1,3 +1,17 @@
+2012-02-07  Dana Jansens  <dan...@chromium.org>
+
+        [chromium] Unit test for bug #77996
+        https://bugs.webkit.org/show_bug.cgi?id=78019
+
+        Reviewed by James Robinson.
+
+        * tests/CCLayerTreeHostTest.cpp:
+        (CCLayerTreeHostTestManySurfaces):
+        (WTF::CCLayerTreeHostTestManySurfaces::CCLayerTreeHostTestManySurfaces):
+        (WTF::CCLayerTreeHostTestManySurfaces::beginTest):
+        (WTF::CCLayerTreeHostTestManySurfaces::afterTest):
+        (WTF):
+
 2012-02-07  Sadrul Habib Chowdhury  <sad...@chromium.org>
 
         Process Scroll-gesture events from the compositor.

Modified: trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp (106993 => 106994)


--- trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp	2012-02-07 22:52:27 UTC (rev 106993)
+++ trunk/Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp	2012-02-07 23:03:10 UTC (rev 106994)
@@ -1472,4 +1472,61 @@
 
 SINGLE_AND_MULTI_THREAD_TEST_F(CCLayerTreeHostTestLayerOcclusion)
 
+class CCLayerTreeHostTestManySurfaces : public CCLayerTreeHostTest {
+public:
+    CCLayerTreeHostTestManySurfaces() { }
+
+    virtual void beginTest()
+    {
+        // We create enough RenderSurfaces that it will trigger Vector reallocation while computing occlusion.
+        Region occluded;
+        const TransformationMatrix identityMatrix;
+        Vector<RefPtr<TestLayerChromium> > layers;
+        Vector<RefPtr<TestLayerChromium> > children;
+        int numSurfaces = 20;
+        RefPtr<TestLayerChromium> replica = TestLayerChromium::create();
+
+        for (int i = 0; i < numSurfaces; ++i) {
+            layers.append(TestLayerChromium::create());
+            if (!i) {
+                setLayerPropertiesForTesting(layers.last().get(), 0, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true);
+                layers.last()->createRenderSurface();
+            } else {
+                setLayerPropertiesForTesting(layers.last().get(), layers[layers.size()-2].get(), identityMatrix, FloatPoint(0, 0), FloatPoint(1, 1), IntSize(100-i, 100-i), true);
+                layers.last()->setMasksToBounds(true);
+                layers.last()->setReplicaLayer(replica.get()); // Make it have a RenderSurface
+            }
+        }
+
+        for (int i = 1; i < numSurfaces; ++i) {
+            children.append(TestLayerChromium::create());
+            setLayerPropertiesForTesting(children.last().get(), layers[i].get(), identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(500, 500), false);
+        }
+
+        m_layerTreeHost->setRootLayer(layers[0].get());
+        m_layerTreeHost->setViewportSize(layers[0]->bounds());
+        m_layerTreeHost->updateLayers();
+        m_layerTreeHost->commitComplete();
+
+        for (int i = 0; i < numSurfaces-1; ++i) {
+            IntRect expectedOcclusion(i+1, i+1, 100-i-1, 100-i-1);
+
+            EXPECT_EQ_RECT(expectedOcclusion, layers[i]->occludedScreenSpace().bounds());
+            EXPECT_EQ(1u, layers[i]->occludedScreenSpace().rects().size());
+        }
+
+        // Kill the layerTreeHost immediately.
+        m_layerTreeHost->setRootLayer(0);
+        m_layerTreeHost.clear();
+
+        endTest();
+    }
+
+    virtual void afterTest()
+    {
+    }
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(CCLayerTreeHostTestManySurfaces)
+
 } // namespace
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to