From 4897a0545d987114feb843c27abd7873f6788046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Tue, 16 Mar 2021 10:34:58 +0100 Subject: [PATCH 1/3] Merge duplicate SVGGeometryElement+SVGPathElement entries This was tested by checking for the 3 members on all 7 types of elements which currently inherit from SVGGeometryElement: http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=9076 ```js var tags = ['circle', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'rect']; var members = ['getPointAtLength', 'getTotalLength', 'pathLength']; tags.forEach(function(localName) { var e = document.createElementNS('http://www.w3.org/2000/svg', localName); members.forEach(function(member) { w(localName + '.' + member + ': ' + typeof e[member]); }); }); ``` In Chromium, getTotalLength and getPointAtLength were moved in M56, and pathLength was moved in M57: https://bugs.chromium.org/p/chromium/issues/detail?id=596043 https://storage.googleapis.com/chromium-find-releases-static/887.html#887bbf6c0edcabfa012099379c2d68a3dc4afd3f https://storage.googleapis.com/chromium-find-releases-static/6fd.html#6fd1cbb3c5a636ee3830729e4b26ca1d5d78c8d6 In Gecko, the SVGGeometryElement was introduced in 53, but elements other than were made to inherit in 61: https://bugzilla.mozilla.org/show_bug.cgi?id=1239100 https://bugzilla.mozilla.org/show_bug.cgi?id=1325320 In WebKit the change was made at trunk version 606.1.14: https://trac.webkit.org/changeset/230829/webkit https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/Configurations/Version.xcconfig?rev=230829 In Edge 13 and IE 11, only path.getPointAtLength and path.getTotalLength were supported, there was no support for pathLength. In Opera 12.16, all 3 members were supported on path and nowhere else. Fixes https://github.com/mdn/browser-compat-data/issues/9183. --- api/SVGGeometryElement.json | 524 +++++++++++++++++++++++++----------- api/SVGPathElement.json | 148 ---------- 2 files changed, 366 insertions(+), 306 deletions(-) diff --git a/api/SVGGeometryElement.json b/api/SVGGeometryElement.json index dee757d2989e7b..5c8bdbe2001bcf 100644 --- a/api/SVGGeometryElement.json +++ b/api/SVGGeometryElement.json @@ -11,13 +11,13 @@ "version_added": "18" }, "edge": { - "version_added": "≤79" + "version_added": "12" }, "firefox": { - "version_added": "53" + "version_added": "1.5" }, "firefox_android": { - "version_added": "53" + "version_added": "4" }, "ie": { "version_added": "9" @@ -29,7 +29,7 @@ "version_added": "≤12.1" }, "safari": { - "version_added": "1" + "version_added": "3" }, "safari_ios": { "version_added": "1" @@ -51,44 +51,132 @@ "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getPointAtLength", "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "≤79" - }, - "firefox": { - "version_added": "53", - "notes": "Before version 53, this method was defined on the SVGPathElement interface, which inherits from this interface." - }, - "firefox_android": { - "version_added": "53", - "notes": "Before version 53, this method was defined on the SVGPathElement interface, which inherits from this interface." - }, + "chrome": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "chrome_android": [ + { + "version_added": "56" + }, + { + "version_added": "18", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "edge": [ + { + "version_added": "79" + }, + { + "version_added": "12", + "version_removed": "79", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "firefox": [ + { + "version_added": "61" + }, + { + "version_added": "1.5", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "firefox_android": [ + { + "version_added": "61" + }, + { + "version_added": "4", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], "ie": { - "version_added": "9" - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } + "version_added": "9", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + }, + "opera": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "opera_android": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari": [ + { + "version_added": "12" + }, + { + "version_added": "3", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari_ios": [ + { + "version_added": "12" + }, + { + "version_added": "1", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "samsunginternet_android": [ + { + "version_added": "6.0" + }, + { + "version_added": "1.0", + "version_removed": "6.0", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "webview_android": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ] }, "status": { "experimental": false, @@ -101,44 +189,132 @@ "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getTotalLength", "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "≤79" - }, - "firefox": { - "version_added": "53", - "notes": "Before version 53, this method was defined on the SVGPathElement interface, which inherits from this interface." - }, - "firefox_android": { - "version_added": "53", - "notes": "Before version 53, this method was defined on the SVGPathElement interface, which inherits from this interface." - }, + "chrome": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "chrome_android": [ + { + "version_added": "18" + }, + { + "version_added": "18", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "edge": [ + { + "version_added": "79" + }, + { + "version_added": "12", + "version_removed": "79", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "firefox": [ + { + "version_added": "61" + }, + { + "version_added": "1.5", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "firefox_android": [ + { + "version_added": "61" + }, + { + "version_added": "4", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], "ie": { - "version_added": "9" - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } + "version_added": "9", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + }, + "opera": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "opera_android": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari": [ + { + "version_added": "12" + }, + { + "version_added": "3", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari_ios": [ + { + "version_added": "12" + }, + { + "version_added": "1", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "samsunginternet_android": [ + { + "version_added": "6.0" + }, + { + "version_added": "1.0", + "version_removed": "6.0", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "webview_android": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ] }, "status": { "experimental": false, @@ -247,90 +423,122 @@ "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/pathLength", "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "≤79" - }, - "firefox": { - "version_added": "53" - }, - "firefox_android": { - "version_added": "53" - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } - }, - "status": { - "experimental": false, - "standard_track": true, - "deprecated": false - } - } - }, - "supportOtherThanPath": { - "__compat": { - "description": "Support for elements other than <path>", - "support": { - "chrome": { - "version_added": null - }, - "chrome_android": { - "version_added": null - }, + "chrome": [ + { + "version_added": "57" + }, + { + "version_added": "1", + "version_removed": "57", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "chrome_android": [ + { + "version_added": "57" + }, + { + "version_added": "18", + "version_removed": "57", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], "edge": { - "version_added": null - }, - "firefox": { - "version_added": "61" - }, - "firefox_android": { - "version_added": "61" - }, + "version_added": "79" + }, + "firefox": [ + { + "version_added": "61" + }, + { + "version_added": "1.5", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "firefox_android": [ + { + "version_added": "61" + }, + { + "version_added": "4", + "version_removed": "61", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], "ie": { "version_added": false }, - "opera": { - "version_added": null - }, - "opera_android": { - "version_added": null - }, - "safari": { - "version_added": null - }, - "safari_ios": { - "version_added": null - }, - "samsunginternet_android": { - "version_added": null - }, - "webview_android": { - "version_added": null - } + "opera": [ + { + "version_added": "44" + }, + { + "version_added": "≤12.1", + "version_removed": "44", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "opera_android": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari": [ + { + "version_added": "12" + }, + { + "version_added": "3", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "safari_ios": [ + { + "version_added": "12" + }, + { + "version_added": "1", + "version_removed": "12", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "samsunginternet_android": [ + { + "version_added": "7.0" + }, + { + "version_added": "1.0", + "version_removed": "7.0", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ], + "webview_android": [ + { + "version_added": "57" + }, + { + "version_added": "1", + "version_removed": "57", + "partial_implementation": true, + "notes": "Only supported for SVGPathElement, not all SVGGeometryElement objects." + } + ] }, "status": { "experimental": false, diff --git a/api/SVGPathElement.json b/api/SVGPathElement.json index 5b334cde37ecbf..c16df3ec9fffe1 100644 --- a/api/SVGPathElement.json +++ b/api/SVGPathElement.json @@ -1164,154 +1164,6 @@ "deprecated": true } } - }, - "getPointAtLength": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGPathElement/getPointAtLength", - "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "12" - }, - "firefox": { - "version_added": "1.5", - "notes": "From version 53, this method is defined on the parent SVGGeometryElement interface." - }, - "firefox_android": { - "version_added": "4", - "notes": "From version 53, this method is defined on the parent SVGGeometryElement interface." - }, - "ie": { - "version_added": "9" - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } - }, - "status": { - "experimental": false, - "standard_track": true, - "deprecated": true - } - } - }, - "getTotalLength": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGPathElement/getTotalLength", - "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "12" - }, - "firefox": { - "version_added": "1.5", - "notes": "From version 53, this method is defined on the parent SVGGeometryElement interface." - }, - "firefox_android": { - "version_added": "4", - "notes": "From version 53, this method is defined on the parent SVGGeometryElement interface." - }, - "ie": { - "version_added": "9" - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } - }, - "status": { - "experimental": false, - "standard_track": true, - "deprecated": true - } - } - }, - "pathLength": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGPathElement/pathLength", - "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": "1.5" - }, - "firefox_android": { - "version_added": "4" - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" - }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } - }, - "status": { - "experimental": false, - "standard_track": true, - "deprecated": true - } - } } } } From 6966f3444e6dd797614dac7e2c886cc82798e0a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Tue, 16 Mar 2021 11:43:39 +0100 Subject: [PATCH 2/3] Update api/SVGGeometryElement.json --- api/SVGGeometryElement.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/SVGGeometryElement.json b/api/SVGGeometryElement.json index 5c8bdbe2001bcf..87c3a36257e6a9 100644 --- a/api/SVGGeometryElement.json +++ b/api/SVGGeometryElement.json @@ -202,7 +202,7 @@ ], "chrome_android": [ { - "version_added": "18" + "version_added": "56" }, { "version_added": "18", From 270700f23cd55c05158fe5d5c153871707ae4c6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Fri, 19 Mar 2021 14:25:40 +0100 Subject: [PATCH 3/3] split entries for api.SVGGeometryElement itself --- api/SVGGeometryElement.json | 158 ++++++++++++++++++++++++++++-------- 1 file changed, 124 insertions(+), 34 deletions(-) diff --git a/api/SVGGeometryElement.json b/api/SVGGeometryElement.json index 87c3a36257e6a9..bff2b67870ee37 100644 --- a/api/SVGGeometryElement.json +++ b/api/SVGGeometryElement.json @@ -4,42 +4,132 @@ "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/SVGGeometryElement", "support": { - "chrome": { - "version_added": "1" - }, - "chrome_android": { - "version_added": "18" - }, - "edge": { - "version_added": "12" - }, - "firefox": { - "version_added": "1.5" - }, - "firefox_android": { - "version_added": "4" - }, + "chrome": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "chrome_android": [ + { + "version_added": "56" + }, + { + "version_added": "18", + "version_removed": "56", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "edge": [ + { + "version_added": "79" + }, + { + "version_added": "12", + "version_removed": "79", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "firefox": [ + { + "version_added": "53" + }, + { + "version_added": "1.5", + "version_removed": "53", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "firefox_android": [ + { + "version_added": "53" + }, + { + "version_added": "4", + "version_removed": "53", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], "ie": { - "version_added": "9" - }, - "opera": { - "version_added": "≤12.1" - }, - "opera_android": { - "version_added": "≤12.1" - }, - "safari": { - "version_added": "3" + "version_added": "9", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." }, - "safari_ios": { - "version_added": "1" - }, - "samsunginternet_android": { - "version_added": "1.0" - }, - "webview_android": { - "version_added": "1" - } + "opera": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "opera_android": [ + { + "version_added": "43" + }, + { + "version_added": "≤12.1", + "version_removed": "43", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "safari": [ + { + "version_added": "12" + }, + { + "version_added": "3", + "version_removed": "12", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "safari_ios": [ + { + "version_added": "12" + }, + { + "version_added": "1", + "version_removed": "12", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "samsunginternet_android": [ + { + "version_added": "6.0" + }, + { + "version_added": "1.0", + "version_removed": "6.0", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ], + "webview_android": [ + { + "version_added": "56" + }, + { + "version_added": "1", + "version_removed": "56", + "partial_implementation": true, + "notes": "The SVGGeometryElement interface itself is not present, but some of its members are available on the SVGPathElement interface." + } + ] }, "status": { "experimental": false,