Bug 1450151 [wpt PR 10249] - Add test for DocumentAndElementEventHandlers in SVG, a=testonly

Automatic update from web-platform-testsMerge pull request #10249 from dstorey/svg-document-element-events

Add test for DocumentAndElementEventHandlers in SVG
--

wpt-commits: 1529e32ac8073c48e872e7d705a10daa24decbbf
wpt-pr: 10249
This commit is contained in:
Chris Lilley 2018-08-10 16:06:49 +00:00 committed by James Graham
parent 9c2aca24ab
commit 9bf139af57
2 changed files with 65 additions and 0 deletions

View File

@ -391376,6 +391376,12 @@
{}
]
],
"svg/types/scripted/event-handler-all-document-element-events.svg": [
[
"/svg/types/scripted/event-handler-all-document-element-events.svg",
{}
]
],
"touch-events/historical.html": [
[
"/touch-events/historical.html",
@ -635309,6 +635315,10 @@
"c81a23394468f2e4d586d4e6ece5be713470d485",
"testharness"
],
"svg/types/scripted/event-handler-all-document-element-events.svg": [
"fa813dd1dd31987d2792aaa14a5f7ea996a8054d",
"testharness"
],
"svg/types/scripted/resources/SVGLengthList-helper.js": [
"3cf888b7dbaeb370ef1b34409540337dee2c8e33",
"support"

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:h="http://www.w3.org/1999/xhtml">
<title>DocumentAndElementEventHandlers</title>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement"/>
</metadata>
<h:script src="/resources/testharness.js"/>
<h:script src="/resources/testharnessreport.js"/>
<script><![CDATA[
"use strict";
setup({ explicit_done: true });
const names = ["oncut","oncopy","onpaste"];
for (const name of names) {
const withoutOn = name.substring(2);
test(() => {
assert_true(SVGElement.prototype.hasOwnProperty(name),
`${SVGElement.prototype.constructor.name} has an own property named "${name}"`);
assert_false(name in Element.prototype, `Element.prototype must not contain a "${name}" property`);
}, `${name}: DocumentAndElementEventHandlers must be on SVGElement not Element`);
test(() => {
const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "g");
assert_equals(svgElement[name], null,
`The default value of the property is null for a ${svgElement.constructor.name} instance`);
}, `${name}: the default value must be null`);
test(() => {
const el = document.createElementNS("http://www.w3.org/2000/svg", "g");
el.setAttribute(name, `window.${name}Happened = true;`);
const compiledHandler = el[name];
assert_equals(typeof compiledHandler, "function", `The ${name} property must be a function`);
compiledHandler();
assert_true(window[name + "Happened"], "Calling the handler must run the code");
}, `${name}: the content attribute must be compiled into a function as the corresponding property`);
test(() => {
const el = document.createElementNS("http://www.w3.org/2000/svg", "g");
el.setAttribute(name, `window.${name}Happened2 = true;`);
el.dispatchEvent(new Event(withoutOn));
assert_true(window[name + "Happened2"], "Dispatching an event must run the code");
}, `${name}: the content attribute must execute when an event is dispatched`);
}
done();
]]></script>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB