Crash when mixing layers, foreignObjects and SVG hidden containers
authorfmalita@chromium.org <fmalita@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2012 21:51:24 +0000 (21:51 +0000)
committerfmalita@chromium.org <fmalita@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Nov 2012 21:51:24 +0000 (21:51 +0000)
https://bugs.webkit.org/show_bug.cgi?id=87297

Reviewed by Dirk Schulze.

Source/WebCore:

Foreign objects may introduce content which requires layers, but layer creation is
suppressed within RenderSVGHiddenContainer subtrees and this yields an inconsistent render
tree state. This patch prevents foreignObject renderer instantiation under
RenderSVGHiddenContainers.

Test: svg/foreignObject/foreign-object-defs-crash.svg

* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::rendererIsNeeded):
(WebCore):
* svg/SVGForeignObjectElement.h:
(SVGForeignObjectElement):

LayoutTests:

* platform/chromium-mac-snowleopard/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
* platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/chromium-win/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/chromium-win/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* platform/chromium/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
* platform/chromium/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/chromium/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/chromium/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* platform/efl/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/efl/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* platform/gtk/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
* platform/gtk/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/gtk/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/gtk/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
* platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/mac/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/mac/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* platform/qt/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
* platform/qt/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
* platform/qt/svg/foreignObject/fO-parent-display-none-expected.txt:
* platform/qt/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
* platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
* platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
* svg/custom/use-on-g-containing-foreignObject-and-image-expected.txt:
* svg/foreignObject/foreign-object-defs-crash-expected.txt: Added.
* svg/foreignObject/foreign-object-defs-crash.svg: Added.
* svg/foreignObject/text-tref-02-b-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@133521 268f45cc-cd09-0410-ab3c-d52691b4dbfc

43 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/chromium-mac-snowleopard/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-5-expected.txt
LayoutTests/platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/chromium-win/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/chromium-win/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/chromium/svg/custom/use-on-disallowed-foreign-object-5-expected.txt
LayoutTests/platform/chromium/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/chromium/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/chromium/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/efl/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/efl/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-5-expected.txt
LayoutTests/platform/gtk/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/gtk/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/gtk/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.txt
LayoutTests/platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/mac/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/mac/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/qt/svg/custom/use-on-disallowed-foreign-object-5-expected.txt
LayoutTests/platform/qt/svg/custom/use-on-disallowed-foreign-object-6-expected.txt
LayoutTests/platform/qt/svg/foreignObject/fO-parent-display-none-expected.txt
LayoutTests/platform/qt/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt
LayoutTests/platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt
LayoutTests/svg/custom/use-on-g-containing-foreignObject-and-image-expected.txt
LayoutTests/svg/foreignObject/foreign-object-defs-crash-expected.txt [new file with mode: 0644]
LayoutTests/svg/foreignObject/foreign-object-defs-crash.svg [new file with mode: 0644]
LayoutTests/svg/foreignObject/text-tref-02-b-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/svg/SVGForeignObjectElement.cpp
Source/WebCore/svg/SVGForeignObjectElement.h

index 3a805d2..533a805 100644 (file)
@@ -1,3 +1,50 @@
+2012-11-05  Florin Malita  <fmalita@chromium.org>
+
+        Crash when mixing layers, foreignObjects and SVG hidden containers
+        https://bugs.webkit.org/show_bug.cgi?id=87297
+
+        Reviewed by Dirk Schulze.
+
+        * platform/chromium-mac-snowleopard/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
+        * platform/chromium-win/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/chromium-win/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/chromium-win/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/chromium-win/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/chromium/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
+        * platform/chromium/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/chromium/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/chromium/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/chromium/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/efl/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/efl/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/efl/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/gtk/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
+        * platform/gtk/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/gtk/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/gtk/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/gtk/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
+        * platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/mac/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/mac/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/mac/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/qt/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
+        * platform/qt/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
+        * platform/qt/svg/foreignObject/fO-parent-display-none-expected.txt:
+        * platform/qt/svg/foreignObject/fO-parent-display-none-with-relative-pos-content-expected.txt:
+        * platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-expected.txt:
+        * platform/qt/svg/foreignObject/fO-parent-of-parent-display-none-with-relative-pos-content-expected.txt:
+        * svg/custom/use-on-g-containing-foreignObject-and-image-expected.txt:
+        * svg/foreignObject/foreign-object-defs-crash-expected.txt: Added.
+        * svg/foreignObject/foreign-object-defs-crash.svg: Added.
+        * svg/foreignObject/text-tref-02-b-expected.txt:
+
 2012-11-05  Stephen White  <senorblanco@chromium.org>
 
         [chromium] Mark several compositing tests as only failing Image
index 6eeabee..2f1408b 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x18
-              text run at (0,0) width 244: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x18
index e5eed6a..7c01299 100644 (file)
@@ -4,10 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {symbol} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x20
-            RenderText {#text} at (0,0) size 230x19
-              text run at (0,0) width 230: "You should only see this string ONCE"
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x20
         RenderText {#text} at (0,0) size 230x19
index 0263da6..8495d47 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x20
-            RenderText {#text} at (0,0) size 230x19
-              text run at (0,0) width 230: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x20
         RenderText {#text} at (0,0) size 230x19
index da4252d..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 72x39
-              text run at (0,0) width 72: "FAILED IF"
-              text run at (0,20) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index da4252d..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 72x39
-              text run at (0,0) width 72: "FAILED IF"
-              text run at (0,20) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index c8e9b01..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 72x39
-                text run at (0,0) width 72: "FAILED IF"
-                text run at (0,20) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index c8e9b01..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 72x39
-                text run at (0,0) width 72: "FAILED IF"
-                text run at (0,20) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index f886ed1..6b019b4 100644 (file)
@@ -4,10 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {symbol} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x18
-              text run at (0,0) width 244: "You should only see this string ONCE"
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x18
index 6eeabee..2f1408b 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x18
-              text run at (0,0) width 244: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x18
index 241ad9e..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x36
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 241ad9e..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x36
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2f54270..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x36
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2f54270..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x36
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2fd7815..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x37
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2fd7815..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x37
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 6e30775..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x37
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 6e30775..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x37
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 1145bdb..7b7f6ef 100644 (file)
@@ -4,10 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {symbol} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x19
-              text run at (0,0) width 244: "You should only see this string ONCE"
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x19
index 3afe252..46faaba 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x19
-              text run at (0,0) width 244: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x19
index 2fd7815..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x37
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2fd7815..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x37
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 6e30775..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x37
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 6e30775..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x37
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index f886ed1..6b019b4 100644 (file)
@@ -4,10 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {symbol} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x18
-              text run at (0,0) width 244: "You should only see this string ONCE"
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x18
index 6eeabee..2f1408b 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x18
-            RenderText {#text} at (0,0) size 244x18
-              text run at (0,0) width 244: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x18
         RenderText {#text} at (0,0) size 244x18
index 241ad9e..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x36
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 241ad9e..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 76x36
-              text run at (0,0) width 76: "FAILED IF"
-              text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2f54270..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x36
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2f54270..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 76x36
-                text run at (0,0) width 76: "FAILED IF"
-                text run at (0,18) width 62: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 6214ba2..fc4ac43 100644 (file)
@@ -4,10 +4,6 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
       RenderSVGHiddenContainer {symbol} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x19
-            RenderText {#text} at (0,0) size 230x19
-              text run at (0,0) width 230: "You should only see this string ONCE"
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x19
         RenderText {#text} at (0,0) size 230x19
index 4331474..e656b57 100644 (file)
@@ -3,11 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (54,54) size 746x546
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGViewportContainer {svg} at (43,43) size 757x557
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
-          RenderBlock {xhtml:div} at (0,0) size 580x19
-            RenderText {#text} at (0,0) size 230x19
-              text run at (0,0) width 230: "You should only see this string ONCE"
+      RenderSVGViewportContainer {svg} at (0,0) size 0x0
     RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
       RenderBlock {xhtml:div} at (0,0) size 580x19
         RenderText {#text} at (0,0) size 230x19
index 2d34ab5..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 72x38
-              text run at (0,0) width 72: "FAILED IF"
-              text run at (0,19) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 2d34ab5..b2c7fc4 100644 (file)
@@ -3,10 +3,4 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
-      RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-        RenderBlock {html} at (0,0) size 0x100
-          RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-            RenderText {#text} at (0,0) size 72x38
-              text run at (0,0) width 72: "FAILED IF"
-              text run at (0,19) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index e59f9df..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 72x38
-                text run at (0,0) width 72: "FAILED IF"
-                text run at (0,19) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index e59f9df..8ece91e 100644 (file)
@@ -4,10 +4,4 @@ layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (0,0) size 100x90
     RenderSVGHiddenContainer {g} at (0,0) size 0x0
       RenderSVGContainer {g} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderBlock {html} at (0,0) size 0x100
-            RenderBody {body} at (0,0) size 100x100 [color=#FF0000]
-              RenderText {#text} at (0,0) size 72x38
-                text run at (0,0) width 72: "FAILED IF"
-                text run at (0,19) width 58: "VISIBLE"
     RenderSVGRect {rect} at (0,0) size 100x90 [fill={[type=SOLID] [color=#008000]}] [x=0.00] [y=0.00] [width=100.00] [height=90.00]
index 68728c9..227febd 100644 (file)
@@ -3,8 +3,7 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderSVGRoot {svg} at (25,25) size 75x75
     RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-      RenderSVGContainer {g} at (0,0) size 590x390
-        RenderSVGForeignObject {foreignObject} at (10,10) size 580x380
+      RenderSVGContainer {g} at (0,0) size 75x75
         RenderSVGImage {image} at (0,0) size 75x75
     RenderSVGContainer {use} at (25,25) size 75x75 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}]
       RenderSVGContainer {g} at (25,25) size 75x75
diff --git a/LayoutTests/svg/foreignObject/foreign-object-defs-crash-expected.txt b/LayoutTests/svg/foreignObject/foreign-object-defs-crash-expected.txt
new file mode 100644 (file)
index 0000000..9b9c972
--- /dev/null
@@ -0,0 +1 @@
+PASS: did not crash.
diff --git a/LayoutTests/svg/foreignObject/foreign-object-defs-crash.svg b/LayoutTests/svg/foreignObject/foreign-object-defs-crash.svg
new file mode 100644 (file)
index 0000000..4c0e67f
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <!-- Test for https://bugs.webkit.org/show_bug.cgi?id=87297 -->
+  <defs>
+    <g id="grp1">
+      <foreignObject width="400" height="200">
+        <xhtml:div xmlns="http://www.w3.org/1999/xhtml" style="position:absolute;"></xhtml:div>
+      </foreignObject>
+    </g>
+
+    <use xlink:href="#grp2"/>
+  </defs>
+  <g>
+    <use xlink:href="#grp1"/>
+  </g>
+
+  <g id="grp2">
+    <foreignObject width="400" height="200">
+      <xhtml:div xmlns="http://www.w3.org/1999/xhtml" style="position:absolute;"></xhtml:div>
+    </foreignObject>
+  </g>
+
+  <linearGradient>
+    <foreignObject>
+      <xhtml:div xmlns="http://www.w3.org/1999/xhtml" style="position:fixed;"></xhtml:div>
+    </foreignObject>
+  </linearGradient>
+
+  <text>PASS: did not crash.</text>
+
+  <script>
+    if (window.testRunner)
+      testRunner.dumpAsText();
+  </script>
+</svg>
index 27ff864..0f8bb24 100644 (file)
@@ -22,12 +22,6 @@ layer at (0,0) size 800x600
         RenderSVGInline {tref} at (0,0) size 0x0
         RenderSVGInlineText {#text} at (0,0) size 0x0
       RenderSVGHiddenContainer {defs} at (0,0) size 0x0
-        RenderSVGForeignObject {foreignObject} at (0,0) size 0x0
-          RenderSVGRoot {svg} at (0,0) size 0x0
-            RenderSVGText {text} at (0,-15) size 42x18 contains 1 chunk(s)
-              RenderSVGInlineText {#text} at (0,0) size 42x18
-                chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 5 width 41.00: "Hello"
-          RenderText {#text} at (0,0) size 0x0
     RenderSVGContainer {g} at (16,523) size 376x56
       RenderSVGText {text} at (10,314) size 225x32 contains 1 chunk(s)
         RenderSVGInlineText {#text} at (0,0) size 225x32
index e2fd0ec..dd11121 100644 (file)
@@ -1,3 +1,23 @@
+2012-11-05  Florin Malita  <fmalita@chromium.org>
+
+        Crash when mixing layers, foreignObjects and SVG hidden containers
+        https://bugs.webkit.org/show_bug.cgi?id=87297
+
+        Reviewed by Dirk Schulze.
+
+        Foreign objects may introduce content which requires layers, but layer creation is
+        suppressed within RenderSVGHiddenContainer subtrees and this yields an inconsistent render
+        tree state. This patch prevents foreignObject renderer instantiation under
+        RenderSVGHiddenContainers.
+
+        Test: svg/foreignObject/foreign-object-defs-crash.svg
+
+        * svg/SVGForeignObjectElement.cpp:
+        (WebCore::SVGForeignObjectElement::rendererIsNeeded):
+        (WebCore):
+        * svg/SVGForeignObjectElement.h:
+        (SVGForeignObjectElement):
+
 2012-11-05  Simon Fraser  <simon.fraser@apple.com>
 
         Remove the unused m_fixedPositionedElements from RenderView
index f2376af..d4f2a82 100644 (file)
@@ -148,6 +148,24 @@ bool SVGForeignObjectElement::childShouldCreateRenderer(const NodeRenderingConte
     return StyledElement::childShouldCreateRenderer(childContext);
 }
 
+bool SVGForeignObjectElement::rendererIsNeeded(const NodeRenderingContext& context)
+{
+    // Suppress foreignObject renderers in SVG hidden containers.
+    // (https://bugs.webkit.org/show_bug.cgi?id=87297)
+    // Note that we currently do not support foreignObject instantiation via <use>, hence it is safe
+    // to use parentElement() here. If that changes, this method should be updated to use
+    // parentOrHostElement() instead.
+    Element* ancestor = parentElement();
+    while (ancestor && ancestor->isSVGElement()) {
+        if (ancestor->renderer() && ancestor->renderer()->isSVGHiddenContainer())
+            return false;
+
+        ancestor = ancestor->parentElement();
+    }
+
+    return SVGStyledTransformableElement::rendererIsNeeded(context);
+}
+
 bool SVGForeignObjectElement::selfHasRelativeLengths() const
 {
     return x().isRelative()
index be23dd3..4a25195 100644 (file)
@@ -46,6 +46,7 @@ private:
     virtual void parseAttribute(const Attribute&) OVERRIDE;
     virtual void svgAttributeChanged(const QualifiedName&);
 
+    virtual bool rendererIsNeeded(const NodeRenderingContext&) OVERRIDE;
     virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const;
     virtual RenderObject* createRenderer(RenderArena* arena, RenderStyle* style);