Following bug 9555, i encountered another bug: when an svg element has a size in percentages, and the parent is a html element, it doesn't draw at all. Adding simple testcase in a sec.
Created attachment 9224 [details] testcase
Hum... shouldn't be hard to fix. Looking at the RenderTree debug window, it seems the <svg> is correctly sized to 200x200, but the item inside it is not. I expect this has to do with SVG doing all of its layout in the DOM tree instead of the render tree.
The function which would need to change is: float SVGLength::PercentageOfViewport(float value, const SVGStyledElement* context, SVGLengthMode mode) } else if (viewportElement && viewportElement->isSVG()) { const SVGSVGElement* svg = static_cast<const SVGSVGElement*>(viewportElement); if (svg->hasAttribute(SVGNames::viewBoxAttr)) { width = svg->viewBox().width(); height = svg->viewBox().height(); } else { width = svg->width().value(); height = svg->height().value(); } } Possibly that if should just check to see if the <svg> has a renderer() and if it does, use that width/height. Seems a little hacky however. Really SVG length resolution just needs to move entirely into the rendering tree.
This is probably at least related to bug 5940
Created attachment 15025 [details] First attempt This should do it:) Cheers, Rob.
Comment on attachment 15025 [details] First attempt This looks fine. Since the change is in SVGLength, I wonder if now things like <div><svg:circle></div> will draw...
Landed in r 23530.