Title: [106510] trunk
Revision
106510
Author
[email protected]
Date
2012-02-01 15:59:59 -0800 (Wed, 01 Feb 2012)

Log Message

Backgrounds in HTML inside foreignObject don't draw
https://bugs.webkit.org/show_bug.cgi?id=23111

Patch by Florin Malita <[email protected]> on 2012-02-01
Reviewed by Eric Seidel.

Source/WebCore:

Test: svg/foreignObject/body-background.svg

* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintBackground):
Tweak the <body> background inhibiting logic to allow drawing when the element is embedded in FOs.

LayoutTests:

* svg/foreignObject/body-background-expected.png: Added.
* svg/foreignObject/body-background-expected.txt: Added.
* svg/foreignObject/body-background.svg: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (106509 => 106510)


--- trunk/LayoutTests/ChangeLog	2012-02-01 23:58:13 UTC (rev 106509)
+++ trunk/LayoutTests/ChangeLog	2012-02-01 23:59:59 UTC (rev 106510)
@@ -1,3 +1,14 @@
+2012-02-01  Florin Malita  <[email protected]>
+
+        Backgrounds in HTML inside foreignObject don't draw
+        https://bugs.webkit.org/show_bug.cgi?id=23111
+
+        Reviewed by Eric Seidel.
+
+        * svg/foreignObject/body-background-expected.png: Added.
+        * svg/foreignObject/body-background-expected.txt: Added.
+        * svg/foreignObject/body-background.svg: Added.
+
 2012-02-01  Oliver Hunt  <[email protected]>
 
         Add support for inferred function names

Added: trunk/LayoutTests/svg/foreignObject/body-background-expected.png (0 => 106510)


--- trunk/LayoutTests/svg/foreignObject/body-background-expected.png	                        (rev 0)
+++ trunk/LayoutTests/svg/foreignObject/body-background-expected.png	2012-02-01 23:59:59 UTC (rev 106510)
@@ -0,0 +1,8 @@
+\x89PNG
+
+
+IHDR X')tEXtchecksum644754518c2c96305ac534b3d96dc467\xFA\xC3x\xB2
+\xC0IDATx\x9C\xED\xD81
+\xC3@A\x9D\xF0\xBF\x8D_\xBE\xCA\xFC\x81k8U\xF9„ͮ\x99\xB9\xE8ܧ\xBC\x8D\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\xD8g\xE7x\xFDV\xB5\xFE\xE6;\xA7'\xC0,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80ؚ\x99\xD3^\xC5 &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b &\xB0b \xF6Re
+\xABr\x9C
+\xB7IEND\xAEB`\x82
\ No newline at end of file

Added: trunk/LayoutTests/svg/foreignObject/body-background-expected.txt (0 => 106510)


--- trunk/LayoutTests/svg/foreignObject/body-background-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/svg/foreignObject/body-background-expected.txt	2012-02-01 23:59:59 UTC (rev 106510)
@@ -0,0 +1,9 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderSVGRoot {svg} at (20,20) size 200x100
+    RenderSVGRect {rect} at (20,20) size 200x100 [fill={[type=SOLID] [color=#FF0000]}] [x=20.00] [y=20.00] [width=200.00] [height=100.00]
+    RenderSVGForeignObject {foreignObject} at (20,20) size 200x100
+      RenderBlock {html} at (0,0) size 200x100
+        RenderBody {body} at (0,0) size 200x100 [bgcolor=#008000]
+          RenderBlock {div} at (0,0) size 200x100

Added: trunk/LayoutTests/svg/foreignObject/body-background.svg (0 => 106510)


--- trunk/LayoutTests/svg/foreignObject/body-background.svg	                        (rev 0)
+++ trunk/LayoutTests/svg/foreignObject/body-background.svg	2012-02-01 23:59:59 UTC (rev 106510)
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="yes"?>
+<svg xmlns="http://www.w3.org/2000/svg">
+    <!-- The FO <body> background should cover this red rect -->
+    <rect x="20" y="20" width="200" height="100" fill="red"/>
+    <foreignObject  x="20" y="20" width="200" height="100">
+      <html xmlns="http://www.w3.org/1999/xhtml">
+        <body style="background-color: green; margin: 0px;">
+          <div style="height: 100px;"></div>
+        </body>
+      </html>
+    </foreignObject>
+</svg>

Modified: trunk/Source/WebCore/ChangeLog (106509 => 106510)


--- trunk/Source/WebCore/ChangeLog	2012-02-01 23:58:13 UTC (rev 106509)
+++ trunk/Source/WebCore/ChangeLog	2012-02-01 23:59:59 UTC (rev 106510)
@@ -1,3 +1,17 @@
+2012-02-01  Florin Malita  <[email protected]>
+
+        Backgrounds in HTML inside foreignObject don't draw
+        https://bugs.webkit.org/show_bug.cgi?id=23111
+
+        Reviewed by Eric Seidel.
+
+        Test: svg/foreignObject/body-background.svg
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::paintBackground):
+        Tweak the <body> background inhibiting logic to allow drawing when the element is embedded in FOs.
+
+
 2012-02-01  Gustavo Lima Chaves  <[email protected]>
 
         Make one able to set the local storage (tracker) database dir's path

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (106509 => 106510)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2012-02-01 23:58:13 UTC (rev 106509)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2012-02-01 23:59:59 UTC (rev 106510)
@@ -947,9 +947,11 @@
 {
     if (isRoot())
         paintRootBoxFillLayers(paintInfo);
-    else if (!isBody() || (document()->documentElement()->renderer() && document()->documentElement()->renderer()->hasBackground())) {
-        // The <body> only paints its background if the root element has defined a background
-        // independent of the body.
+    else if (!isBody()
+            || (document()->documentElement()->renderer() && document()->documentElement()->renderer()->hasBackground())
+            || (document()->documentElement()->renderer() != parent())) {
+        // The <body> only paints its background if the root element has defined a background independent of the body,
+        // or if the <body>'s parent is not the document element's renderer (e.g. inside SVG foreignObject).
         if (!backgroundIsObscured())
             paintFillLayers(paintInfo, style()->visitedDependentColor(CSSPropertyBackgroundColor), style()->backgroundLayers(), paintRect, bleedAvoidance);
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to