Title: [87547] trunk
Revision
87547
Author
jam...@google.com
Date
2011-05-27 13:29:12 -0700 (Fri, 27 May 2011)

Log Message

2011-05-27  James Robinson  <jam...@chromium.org>

        Reviewed by Simon Fraser.

        GraphicsLayers for overflow controls on iframe without clipping layer left out of layer tree
        https://bugs.webkit.org/show_bug.cgi?id=61590

        * compositing/iframes/resizer-expected.txt: Added.
        * compositing/iframes/resizer.html: Added.
2011-05-27  James Robinson  <jam...@chromium.org>

        Reviewed by Simon Fraser.

        GraphicsLayers for overflow controls on iframe without clipping layer left out of layer tree
        https://bugs.webkit.org/show_bug.cgi?id=61590

        Adds overflow control layers to the compositor tree for layers without clipping layers regardless of whether the
        backing is parented.  This ensures that the scroll corner layer for an iframe without a clipping layer ends up
        in the final layer tree.  We don't currently render resizers for iframes, but we will soon and this keeps the
        graphics layer tree consistent.

        Test: compositing/iframes/resizer.html

        * rendering/RenderLayerCompositor.cpp:
        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (87546 => 87547)


--- trunk/LayoutTests/ChangeLog	2011-05-27 20:28:19 UTC (rev 87546)
+++ trunk/LayoutTests/ChangeLog	2011-05-27 20:29:12 UTC (rev 87547)
@@ -1,3 +1,13 @@
+2011-05-27  James Robinson  <jam...@chromium.org>
+
+        Reviewed by Simon Fraser.
+
+        GraphicsLayers for overflow controls on iframe without clipping layer left out of layer tree
+        https://bugs.webkit.org/show_bug.cgi?id=61590
+
+        * compositing/iframes/resizer-expected.txt: Added.
+        * compositing/iframes/resizer.html: Added.
+
 2011-05-27  Nikolas Zimmermann  <nzimmerm...@rim.com>
 
         Not reviewed.

Added: trunk/LayoutTests/compositing/iframes/resizer.html (0 => 87547)


--- trunk/LayoutTests/compositing/iframes/resizer.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/iframes/resizer.html	2011-05-27 20:29:12 UTC (rev 87547)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<style>
+.container {
+     -webkit-transform: translateZ(0);
+     resize: both;
+}
+</style>
+<script>
+function test() {
+    if (window.layoutTestController) {
+        layoutTestController.dumpAsText();
+        document.getElementById('layers').innerHTML = layoutTestController.layerTreeAsText();
+    }
+}
+</script>
+<!-- There should be a layer for the iframe's scroll corner alongside the iframe's content's layer tree -->
+<body _onload_="test()">
+<iframe class="container" src=""
+<pre id="layers">Layer tree appears here in DRT.</pre>
Property changes on: trunk/LayoutTests/compositing/iframes/resizer.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/platform/chromium-gpu/compositing/iframes/resizer-expected.txt (0 => 87547)


--- trunk/LayoutTests/platform/chromium-gpu/compositing/iframes/resizer-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium-gpu/compositing/iframes/resizer-expected.txt	2011-05-27 20:29:12 UTC (rev 87547)
@@ -0,0 +1,56 @@
+
+(GraphicsLayer
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (children 1
+        (GraphicsLayer
+          (position 8.00 8.00)
+          (bounds 304.00 154.00)
+          (drawsContent 1)
+          (children 2
+            (GraphicsLayer
+              (position 2.00 2.00)
+              (children 2
+                (GraphicsLayer
+                  (bounds 285.00 150.00)
+                  (children 1
+                    (GraphicsLayer
+                      (children 1
+                        (GraphicsLayer
+                          (bounds 285.00 230.00)
+                          (children 1
+                            (GraphicsLayer
+                              (bounds 285.00 230.00)
+                              (drawsContent 1)
+                              (children 1
+                                (GraphicsLayer
+                                  (position 18.00 10.00)
+                                  (bounds 210.00 210.00)
+                                  (drawsContent 1)
+                                )
+                              )
+                            )
+                          )
+                        )
+                      )
+                    )
+                  )
+                )
+                (GraphicsLayer
+                  (position 285.00 0.00)
+                  (bounds 15.00 150.00)
+                  (drawsContent 1)
+                )
+              )
+            )
+            (GraphicsLayer
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
Property changes on: trunk/LayoutTests/platform/chromium-gpu/compositing/iframes/resizer-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt (0 => 87547)


--- trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt	2011-05-27 20:29:12 UTC (rev 87547)
@@ -0,0 +1,49 @@
+
+(GraphicsLayer
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (children 1
+        (GraphicsLayer
+          (position 8.00 8.00)
+          (bounds 304.00 154.00)
+          (drawsContent 1)
+          (children 1
+            (GraphicsLayer
+              (position 2.00 2.00)
+              (children 1
+                (GraphicsLayer
+                  (bounds 285.00 150.00)
+                  (children 1
+                    (GraphicsLayer
+                      (children 1
+                        (GraphicsLayer
+                          (bounds 285.00 230.00)
+                          (children 1
+                            (GraphicsLayer
+                              (bounds 285.00 230.00)
+                              (drawsContent 1)
+                              (children 1
+                                (GraphicsLayer
+                                  (position 18.00 10.00)
+                                  (bounds 210.00 210.00)
+                                  (drawsContent 1)
+                                )
+                              )
+                            )
+                          )
+                        )
+                      )
+                    )
+                  )
+                )
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+)
+
Property changes on: trunk/LayoutTests/platform/mac/compositing/iframes/resizer-expected.txt
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (87546 => 87547)


--- trunk/Source/WebCore/ChangeLog	2011-05-27 20:28:19 UTC (rev 87546)
+++ trunk/Source/WebCore/ChangeLog	2011-05-27 20:29:12 UTC (rev 87547)
@@ -1,3 +1,20 @@
+2011-05-27  James Robinson  <jam...@chromium.org>
+
+        Reviewed by Simon Fraser.
+
+        GraphicsLayers for overflow controls on iframe without clipping layer left out of layer tree
+        https://bugs.webkit.org/show_bug.cgi?id=61590
+
+        Adds overflow control layers to the compositor tree for layers without clipping layers regardless of whether the
+        backing is parented.  This ensures that the scroll corner layer for an iframe without a clipping layer ends up
+        in the final layer tree.  We don't currently render resizers for iframes, but we will soon and this keeps the
+        graphics layer tree consistent.
+
+        Test: compositing/iframes/resizer.html
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
+
 2011-05-27  Adam Barth  <aba...@webkit.org>
 
         Reviewed by Eric Seidel.

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (87546 => 87547)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2011-05-27 20:28:19 UTC (rev 87546)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2011-05-27 20:29:12 UTC (rev 87547)
@@ -858,28 +858,28 @@
         if (layer->renderer()->isRenderPart())
             parented = parentFrameContentLayers(toRenderPart(layer->renderer()));
 
+        if (!parented)
+            layerBacking->parentForSublayers()->setChildren(layerChildren);
+
         // If the layer has a clipping layer the overflow controls layers will be siblings of the clipping layer.
         // Otherwise, the overflow control layers are normal children.
         if (!layerBacking->hasClippingLayer()) {
             if (GraphicsLayer* overflowControlLayer = layerBacking->layerForHorizontalScrollbar()) {
                 overflowControlLayer->removeFromParent();
-                layerChildren.append(overflowControlLayer);
+                layerBacking->parentForSublayers()->addChild(overflowControlLayer);
             }
 
             if (GraphicsLayer* overflowControlLayer = layerBacking->layerForVerticalScrollbar()) {
                 overflowControlLayer->removeFromParent();
-                layerChildren.append(overflowControlLayer);
+                layerBacking->parentForSublayers()->addChild(overflowControlLayer);
             }
 
             if (GraphicsLayer* overflowControlLayer = layerBacking->layerForScrollCorner()) {
                 overflowControlLayer->removeFromParent();
-                layerChildren.append(overflowControlLayer);
+                layerBacking->parentForSublayers()->addChild(overflowControlLayer);
             }
         }
 
-        if (!parented)
-            layerBacking->parentForSublayers()->setChildren(layerChildren);
-
 #if ENABLE(FULLSCREEN_API)
         // For the sake of clients of the full screen renderer, don't reparent
         // the full screen layer out from under them if they're in the middle of
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to