Remove SVGTests.hasExtension?

# Frédéric Wang (4 days ago)

4 years ago, the SVG WG resolved to remove SVGTests.hasExtension due to lack of use and being a poor API. It was removed from Chromium at that time and has been removed from Firefox recently.

I'm not sure whether the WebKit community is willing to keep that feature. Anyway I opened a bug entry to track possible removal:

bugs.webkit.org/show_bug.cgi?id=198652

Contact us to advertise here
# Ryosuke Niwa (4 days ago)

Does Edge support it? When did Firefox remove this feature?

# Frédéric Wang (4 days ago)

Patch for Firefox was uploaded 4 years ago and they announced plan for removal at that time. We pinged Mozilla some weeks ago about it, they landed the patch and announced it:

bugzilla.mozilla.org/show_bug.cgi?id=1133175, www.fxsitecompat.com/en-CA/docs/2019/hasextension-has-been-removed-from-some-svg-interfaces, www.fxsitecompat.com/en-CA/docs/2015/several-properties-will-be-removed-from-svgsvgelement

I didn't check Edge, but Microsoft is migrating to Chromium so that's not going to be there in future versions.

# Ryosuke Niwa (3 days ago)

The concern here isn't with the future versions of Edge or Firefox but rather with the content that may be relying on this feature even unintentionally. Removing a JS method or object is very high risk because that could result in an immediate JS exception and break a key functionality of a website.

This is why HTML and DOM standards has a bunch of methods that don't do anything like Range's detach: dom.spec.whatwg.org/#dom-range-detach

  • R. Niwa
# Philip Jägenstedt (a day ago)

FWIW, here's the original intent to remove it from Chromium: groups.google.com/a/chromium.org/d/msg/blink-dev/Ae_lmov16_o/Wa5XhHFoAAAJ

We had use counters, and I wrote "Usage is zero for all of them."

When concerned about usage in the wild, the tool we usually use for Chromium is httparchive, currently containing ~460k pages. I just did a quick search and found 230 matches for ".hasExtension(". But most are ".hasExtension()" and obviously not use of this API. A search for the regexp r'.hasExtension([^)]' gives only 34 matches, listed here: gist.github.com/foolip/5081f13794baafcd400d8630778dad86

A larger CSV with the bodies included: drive.google.com/file/d/1neFKBtmyjOLaRb_sppP3cmMeFEXfiGqr/view?usp=sharing

Skimming that, I can't find any real usage of SVG's hasExtension, it seems to be mostly utility code around file extensions.

Ryosuke, does that address the concern of existing content, or is there anything else you'd check?

Note that in the case of Range's detach, I don't think anyone made an attempt to remove it: www.w3.org/Bugs/Public/show_bug.cgi?id=14591

There are 865,911 resources (more than there are pages) matching ".detach()" in httparchive, probably also mostly not real usage, but still putting it in a very different situation than hasExtension :)

HTH

# Maciej Stachowiak (16 hours ago)

The one remaining thing we could potentially worry about is platform-specific content, like books or content embedded in apps. But given what SVGTests.hasExtension() is supposed to do, that seems very unlikely.

Since SVG WG resolved to remove it, has it in fact been removed from the SVG spec?

# Frédéric Wang (10 hours ago)

On 10/06/2019 17:31, Maciej Stachowiak wrote: >

Since SVG WG resolved to remove it, has it in fact been removed from the SVG spec?

Right, compare SVG 2 (W3C Recommendation 04 October 2018):

www.w3.org/TR/SVG2/types.html#InterfaceSVGTests

and SVG 1.1 (W3C Recommendation 16 August 2011):

www.w3.org/TR/SVG11/types.html#InterfaceSVGTests /

Want more features?

Request early access to our private beta of readable email premium.