[Webkit-unassigned] [Bug 12579] WebKit fails SVG xml:base test

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 5 13:11:25 PST 2007


http://bugs.webkit.org/show_bug.cgi?id=12579





------- Comment #3 from rwlbuis at gmail.com  2007-03-05 13:11 PDT -------
Hi Darin,

(In reply to comment #2)
> (From update of attachment 13474 [edit])
> The Node class is one of the ones that has some automatically generated
> bindings along with some manually-done legacy ones. Because of this, you should
> put the baseURL property into Node.idl instead of making the changes to
> kjs_dom.cpp and kjs_dom.h so you don't create more legacy for us to deal with
> later.

I think only the Node constructor is generated, the properties not AFAICS?

> To me it looks like baseURI should be a virtual function. It's a little strange
> to use a case statement instead. Or at least there should be an inner part
> that's a virtual function.

Possible.

> +            xmlbase = KURL(static_cast<const
> Element*>(this)->getAttribute(XMLNames::baseAttr).deprecatedString());
> +
> +            if (!xmlbase.protocol().isEmpty())
> +                return xmlbase.url();
> 
> The above code seems like an inefficient way to do the job. Basically we're
> just looking for a ":" but we convert both to and from a DeprecatedString. This
> really cries out for some simple URL-related functions we can just call on
> strings. But I guess it's no big deal.

Possible. I need to check the kdom method KURL::isRelative.

> Why isn't baseURI using the Document::completeURL function? It seems to be
> replicating what it does.

I am not seeing how. The baseURI algorithm may need multiple parent iterations,
while completeURL just uses the current node. It is described here:

http://www.w3.org/TR/2001/REC-xmlbase-20010627/

> Same comment for SVGImageLoader::updateFromElement. Why isn't it using
> Document::completeURL? If it's really different than the standard relative URL
> rules, then I'd like to see test cases demonstrating that.

I hope I am right, but I honestly see how :)

> Is the rule about resolving URLs really different for SVG that HTML? If so,
> then can we put a new function on Document instead of giving SVGImageLoader its
> own relative-URL completion code?

Well it seems different due to xml:base usage at least.

> -            if (attr->name().matches(XLinkNames::hrefAttr))
> +            if (attr->name().matches(XLinkNames::hrefAttr) &&
> !ownerDocument()->parsing())
> 
> Are you sure parsing is the right check here? Maybe a better check is just to
> see if you're attached, since you are doing the update in attach().

That seems a bit better, I did that locally now.

> I think that baseURI and documentURI are not really needed to fix this. There's
> no reason SVGImageLoader has to use new functions from the DOM standard just to
> resolve a relative URL, is there?

I think xmlbase usage is a bit more complex than completeURL. Please let me
know if I got that wrong though, as it is pretty fundamental for the patch :)
I'll probably attach a new patch soon, since the attached and virtual
suggestions sound great to me.
Cheers,

Rob.


-- 
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list