Diff
Modified: branches/chromium/874/LayoutTests/ChangeLog (100033 => 100034)
--- branches/chromium/874/LayoutTests/ChangeLog 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/LayoutTests/ChangeLog 2011-11-11 23:15:14 UTC (rev 100034)
@@ -1,3 +1,17 @@
+2011-10-24 Levi Weintraub <[email protected]>
+
+ <svg> fails to use explicit width and height inside <html> inside IFRAME
+ https://bugs.webkit.org/show_bug.cgi?id=64823
+
+ Reviewed by Nikolas Zimmermann.
+
+ Fixing a bug where SVG negotiated size when embedded in html inside an iframe.
+
+ * platform/chromium/test_expectations.txt: Will update with results on other platforms.
+ * platform/mac/svg/as-object/svg-embedded-in-html-in-iframe-expected.png: Added.
+ * platform/mac/svg/as-object/svg-embedded-in-html-in-iframe-expected.txt: Added.
+ * svg/as-object/svg-embedded-in-html-in-iframe.html: Added.
+
2011-10-20 Simon Fraser <[email protected]>
Hidden composited iframes cause infinite loop
Modified: branches/chromium/874/LayoutTests/compositing/repaint/shrink-layer.html (100033 => 100034)
--- branches/chromium/874/LayoutTests/compositing/repaint/shrink-layer.html 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/LayoutTests/compositing/repaint/shrink-layer.html 2011-11-11 23:15:14 UTC (rev 100034)
@@ -1,25 +1,25 @@
-<html>
-<head>
- <title>Test for bug 62243</title>
- <style type="text/css">
- #ruler {
- -webkit-transform: translateZ(0);
- border-bottom: 10px solid black;
- width: 550px;
- height: 500px;
- }
- </style>
- <script src=""
- <script>
- if (window.layoutTestController)
- layoutTestController.dumpAsText(true);
- function repaintTest()
- {
- document.getElementById("ruler").style.height = "450px";
- }
- </script>
-</head>
-<body _onload_="runRepaintTest()">
- <div id="ruler">
-</body>
-</html>
+<html>
+<head>
+ <title>Test for bug 62243</title>
+ <style type="text/css">
+ #ruler {
+ -webkit-transform: translateZ(0);
+ border-bottom: 10px solid black;
+ width: 550px;
+ height: 500px;
+ }
+ </style>
+ <script src=""
+ <script>
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText(true);
+ function repaintTest()
+ {
+ document.getElementById("ruler").style.height = "450px";
+ }
+ </script>
+</head>
+<body _onload_="runRepaintTest()">
+ <div id="ruler">
+</body>
+</html>
Modified: branches/chromium/874/LayoutTests/platform/mac/svg/as-object/svg-embedded-in-html-in-iframe-expected.txt (100033 => 100034)
--- branches/chromium/874/LayoutTests/platform/mac/svg/as-object/svg-embedded-in-html-in-iframe-expected.txt 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/LayoutTests/platform/mac/svg/as-object/svg-embedded-in-html-in-iframe-expected.txt 2011-11-11 23:15:14 UTC (rev 100034)
@@ -13,3 +13,18 @@
RenderSVGPath {circle} at (8,8) size 100x100 [fill={[type=SOLID] [color=#0000FF]}] [cx=50.00] [cy=50.00] [r=50.00]
RenderText {#text} at (0,0) size 0x0
RenderText {#text} at (0,0) size 0x0
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x170
+ RenderBlock {HTML} at (0,0) size 800x170
+ RenderBody {BODY} at (8,8) size 784x154
+ RenderPartObject {IFRAME} at (0,0) size 784x150
+ layer at (0,0) size 784x150
+ RenderView at (0,0) size 784x150
+ layer at (0,0) size 784x120
+ RenderBlock {HTML} at (0,0) size 784x120
+ RenderBody {BODY} at (8,8) size 768x104
+ RenderSVGRoot {svg} at (8,8) size 100x100
+ RenderSVGPath {circle} at (8,8) size 100x100 [fill={[type=SOLID] [color=#0000FF]}] [cx=50.00] [cy=50.00] [r=50.00]
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
Modified: branches/chromium/874/LayoutTests/svg/as-object/svg-embedded-in-html-in-iframe.html (100033 => 100034)
--- branches/chromium/874/LayoutTests/svg/as-object/svg-embedded-in-html-in-iframe.html 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/LayoutTests/svg/as-object/svg-embedded-in-html-in-iframe.html 2011-11-11 23:15:14 UTC (rev 100034)
@@ -20,3 +20,25 @@
</body>
</html>
+<!DOCTYPE html>
+<html>
+<head>
+<script type="text/_javascript_">
+function CreateCircle(){
+var B="";
+B+="<!DOCTYPE html>";
+B+="<html>";
+B+="<body>";
+B+="<svg style=\"width:100px;height:100px;\">";
+B+="<circle cx=\"50%\" cy=\"50%\" r=\"50%\" fill=\"blue\" stroke=\"none\" />";
+B+="</svg>";
+B+="</body></html>";
+return B;
+}
+</script>
+</head>
+<body>
+<iframe src="" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>
+</body>
+</html>
+
Modified: branches/chromium/874/Source/WebCore/ChangeLog (100033 => 100034)
--- branches/chromium/874/Source/WebCore/ChangeLog 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/Source/WebCore/ChangeLog 2011-11-11 23:15:14 UTC (rev 100034)
@@ -1,3 +1,20 @@
+2011-10-24 Levi Weintraub <[email protected]>
+
+ <svg> fails to use explicit width and height inside <html> inside IFRAME
+ https://bugs.webkit.org/show_bug.cgi?id=64823
+
+ Reviewed by Nikolas Zimmermann.
+
+ Checking that embedded SVG is in an SVG document before negotiating size
+ with the host document.
+
+ Test: svg/as-object/svg-embedded-in-html-in-iframe.html
+
+ * rendering/svg/RenderSVGRoot.cpp:
+ (WebCore::isEmbeddedThroughFrameContainingSVGDocument):
+ (WebCore::RenderSVGRoot::computeReplacedLogicalWidth):
+ (WebCore::RenderSVGRoot::computeReplacedLogicalHeight):
+
2011-10-21 Simon Fraser <[email protected]>
Fix Windows build.
Modified: branches/chromium/874/Source/WebCore/rendering/svg/RenderSVGRoot.cpp (100033 => 100034)
--- branches/chromium/874/Source/WebCore/rendering/svg/RenderSVGRoot.cpp 2011-11-11 23:06:35 UTC (rev 100033)
+++ branches/chromium/874/Source/WebCore/rendering/svg/RenderSVGRoot.cpp 2011-11-11 23:15:14 UTC (rev 100034)
@@ -130,6 +130,15 @@
return static_cast<int>(ceilf(replacedHeight * style()->effectiveZoom()));
}
+static inline bool isEmbeddedThroughFrameContainingSVGDocument(const Frame* frame)
+{
+ ASSERT(frame);
+ ASSERT(frame->document());
+ // If our frame has an owner renderer, we're embedded through eg. object/embed/iframe,
+ // but we only negotiate if we're in an SVG document.
+ return !frame->ownerRenderer() || !frame->document()->isSVGDocument();
+}
+
LayoutUnit RenderSVGRoot::computeReplacedLogicalWidth(bool includeMaxWidth) const
{
LayoutUnit replacedWidth = RenderBox::computeReplacedLogicalWidth(includeMaxWidth);
@@ -137,11 +146,10 @@
if (!frame)
return computeIntrinsicWidth(replacedWidth);
- // If our frame has an owner renderer, we're embedded through eg. object/embed.
- RenderPart* ownerRenderer = frame->ownerRenderer();
- if (!ownerRenderer)
+ if (isEmbeddedThroughFrameContainingSVGDocument(frame))
return computeIntrinsicWidth(replacedWidth);
+ RenderPart* ownerRenderer = frame->ownerRenderer();
RenderStyle* ownerRendererStyle = ownerRenderer->style();
ASSERT(ownerRendererStyle);
ASSERT(frame->contentRenderer());
@@ -179,11 +187,10 @@
if (!frame)
return computeIntrinsicHeight(replacedHeight);
- // If our frame has an owner renderer, we're embedded through eg. object/embed.
- RenderPart* ownerRenderer = frame->ownerRenderer();
- if (!ownerRenderer)
+ if (isEmbeddedThroughFrameContainingSVGDocument(frame))
return computeIntrinsicHeight(replacedHeight);
+ RenderPart* ownerRenderer = frame->ownerRenderer();
RenderStyle* ownerRendererStyle = ownerRenderer->style();
ASSERT(ownerRendererStyle);
ASSERT(frame->contentRenderer());