Title: [157296] trunk
Revision
157296
Author
[email protected]
Date
2013-10-11 01:35:36 -0700 (Fri, 11 Oct 2013)

Log Message

REGRESSION (r155607): _javascript_ site does not load visually on panerabread.com
https://bugs.webkit.org/show_bug.cgi?id=122461

Reviewed by Simon Fraser.

Do not modify the composited layer backing's internal layer structure directly
when the clipping behaviour changes.

When we directly create/destroy RenderLayerBacking::m_ancestorClippingLayer to
reflect the new clipping state, other, depending layers need updating. In order to
not to corrupt the internal hierarchy, mark the compositing layers dirty and let
the normal updating mechanism take care of creating/destroying the ancestor layers.

Source/WebCore:

Existing tests are extended.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::checkIfDescendantClippingContextNeedsUpdate):
(WebCore::RenderLayer::styleChanged):
* rendering/RenderLayer.h:
* rendering/RenderLayerBacking.h:

LayoutTests:

* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html:
* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html:
* platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (157295 => 157296)


--- trunk/LayoutTests/ChangeLog	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/ChangeLog	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,3 +1,25 @@
+2013-10-11  Zalan Bujtas  <[email protected]>
+
+        REGRESSION (r155607): _javascript_ site does not load visually on panerabread.com
+        https://bugs.webkit.org/show_bug.cgi?id=122461
+
+        Reviewed by Simon Fraser.
+        
+        Do not modify the composited layer backing's internal layer structure directly 
+        when the clipping behaviour changes.
+        
+        When we directly create/destroy RenderLayerBacking::m_ancestorClippingLayer to 
+        reflect the new clipping state, other, depending layers need updating. In order to
+        not to corrupt the internal hierarchy, mark the compositing layers dirty and let
+        the normal updating mechanism take care of creating/destroying the ancestor layers.
+
+        * compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
+        * compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html:
+        * compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
+        * compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html:
+        * platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
+        * platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
+
 2013-10-10  Santosh Mahto  <[email protected]>
 
         contentEditable with "position:relative" paragraphs is buggy

Modified: trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt (157295 => 157296)


--- trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,29 +1,68 @@
 This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.
 
-Text in the green box should stay visible.
+Text in both of the green boxes should stay visible.
 
 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 (GraphicsLayer
   (bounds 800.00 600.00)
+  (visible rect 0.00, 0.00 800.00 x 600.00)
+  (contentsScale 1.00)
   (children 1
     (GraphicsLayer
       (bounds 800.00 600.00)
       (contentsOpaque 1)
-      (children 3
+      (visible rect 0.00, 0.00 800.00 x 600.00)
+      (contentsScale 1.00)
+      (children 6
         (GraphicsLayer
           (position 8.00 96.00)
           (bounds 22.00 22.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
         )
         (GraphicsLayer
+          (position 8.00 138.00)
+          (bounds 22.00 22.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
           (position 8.00 86.00)
           (bounds 102.00 20.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
         )
         (GraphicsLayer
-          (position 0.00 87.00)
+          (position 9.00 87.00)
+          (bounds 100.00 18.00)
+          (visible rect 0.00, 0.00 100.00 x 18.00)
+          (contentsScale 1.00)
+          (children 1
+            (GraphicsLayer
+              (bounds 100.00 18.00)
+              (drawsContent 1)
+              (visible rect 0.00, 0.00 100.00 x 18.00)
+              (contentsScale 1.00)
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 8.00 128.00)
+          (bounds 102.00 20.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
+          (position 0.00 129.00)
           (bounds 787.00 18.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 787.00 x 18.00)
+          (contentsScale 1.00)
         )
       )
     )

Modified: trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html (157295 => 157296)


--- trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants.html	2013-10-11 08:35:36 UTC (rev 157296)
@@ -3,13 +3,14 @@
 <style>
   div {
     position:relative;
+    white-space: nowrap;
   }
 
-  #container {
+  .container {
     z-index:1;
   }
 
-  #transform {
+  .transform {
     -webkit-transform: translateZ(0);
     height: 20px;
     width: 20px;
@@ -18,15 +19,14 @@
     border: solid 1px red;
   }
 
-  .changeThis {
+  .box {
     border: solid 1px green;
     top: 10px;
     width: 100px;
   }
 
-  #disappearing {
+  .listItem {
     display: list-item;
-    white-space: nowrap;
   }
 </style>
 
@@ -37,8 +37,12 @@
     testRunner.waitUntilDone();
   }
 
-  function changeAndRemove() {
-    var parentDiv = document.getElementById('idToRemoveLater');
+  function changeOverflowVisibilityAndRemoveId() {
+    var parentDiv = document.getElementById('changeOverflowVisibleToHidden');
+    parentDiv.style.overflow = 'hidden';
+    parentDiv.removeAttribute('id');
+
+    parentDiv = document.getElementById('changeOverflowHiddenToVisible');
     parentDiv.style.overflow = 'visible';
     parentDiv.removeAttribute('id');
 
@@ -50,24 +54,40 @@
   }
 
   function run() {
-    var parentDiv = document.getElementsByClassName('changeThis')[0];
-    parentDiv.id = 'idToRemoveLater';
-    parentDiv.style.overflow = 'hidden';
-    setTimeout('changeAndRemove();', 0);
+    // Flip divs' overflow property.
+    var parentDivs = document.getElementsByClassName('box');
+    parentDivs[0].id = 'changeOverflowVisibleToHidden';
+    parentDivs[0].style.overflow = 'visible';
+
+    parentDivs[1].id = 'changeOverflowHiddenToVisible';
+    parentDivs[1].style.overflow = 'hidden';
+
+    setTimeout('changeOverflowVisibilityAndRemoveId();', 0);
   }
 </script>
 </head>
 <body _onload_='run();'>
 <p>This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.</p>
-<p>Text in the green box should stay visible.</p>
-<div id='container'>
-  <div class='changeThis'>
-    <div id='disappearing'>
+<p>Text in both of the green boxes should stay visible.</p>
+
+<div class='container'>
+  <div class='box'>
+    <div class='listItem'>
       Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
     </div>
   </div>
 </div>
-<div id='transform'></div>
+<div class='transform'></div>
+
+<div class='container'>
+  <div class='box'>
+    <div class='listItem'>
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+    </div>
+  </div>
+</div>
+<div class='transform'></div>
+
 <pre id="layers">Layer tree goes here when testing</pre>
 </body>
 </html>

Modified: trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt (157295 => 157296)


--- trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,29 +1,68 @@
 This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.
 
-Text in the green box should stay visible.
+Text in both of the green boxes should stay visible.
 
 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 (GraphicsLayer
   (bounds 800.00 600.00)
+  (visible rect 0.00, 0.00 800.00 x 600.00)
+  (contentsScale 1.00)
   (children 1
     (GraphicsLayer
       (bounds 800.00 600.00)
       (contentsOpaque 1)
-      (children 3
+      (visible rect 0.00, 0.00 800.00 x 600.00)
+      (contentsScale 1.00)
+      (children 6
         (GraphicsLayer
           (position 8.00 96.00)
           (bounds 22.00 22.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
         )
         (GraphicsLayer
+          (position 8.00 138.00)
+          (bounds 22.00 22.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
           (position 8.00 86.00)
           (bounds 102.00 20.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
         )
         (GraphicsLayer
           (position 9.00 87.00)
+          (bounds 100.00 18.00)
+          (visible rect 0.00, 0.00 100.00 x 18.00)
+          (contentsScale 1.00)
+          (children 1
+            (GraphicsLayer
+              (bounds 100.00 18.00)
+              (drawsContent 1)
+              (visible rect 0.00, 0.00 100.00 x 18.00)
+              (contentsScale 1.00)
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 8.00 128.00)
+          (bounds 102.00 20.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
+          (position 9.00 129.00)
           (bounds 778.00 18.00)
           (drawsContent 1)
+          (visible rect 0.00, 0.00 778.00 x 18.00)
+          (contentsScale 1.00)
         )
       )
     )

Modified: trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html (157295 => 157296)


--- trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2.html	2013-10-11 08:35:36 UTC (rev 157296)
@@ -3,13 +3,14 @@
 <style>
   div {
     position:relative;
+    white-space: nowrap;
   }
 
-  #container {
+  .container {
     z-index:1;
   }
 
-  #transform {
+  .transform {
     -webkit-transform: translateZ(0);
     height: 20px;
     width: 20px;
@@ -18,15 +19,11 @@
     border: solid 1px red;
   }
 
-  #changeThis {
+  .box {
     border: solid 1px green;
     top: 10px;
     width: 100px;
   }
-
-  #disappearing {
-    white-space: nowrap;
-  }
 </style>
 
 <script type="text/_javascript_">
@@ -35,8 +32,9 @@
     testRunner.waitUntilDone();
   }
 
-  function changeOverflow() {
-    document.getElementById("changeThis").style.overflow = "visible";
+  function changeOverflowVisibilityAndRemoveId() {
+    document.getElementById("changeOverFlowHiddenToVisible").style.overflow = "visible";
+    document.getElementById("changeOverFlowVisibleToHidden").style.overflow = "hidden";
     if (window.internals)
       document.getElementById('layers').innerText = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_VISIBLE_RECTS);
 
@@ -45,22 +43,34 @@
   }
 
   function run() {
-    document.getElementById('changeThis').style.overflow = 'hidden';
-    setTimeout('changeOverflow();', 0);
+    document.getElementById('changeOverFlowHiddenToVisible').style.overflow = 'hidden';
+    document.getElementById('changeOverFlowVisibleToHidden').style.overflow = 'visible';
+    setTimeout('changeOverflowVisibilityAndRemoveId();', 0);
   }
 </script>
 </head>
 <body _onload_='run();'>
 <p>This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.</p>
-<p>Text in the green box should stay visible.</p>
-<div id='container'>
-  <div id='changeThis'>
-    <div id='disappearing'>
+<p>Text in both of the green boxes should stay visible.</p>
+
+<div class='container'>
+  <div class='box' id='changeOverFlowVisibleToHidden'>
+    <div>
       Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
     </div>
   </div>
 </div>
-<div id='transform'></div>
+<div class='transform'></div>
+
+<div class='container'>
+  <div class='box' id='changeOverFlowHiddenToVisible'>
+    <div>
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+    </div>
+  </div>
+</div>
+<div class='transform'></div>
+
 <pre id="layers">Layer tree goes here when testing</pre>
 </body>
 </html>

Modified: trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt (157295 => 157296)


--- trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,8 +1,9 @@
 This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.
 
-Text in the green box should stay visible.
+Text in both of the green boxes should stay visible.
 
 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 (GraphicsLayer
   (bounds 800.00 600.00)
   (visible rect 0.00, 0.00 800.00 x 600.00)
@@ -13,7 +14,7 @@
       (contentsOpaque 1)
       (visible rect 0.00, 0.00 800.00 x 600.00)
       (contentsScale 1.00)
-      (children 3
+      (children 6
         (GraphicsLayer
           (position 8.00 96.00)
           (bounds 22.00 22.00)
@@ -22,6 +23,13 @@
           (contentsScale 1.00)
         )
         (GraphicsLayer
+          (position 8.00 138.00)
+          (bounds 22.00 22.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
           (position 8.00 86.00)
           (bounds 102.00 20.00)
           (drawsContent 1)
@@ -29,7 +37,28 @@
           (contentsScale 1.00)
         )
         (GraphicsLayer
-          (position 0.00 87.00)
+          (position 9.00 87.00)
+          (bounds 100.00 18.00)
+          (visible rect 0.00, 0.00 100.00 x 18.00)
+          (contentsScale 1.00)
+          (children 1
+            (GraphicsLayer
+              (bounds 100.00 18.00)
+              (drawsContent 1)
+              (visible rect 0.00, 0.00 100.00 x 18.00)
+              (contentsScale 1.00)
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 8.00 128.00)
+          (bounds 102.00 20.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
+          (position 0.00 129.00)
           (bounds 787.00 18.00)
           (drawsContent 1)
           (visible rect 0.00, 0.00 787.00 x 18.00)

Modified: trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt (157295 => 157296)


--- trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/LayoutTests/platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,8 +1,9 @@
 This tests if changing the clipping behaviour on the parent compositing layer makes the child layer disappear.
 
-Text in the green box should stay visible.
+Text in both of the green boxes should stay visible.
 
 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 (GraphicsLayer
   (bounds 800.00 600.00)
   (visible rect 0.00, 0.00 800.00 x 600.00)
@@ -13,7 +14,7 @@
       (contentsOpaque 1)
       (visible rect 0.00, 0.00 800.00 x 600.00)
       (contentsScale 1.00)
-      (children 3
+      (children 6
         (GraphicsLayer
           (position 8.00 96.00)
           (bounds 22.00 22.00)
@@ -22,6 +23,13 @@
           (contentsScale 1.00)
         )
         (GraphicsLayer
+          (position 8.00 138.00)
+          (bounds 22.00 22.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 22.00 x 22.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
           (position 8.00 86.00)
           (bounds 102.00 20.00)
           (drawsContent 1)
@@ -30,6 +38,27 @@
         )
         (GraphicsLayer
           (position 9.00 87.00)
+          (bounds 100.00 18.00)
+          (visible rect 0.00, 0.00 100.00 x 18.00)
+          (contentsScale 1.00)
+          (children 1
+            (GraphicsLayer
+              (bounds 100.00 18.00)
+              (drawsContent 1)
+              (visible rect 0.00, 0.00 100.00 x 18.00)
+              (contentsScale 1.00)
+            )
+          )
+        )
+        (GraphicsLayer
+          (position 8.00 128.00)
+          (bounds 102.00 20.00)
+          (drawsContent 1)
+          (visible rect 0.00, 0.00 102.00 x 20.00)
+          (contentsScale 1.00)
+        )
+        (GraphicsLayer
+          (position 9.00 129.00)
           (bounds 778.00 18.00)
           (drawsContent 1)
           (visible rect 0.00, 0.00 778.00 x 18.00)

Modified: trunk/Source/WebCore/ChangeLog (157295 => 157296)


--- trunk/Source/WebCore/ChangeLog	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/Source/WebCore/ChangeLog	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1,3 +1,26 @@
+2013-10-11  Zalan Bujtas  <[email protected]>
+
+        REGRESSION (r155607): _javascript_ site does not load visually on panerabread.com
+        https://bugs.webkit.org/show_bug.cgi?id=122461
+
+        Reviewed by Simon Fraser.
+        
+        Do not modify the composited layer backing's internal layer structure directly 
+        when the clipping behaviour changes.
+        
+        When we directly create/destroy RenderLayerBacking::m_ancestorClippingLayer to 
+        reflect the new clipping state, other, depending layers need updating. In order to
+        not to corrupt the internal hierarchy, mark the compositing layers dirty and let
+        the normal updating mechanism take care of creating/destroying the ancestor layers.
+
+        Existing tests are extended.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::checkIfDescendantClippingContextNeedsUpdate):
+        (WebCore::RenderLayer::styleChanged):
+        * rendering/RenderLayer.h:
+        * rendering/RenderLayerBacking.h:
+
 2013-10-10  Ryosuke Niwa  <[email protected]>
 
         Make EventPath private to EventDispatcher.cpp

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (157295 => 157296)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1159,22 +1159,19 @@
 }
 
 #if USE(ACCELERATED_COMPOSITING)
-// Return true if clipping change requires layer update.
-bool RenderLayer::updateDescendantClippingContext(bool addClipping)
+// Return true if the new clipping behaviour requires layer update.
+bool RenderLayer::checkIfDescendantClippingContextNeedsUpdate(bool isClipping)
 {
-    bool layerNeedsRebuild = false;
     for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
         RenderLayerBacking* backing = child->backing();
-        // Update layer context when new clipping is added or existing clipping is removed.
-        if (backing && (addClipping || backing->hasAncestorClippingLayer())) {
-            if (backing->updateAncestorClippingLayer(compositor().clippedByAncestor(*child)))
-                layerNeedsRebuild = true;
-        }
+        // Layer subtree needs update when new clipping is added or existing clipping is removed.
+        if (backing && (isClipping || backing->hasAncestorClippingLayer()))
+            return true;
 
-        if (child->updateDescendantClippingContext(addClipping))
-            layerNeedsRebuild = true;
+        if (child->checkIfDescendantClippingContextNeedsUpdate(isClipping))
+            return true;
     }
-    return layerNeedsRebuild;
+    return false;
 }
 #endif
 
@@ -6252,7 +6249,7 @@
         bool wasClipping = oldStyle->hasClip() || oldStyle->overflowX() != OVISIBLE || oldStyle->overflowY() != OVISIBLE;
         bool isClipping = style->hasClip() || style->overflowX() != OVISIBLE || style->overflowY() != OVISIBLE;
         if (isClipping != wasClipping) {
-            if (updateDescendantClippingContext(isClipping))
+            if (checkIfDescendantClippingContextNeedsUpdate(isClipping))
                 compositor().setCompositingLayersNeedRebuild();
         }
     }

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (157295 => 157296)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2013-10-11 08:35:36 UTC (rev 157296)
@@ -1047,7 +1047,7 @@
 
     void updateDescendantDependentFlags(HashSet<const RenderObject*>* outOfFlowDescendantContainingBlocks = 0);
 #if USE(ACCELERATED_COMPOSITING)
-    bool updateDescendantClippingContext(bool addClipping);
+    bool checkIfDescendantClippingContextNeedsUpdate(bool isClipping);
 #endif
 
     // This flag is computed by RenderLayerCompositor, which knows more about 3d hierarchies than we do.

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.h (157295 => 157296)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.h	2013-10-11 08:26:43 UTC (rev 157295)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.h	2013-10-11 08:35:36 UTC (rev 157296)
@@ -201,9 +201,6 @@
     void setBlendMode(BlendMode);
 #endif
 
-    // Update the current layer's clipping context, when ancestor's clipping behaviour changes.
-    bool updateAncestorClippingLayer(bool needsAncestorClip);
-
 private:
     void createPrimaryGraphicsLayer();
     void destroyGraphicsLayers();
@@ -216,6 +213,7 @@
     RenderLayerCompositor& compositor() const { return m_owningLayer->compositor(); }
 
     void updateInternalHierarchy();
+    bool updateAncestorClippingLayer(bool needsAncestorClip);
     bool updateDescendantClippingLayer(bool needsDescendantClip);
     bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool needsVerticalScrollbarLayer, bool needsScrollCornerLayer);
     bool updateForegroundLayer(bool needsForegroundLayer);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to