[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

simon.fraser at apple.com simon.fraser at apple.com
Wed Dec 22 11:34:40 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit d0a4f938085da81c5189c841174c1a10bb6a3de2
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jul 29 18:50:59 2010 +0000

    2010-07-29  Simon Fraser  <simon.fraser at apple.com>
    
            Reviewed by Darin Adler.
    
            Resizer control does not paint in otherwise empty compositing layer
            https://bugs.webkit.org/show_bug.cgi?id=42306
    
            Ensure that we create backing store for an empty element with resize: both,
            in order to render the resizer control.
    
            Test: compositing/overflow/resize-painting.html
    
            * rendering/RenderLayerBacking.h:
            * rendering/RenderLayerBacking.cpp:
            (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer): Check for hasOverflowControls()
            earlier, before any child checks.
            (WebCore::RenderLayerBacking::hasNonCompositingDescendants): Renamed from hasNonCompositingContent()
            to clarify its purpose.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64298 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index aa5cdf6..e10ea6b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-29  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by Darin Adler.
+
+        Resizer control does not paint in otherwise empty compositing layer
+        https://bugs.webkit.org/show_bug.cgi?id=42306
+        
+        Layer dumping test with an empty div having "resize: both".
+
+        * compositing/overflow/resize-painting-expected.txt: Added.
+        * compositing/overflow/resize-painting.html: Added.
+
 2010-07-28  Justin Schuh  <jschuh at chromium.org>
 
         Reviewed by Nate Chapin.
diff --git a/LayoutTests/compositing/overflow/resize-painting-expected.txt b/LayoutTests/compositing/overflow/resize-painting-expected.txt
new file mode 100644
index 0000000..36b5a69
--- /dev/null
+++ b/LayoutTests/compositing/overflow/resize-painting-expected.txt
@@ -0,0 +1,43 @@
+(GraphicsLayer
+  (position 0.00 0.00)
+  (anchor 0.50 0.50)
+  (bounds 800.00 600.00)
+  (opacity 1.00)
+  (usingTiledLayer 0)
+  (preserves3D 0)
+  (drawsContent 0)
+  (backfaceVisibility visible)
+  (backgroundColor none)
+  (transform identity)
+  (children 1
+    (GraphicsLayer
+      (position 0.00 0.00)
+      (anchor 0.50 0.50)
+      (bounds 800.00 600.00)
+      (opacity 1.00)
+      (usingTiledLayer 0)
+      (preserves3D 0)
+      (drawsContent 0)
+      (backfaceVisibility visible)
+      (backgroundColor none)
+      (transform identity)
+      (childrenTransform identity)
+      (children 1
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (anchor 0.50 0.50)
+          (bounds 100.00 100.00)
+          (opacity 1.00)
+          (usingTiledLayer 0)
+          (preserves3D 0)
+          (drawsContent 1)
+          (backfaceVisibility visible)
+          (backgroundColor none)
+          (transform identity)
+          (childrenTransform identity)
+        )
+      )
+    )
+  )
+)
+
diff --git a/LayoutTests/compositing/overflow/resize-painting.html b/LayoutTests/compositing/overflow/resize-painting.html
new file mode 100644
index 0000000..0fcf2fe
--- /dev/null
+++ b/LayoutTests/compositing/overflow/resize-painting.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style>
+  .composited {
+    -webkit-transform: translateZ(0);
+  }
+  
+  .box {
+    margin: 10px;
+    width: 100px;
+    height: 100px;
+    z-index: 0;
+  }
+
+  .resizable {
+    overflow: auto;
+    resize: both;
+  }
+  </style>
+  <script type="text/javascript" charset="utf-8">
+    if (window.layoutTestController)
+        layoutTestController.dumpAsText();
+
+    function doTest()
+    {
+        if (window.layoutTestController)
+          document.getElementById('layers').innerText = layoutTestController.layerTreeAsText();
+    }
+    
+    window.addEventListener('load', doTest, false);
+  </script>
+  </head>
+<body>
+  <!-- You should see the resize widget in this element -->
+  <div class="resizable composited box"></div>
+  <pre id="layers">Layer tree appears here in DRT.</pre>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index ad62d49..74dd73f 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-29  Simon Fraser  <simon.fraser at apple.com>
+
+        Reviewed by Darin Adler.
+
+        Resizer control does not paint in otherwise empty compositing layer
+        https://bugs.webkit.org/show_bug.cgi?id=42306
+        
+        Ensure that we create backing store for an empty element with resize: both,
+        in order to render the resizer control.
+
+        Test: compositing/overflow/resize-painting.html
+
+        * rendering/RenderLayerBacking.h:
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer): Check for hasOverflowControls()
+        earlier, before any child checks.
+        (WebCore::RenderLayerBacking::hasNonCompositingDescendants): Renamed from hasNonCompositingContent()
+        to clarify its purpose.
+
 2010-07-29  Adam Roben  <aroben at apple.com>
 
         Remove WKCACFLayer::Lanczos
diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp
index 13a8145..0e5933e 100644
--- a/WebCore/rendering/RenderLayerBacking.cpp
+++ b/WebCore/rendering/RenderLayerBacking.cpp
@@ -650,6 +650,9 @@ bool RenderLayerBacking::isSimpleContainerCompositingLayer() const
     if (hasBoxDecorationsOrBackground(renderObject))
         return false;
 
+    if (m_owningLayer->hasOverflowControls())
+        return false;
+
     // If we have got this far and the renderer has no children, then we're ok.
     if (!renderObject->firstChild())
         return true;
@@ -678,26 +681,23 @@ bool RenderLayerBacking::isSimpleContainerCompositingLayer() const
         if (hasBoxDecorationsOrBackgroundImage(style))
             return false;
 
-        // Ceck to see if all the body's children are compositing layers.
-        if (hasNonCompositingContent())
+        // Check to see if all the body's children are compositing layers.
+        if (hasNonCompositingDescendants())
             return false;
         
         return true;
     }
 
     // Check to see if all the renderer's children are compositing layers.
-    if (hasNonCompositingContent())
+    if (hasNonCompositingDescendants())
         return false;
     
     return true;
 }
 
 // Conservative test for having no rendered children.
-bool RenderLayerBacking::hasNonCompositingContent() const
+bool RenderLayerBacking::hasNonCompositingDescendants() const
 {
-    if (m_owningLayer->hasOverflowControls())
-        return true;
-    
     // Some HTML can cause whitespace text nodes to have renderers, like:
     // <div>
     // <img src=...>
diff --git a/WebCore/rendering/RenderLayerBacking.h b/WebCore/rendering/RenderLayerBacking.h
index 852fc04..808000b 100644
--- a/WebCore/rendering/RenderLayerBacking.h
+++ b/WebCore/rendering/RenderLayerBacking.h
@@ -173,7 +173,7 @@ private:
     bool rendererHasBackground() const;
     const Color rendererBackgroundColor() const;
 
-    bool hasNonCompositingContent() const;
+    bool hasNonCompositingDescendants() const;
     
     void paintIntoLayer(RenderLayer* rootLayer, GraphicsContext*, const IntRect& paintDirtyRect,
                     PaintBehavior paintBehavior, GraphicsLayerPaintingPhase, RenderObject* paintingRoot);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list