Diff
Modified: branches/safari-534.54-branch/LayoutTests/ChangeLog (104241 => 104242)
--- branches/safari-534.54-branch/LayoutTests/ChangeLog 2012-01-06 00:32:25 UTC (rev 104241)
+++ branches/safari-534.54-branch/LayoutTests/ChangeLog 2012-01-06 00:33:53 UTC (rev 104242)
@@ -1,5 +1,24 @@
2011-1-5 Lucas Forschler <[email protected]>
+ Merge 99731
+
+ 2011-11-09 Ken Buchanan <[email protected]>
+
+ SVG foreignObject wrong container
+ https://bugs.webkit.org/show_bug.cgi?id=64780
+
+ Reviewed by Simon Fraser.
+
+ Added layout test for 64780 fix, rebaselined a test that it broke.
+ This will cause gtk and qt ports to also need rebaseline.
+
+ * platform/mac/svg/overflow/overflow-on-foreignObject-expected.png: Rebaseline
+ * platform/mac/svg/overflow/overflow-on-foreignObject-expected.txt: Rebaseline
+ * svg/foreignObject/absolute-position-foreign-object-child-crash.html: Added
+ * svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt: Added
+
+2011-1-5 Lucas Forschler <[email protected]>
+
Merge 99579
2011-11-08 Justin Schuh <[email protected]>
Modified: branches/safari-534.54-branch/LayoutTests/platform/mac/svg/overflow/overflow-on-foreignObject-expected.png
(Binary files differ)
Modified: branches/safari-534.54-branch/LayoutTests/platform/mac/svg/overflow/overflow-on-foreignObject-expected.txt (104241 => 104242)
--- branches/safari-534.54-branch/LayoutTests/platform/mac/svg/overflow/overflow-on-foreignObject-expected.txt 2012-01-06 00:32:25 UTC (rev 104241)
+++ branches/safari-534.54-branch/LayoutTests/platform/mac/svg/overflow/overflow-on-foreignObject-expected.txt 2012-01-06 00:33:53 UTC (rev 104242)
@@ -3,5 +3,5 @@
layer at (0,0) size 500x500
RenderSVGRoot {svg} at (200,200) size 300x300
RenderSVGForeignObject {foreignObject} at (100,100) size 300x300
-layer at (100,100) size 6006x6006 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 outlineClip at (0,0) size 800x600
- RenderBlock (positioned) {html:div} at (100,100) size 6006x6006 [bgcolor=#008000] [border: (3px solid #000000)]
+layer at (0,0) size 6006x6006 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600 outlineClip at (0,0) size 800x600
+ RenderBlock (positioned) {html:div} at (0,0) size 6006x6006 [bgcolor=#008000] [border: (3px solid #000000)]
Copied: branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt (from rev 99731, trunk/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt) (0 => 104242)
--- branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt (rev 0)
+++ branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash-expected.txt 2012-01-06 00:33:53 UTC (rev 104242)
@@ -0,0 +1 @@
+PASS
Copied: branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash.html (from rev 99731, trunk/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash.html) (0 => 104242)
--- branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash.html (rev 0)
+++ branches/safari-534.54-branch/LayoutTests/svg/foreignObject/absolute-position-foreign-object-child-crash.html 2012-01-06 00:33:53 UTC (rev 104242)
@@ -0,0 +1,25 @@
+<script src=""
+
+<svg>
+ <foreignObject>
+ <div style="position: absolute;">
+ <div id="div1"></div>
+ <div id="div2" style="overflow:hidden; width:100px; height:100px;">x</div>
+ </div>
+ </foreignObject>
+</svg>
+<script>
+function RemoveNode(n) { n.parentNode.removeChild(n) }
+ window._onload_ = function() {
+ document.body.offsetTop; // Force layout.
+ RemoveNode(document.getElementById('div1'));
+ document.body.offsetTop; // Force layout.
+ RemoveNode(document.getElementById('div2'));
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+}
+</script>
+<body>
+ PASS
+</body>
+
Modified: branches/safari-534.54-branch/Source/WebCore/ChangeLog (104241 => 104242)
--- branches/safari-534.54-branch/Source/WebCore/ChangeLog 2012-01-06 00:32:25 UTC (rev 104241)
+++ branches/safari-534.54-branch/Source/WebCore/ChangeLog 2012-01-06 00:33:53 UTC (rev 104242)
@@ -1,5 +1,31 @@
2011-1-5 Lucas Forschler <[email protected]>
+ Merge 99731
+
+ 2011-11-09 Ken Buchanan <[email protected]>
+
+ SVG foreignObject wrong container
+ https://bugs.webkit.org/show_bug.cgi?id=64780
+
+ Reviewed by Simon Fraser.
+
+ Resubmitting a patch originally by [email protected].
+ In determining where to add to m_positionedObjects during a repaint,
+ containingBlock is used, which adds the absolute positioned object to
+ the containing foreignObject. But, when the contained object is
+ dirtied, container() was used to dirty up the tree, which skipped over
+ the foreignObject causing the wrong parent to needsLayout(). This fix
+ makes container() and containingBlock() handle svg foreignObject's in
+ the same way.
+
+ This patch will cause svg/overflow/overflow-on-foreignObject.svg to
+ require rebaselined results on qt and gtk ports.
+
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::container):
+
+2011-1-5 Lucas Forschler <[email protected]>
+
Merge 99579
2011-11-08 Justin Schuh <[email protected]>
Modified: branches/safari-534.54-branch/Source/WebCore/rendering/RenderObject.cpp (104241 => 104242)
--- branches/safari-534.54-branch/Source/WebCore/rendering/RenderObject.cpp 2012-01-06 00:32:25 UTC (rev 104241)
+++ branches/safari-534.54-branch/Source/WebCore/rendering/RenderObject.cpp 2012-01-06 00:33:53 UTC (rev 104242)
@@ -2061,6 +2061,10 @@
while (o && o->style()->position() == StaticPosition && !o->isRenderView() && !(o->hasTransform() && o->isRenderBlock())) {
if (repaintContainerSkipped && o == repaintContainer)
*repaintContainerSkipped = true;
+#if ENABLE(SVG)
+ if (o->isSVGForeignObject()) // foreignObject is the containing block for contents inside it
+ break;
+#endif
o = o->parent();
}
}
Property changes on: branches/safari-534.54-branch/Source/WebCore/rendering/RenderObject.cpp
___________________________________________________________________
Added: svn:executable