Title: [92933] branches/safari-534.51-branch

Diff

Modified: branches/safari-534.51-branch/LayoutTests/ChangeLog (92932 => 92933)


--- branches/safari-534.51-branch/LayoutTests/ChangeLog	2011-08-12 05:47:47 UTC (rev 92932)
+++ branches/safari-534.51-branch/LayoutTests/ChangeLog	2011-08-12 05:57:16 UTC (rev 92933)
@@ -1,5 +1,21 @@
 2011-08-11  Lucas Forschler  <[email protected]>
 
+    Merged 91689
+
+    2011-07-25  Daniel Bates  <[email protected]>
+
+            REGRESSION (r85964): Improper relayout of some nested positioned elements
+            https://bugs.webkit.org/show_bug.cgi?id=64286
+
+            Reviewed by David Hyatt.
+
+            Add test case to ensure we don't regress relayout of nested positioned elements.
+
+            * fast/block/positioning/relayout-nested-positioned-elements-expected-crash.txt: Added.
+            * fast/block/positioning/relayout-nested-positioned-elements-crash.html: Added.
+
+2011-08-11  Lucas Forschler  <[email protected]>
+
     Merged 91611
 
     2011-07-22  Sergey Glazunov  <[email protected]>

Copied: branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-crash.html (from rev 91689, trunk/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-crash.html) (0 => 92933)


--- branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-crash.html	                        (rev 0)
+++ branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-crash.html	2011-08-12 05:57:16 UTC (rev 92933)
@@ -0,0 +1,27 @@
+<html>
+<head>
+<title>Test case for bug 64286</title>
+<script>
+if (window.layoutTestController)
+    layoutTestController.dumpAsText();
+</script>
+</head>
+<body>
+<p>This tests that we don't cause an assertion failure on relayout of nested positioned elements. This test PASSED if we don't cause an assertion failure.</p>
+<div style="position:absolute">
+    <span style="position:relative">
+        PASS
+        <div style="position:absolute">
+            <input id="hideMe"/>
+        </div>
+    </span>
+</div>
+<script>
+window.setTimeout(runTest, 0); // For some reason we need the setTimeout() for this test to work.
+function runTest()
+{
+    document.getElementById("hideMe").style.display = "none";
+}
+</script>
+</body>
+</html>

Copied: branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-expected-crash.txt (from rev 91689, trunk/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-expected-crash.txt) (0 => 92933)


--- branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-expected-crash.txt	                        (rev 0)
+++ branches/safari-534.51-branch/LayoutTests/fast/block/positioning/relayout-nested-positioned-elements-expected-crash.txt	2011-08-12 05:57:16 UTC (rev 92933)
@@ -0,0 +1,3 @@
+This tests that we don't cause an assertion failure on relayout of nested positioned elements. This test PASSED if we don't cause an assertion failure.
+
+PASS 

Modified: branches/safari-534.51-branch/Source/WebCore/ChangeLog (92932 => 92933)


--- branches/safari-534.51-branch/Source/WebCore/ChangeLog	2011-08-12 05:47:47 UTC (rev 92932)
+++ branches/safari-534.51-branch/Source/WebCore/ChangeLog	2011-08-12 05:57:16 UTC (rev 92933)
@@ -1,5 +1,30 @@
 2011-08-11  Lucas Forschler  <[email protected]>
 
+    Merged 91689
+
+    2011-07-25  Daniel Bates  <[email protected]>
+
+            REGRESSION (r85964): Improper relayout of some nested positioned elements
+            https://bugs.webkit.org/show_bug.cgi?id=64286
+
+            Reviewed by David Hyatt.
+
+            Fixes an issue when traversing up the containing block hierarchy after skipping
+            relatively positioned inlines.
+
+            When processing a positioned element we skip any intermediate inlines to get to
+            to enclosing block B, but don't use the containing block for B (call this P_B) to
+            properly continue traversing up the containing block hierarchy. So, B may be
+            considered again instead of looking at P_B. Hence, we don't set the correct dirty
+            bits for P_B and may not schedule a relayout with respect to the correct layout node.
+
+            Test: fast/block/positioning/relayout-nested-positioned-elements-crash.html
+
+            * rendering/RenderObject.h:
+            (WebCore::RenderObject::markContainingBlocksForLayout):
+
+2011-08-11  Lucas Forschler  <[email protected]>
+
     Merged 91611
 
     2011-07-22  Sergey Glazunov  <[email protected]>

Modified: branches/safari-534.51-branch/Source/WebCore/rendering/RenderObject.h (92932 => 92933)


--- branches/safari-534.51-branch/Source/WebCore/rendering/RenderObject.h	2011-08-12 05:47:47 UTC (rev 92932)
+++ branches/safari-534.51-branch/Source/WebCore/rendering/RenderObject.h	2011-08-12 05:57:16 UTC (rev 92933)
@@ -1020,10 +1020,13 @@
         if (!container && !o->isRenderView())
             return;
         if (!last->isText() && (last->style()->position() == FixedPosition || last->style()->position() == AbsolutePosition)) {
+            bool willSkipRelativelyPositionedInlines = !o->isRenderBlock();
             while (o && !o->isRenderBlock()) // Skip relatively positioned inlines and get to the enclosing RenderBlock.
                 o = o->container();
             if (!o || o->m_posChildNeedsLayout)
                 return;
+            if (willSkipRelativelyPositionedInlines)
+                container = o->container();
             o->m_posChildNeedsLayout = true;
             simplifiedNormalFlowLayout = true;
             ASSERT(!o->isSetNeedsLayoutForbidden());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to