Commit e4f3a088 authored by Rob Buis's avatar Rob Buis Committed by Commit Bot

[mathml] Implement MathML DOM

Add MathMLElement idl to allow useful DOM operations on MathML elements.
See https://mathml-refresh.github.io/mathml-core/#dom-and-javascript

The failures are due to attributes missing from GlobalEventHandler.idl.
See for example https://crbug.com/1006096

Bug: 6606
Change-Id: I86f65635e30f74eabeaf5ec0097cb9694137c3e2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1904195Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarFrédéric Wang <fwang@igalia.com>
Commit-Queue: Rob Buis <rbuis@igalia.com>
Cr-Commit-Position: refs/heads/master@{#714164}
parent 68551d7a
...@@ -317,6 +317,7 @@ core_idl_files = ...@@ -317,6 +317,7 @@ core_idl_files =
"layout/ng/custom/layout_child.idl", "layout/ng/custom/layout_child.idl",
"layout/ng/custom/layout_worklet_global_scope.idl", "layout/ng/custom/layout_worklet_global_scope.idl",
"loader/appcache/application_cache.idl", "loader/appcache/application_cache.idl",
"mathml/mathml_element.idl",
"messaging/message_channel.idl", "messaging/message_channel.idl",
"messaging/message_port.idl", "messaging/message_port.idl",
"mojo/mojo.idl", "mojo/mojo.idl",
......
...@@ -37,6 +37,15 @@ math[display="block"] { ...@@ -37,6 +37,15 @@ math[display="block"] {
text-align: center; text-align: center;
} }
:-internal-spatial-navigation-interest {
outline: auto 1px -webkit-focus-ring-color;
box-shadow: none !important;
}
:focus {
outline: auto 1px -webkit-focus-ring-color;
}
/* We hide the PresentationExpression constructions that are children of a <semantics> element. /* We hide the PresentationExpression constructions that are children of a <semantics> element.
http://www.w3.org/TR/MathML/appendixa.html#parsing_PresentationExpression */ http://www.w3.org/TR/MathML/appendixa.html#parsing_PresentationExpression */
semantics > mi, semantics > mn, semantics > mo, semantics > mtext, semantics > mspace, semantics > ms, semantics > maligngroup, semantics > malignmark, semantics > mrow, semantics > mfrac, semantics > msqrt, semantics > mroot, semantics > mstyle, semantics > merror, semantics > mpadded, semantics > mphantom, semantics > mfenced, semantics > menclose, semantics > msub, semantics > msup, semantics > msubsup, semantics > munder, semantics > mover, semantics > munderover, semantics > mmultiscripts, semantics > mtable, semantics > mstack, semantics > mlongdiv, semantics > maction { semantics > mi, semantics > mn, semantics > mo, semantics > mtext, semantics > mspace, semantics > ms, semantics > maligngroup, semantics > malignmark, semantics > mrow, semantics > mfrac, semantics > msqrt, semantics > mroot, semantics > mstyle, semantics > merror, semantics > mpadded, semantics > mphantom, semantics > mfenced, semantics > menclose, semantics > msub, semantics > msup, semantics > msubsup, semantics > munder, semantics > mover, semantics > munderover, semantics > mmultiscripts, semantics > mtable, semantics > mstack, semantics > mlongdiv, semantics > maction {
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
#include "third_party/blink/renderer/core/mathml/mathml_element.h" #include "third_party/blink/renderer/core/mathml/mathml_element.h"
#include "third_party/blink/renderer/bindings/core/v8/script_event_listener.h"
#include "third_party/blink/renderer/core/html/html_element.h"
namespace blink { namespace blink {
MathMLElement::MathMLElement(const QualifiedName& tagName, MathMLElement::MathMLElement(const QualifiedName& tagName,
...@@ -13,4 +16,17 @@ MathMLElement::MathMLElement(const QualifiedName& tagName, ...@@ -13,4 +16,17 @@ MathMLElement::MathMLElement(const QualifiedName& tagName,
MathMLElement::~MathMLElement() {} MathMLElement::~MathMLElement() {}
void MathMLElement::ParseAttribute(const AttributeModificationParams& param) {
const AtomicString& event_name =
HTMLElement::EventNameForAttributeName(param.name);
if (!event_name.IsNull()) {
SetAttributeEventListener(
event_name,
CreateAttributeEventListener(this, param.name, param.new_value));
return;
}
Element::ParseAttribute(param);
}
} // namespace blink } // namespace blink
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
namespace blink { namespace blink {
class CORE_EXPORT MathMLElement : public Element { class CORE_EXPORT MathMLElement : public Element {
DEFINE_WRAPPERTYPEINFO();
public: public:
MathMLElement(const QualifiedName& tagName, MathMLElement(const QualifiedName& tagName,
Document& document, Document& document,
...@@ -24,6 +26,8 @@ class CORE_EXPORT MathMLElement : public Element { ...@@ -24,6 +26,8 @@ class CORE_EXPORT MathMLElement : public Element {
} }
private: private:
void ParseAttribute(const AttributeModificationParams&) final;
bool IsMathMLElement() const = bool IsMathMLElement() const =
delete; // This will catch anyone doing an unnecessary check. delete; // This will catch anyone doing an unnecessary check.
}; };
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
[RuntimeEnabled=MathMLCore, Exposed=Window]
interface MathMLElement : Element {
// CSS Object Model (CSSOM)
// https://drafts.csswg.org/cssom/#the-elementcssinlinestyle-interface
// TODO(crbug.com/835762): we should support ElementCSSInlineStyle.
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
};
MathMLElement includes GlobalEventHandlers;
MathMLElement includes DocumentAndElementEventHandlers;
MathMLElement includes HTMLOrForeignElement;
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
namespace: "MathML", namespace: "MathML",
namespaceURI: "http://www.w3.org/1998/Math/MathML", namespaceURI: "http://www.w3.org/1998/Math/MathML",
fallbackInterfaceName: "MathMLElement", fallbackInterfaceName: "MathMLElement",
fallbackJSInterfaceName: "Element", fallbackJSInterfaceName: "MathMLElement",
export: "CORE_EXPORT", export: "CORE_EXPORT",
}, },
data: [ data: [
......
...@@ -1629,24 +1629,18 @@ crbug.com/6606 external/wpt/mathml/relations/css-styling/visibility-004.html [ F ...@@ -1629,24 +1629,18 @@ crbug.com/6606 external/wpt/mathml/relations/css-styling/visibility-004.html [ F
crbug.com/6606 external/wpt/mathml/relations/css-styling/width-height-001.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/css-styling/width-height-001.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-001.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-001.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-002.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-002.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/color-attributes-1.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/color-attributes-1.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/css-inline-style-interface.tentative.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/display-1.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/display-1.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/display-2.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/display-2.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-1.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-1.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-2.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-2.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-1.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-1.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-2.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-2.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-4.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-4.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/required-extensions-2.html [ Failure ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/required-extensions-2.html [ Failure ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/tabindex-001.html [ Failure ]
# These tests time out when MathML is not implemented. # These tests time out when MathML is not implemented.
# See https://github.com/mathml-refresh/mathml/issues/167 # See https://github.com/mathml-refresh/mathml/issues/167
crbug.com/6606 external/wpt/mathml/relations/html5-tree/css-inline-style-dynamic.tentative.html [ Timeout ]
crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-3.html [ Timeout ] crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-3.html [ Timeout ]
# This test fails on macOS. # This test fails on macOS.
......
This is a testharness.js-based test.
Found 310 tests; 295 PASS, 15 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS onabort: must be on the appropriate locations for GlobalEventHandlers
PASS onabort: the default value must be null
PASS onabort: the content attribute must be compiled into a function as the corresponding property
PASS onabort: dynamic changes on the attribute
PASS onabort: dispatching an Event at a <math> element must trigger element.onabort
PASS onauxclick: must be on the appropriate locations for GlobalEventHandlers
PASS onauxclick: the default value must be null
PASS onauxclick: the content attribute must be compiled into a function as the corresponding property
PASS onauxclick: dynamic changes on the attribute
PASS onauxclick: dispatching an Event at a <math> element must trigger element.onauxclick
PASS onblur: must be on the appropriate locations for GlobalEventHandlers
PASS onblur: the default value must be null
PASS onblur: the content attribute must be compiled into a function as the corresponding property
PASS onblur: dynamic changes on the attribute
PASS onblur: dispatching an Event at a <math> element must trigger element.onblur
PASS oncancel: must be on the appropriate locations for GlobalEventHandlers
PASS oncancel: the default value must be null
PASS oncancel: the content attribute must be compiled into a function as the corresponding property
PASS oncancel: dynamic changes on the attribute
PASS oncancel: dispatching an Event at a <math> element must trigger element.oncancel
PASS oncanplay: must be on the appropriate locations for GlobalEventHandlers
PASS oncanplay: the default value must be null
PASS oncanplay: the content attribute must be compiled into a function as the corresponding property
PASS oncanplay: dynamic changes on the attribute
PASS oncanplay: dispatching an Event at a <math> element must trigger element.oncanplay
PASS oncanplaythrough: must be on the appropriate locations for GlobalEventHandlers
PASS oncanplaythrough: the default value must be null
PASS oncanplaythrough: the content attribute must be compiled into a function as the corresponding property
PASS oncanplaythrough: dynamic changes on the attribute
PASS oncanplaythrough: dispatching an Event at a <math> element must trigger element.oncanplaythrough
PASS onchange: must be on the appropriate locations for GlobalEventHandlers
PASS onchange: the default value must be null
PASS onchange: the content attribute must be compiled into a function as the corresponding property
PASS onchange: dynamic changes on the attribute
PASS onchange: dispatching an Event at a <math> element must trigger element.onchange
PASS onclick: must be on the appropriate locations for GlobalEventHandlers
PASS onclick: the default value must be null
PASS onclick: the content attribute must be compiled into a function as the corresponding property
PASS onclick: dynamic changes on the attribute
PASS onclick: dispatching an Event at a <math> element must trigger element.onclick
PASS onclose: must be on the appropriate locations for GlobalEventHandlers
PASS onclose: the default value must be null
PASS onclose: the content attribute must be compiled into a function as the corresponding property
PASS onclose: dynamic changes on the attribute
PASS onclose: dispatching an Event at a <math> element must trigger element.onclose
PASS oncontextmenu: must be on the appropriate locations for GlobalEventHandlers
PASS oncontextmenu: the default value must be null
PASS oncontextmenu: the content attribute must be compiled into a function as the corresponding property
PASS oncontextmenu: dynamic changes on the attribute
PASS oncontextmenu: dispatching an Event at a <math> element must trigger element.oncontextmenu
PASS oncuechange: must be on the appropriate locations for GlobalEventHandlers
PASS oncuechange: the default value must be null
PASS oncuechange: the content attribute must be compiled into a function as the corresponding property
PASS oncuechange: dynamic changes on the attribute
PASS oncuechange: dispatching an Event at a <math> element must trigger element.oncuechange
PASS ondblclick: must be on the appropriate locations for GlobalEventHandlers
PASS ondblclick: the default value must be null
PASS ondblclick: the content attribute must be compiled into a function as the corresponding property
PASS ondblclick: dynamic changes on the attribute
PASS ondblclick: dispatching an Event at a <math> element must trigger element.ondblclick
PASS ondrag: must be on the appropriate locations for GlobalEventHandlers
PASS ondrag: the default value must be null
PASS ondrag: the content attribute must be compiled into a function as the corresponding property
PASS ondrag: dynamic changes on the attribute
PASS ondrag: dispatching an Event at a <math> element must trigger element.ondrag
PASS ondragend: must be on the appropriate locations for GlobalEventHandlers
PASS ondragend: the default value must be null
PASS ondragend: the content attribute must be compiled into a function as the corresponding property
PASS ondragend: dynamic changes on the attribute
PASS ondragend: dispatching an Event at a <math> element must trigger element.ondragend
PASS ondragenter: must be on the appropriate locations for GlobalEventHandlers
PASS ondragenter: the default value must be null
PASS ondragenter: the content attribute must be compiled into a function as the corresponding property
PASS ondragenter: dynamic changes on the attribute
PASS ondragenter: dispatching an Event at a <math> element must trigger element.ondragenter
FAIL ondragexit: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "ondragexit" expected true got false
FAIL ondragexit: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined
FAIL ondragexit: the content attribute must be compiled into a function as the corresponding property assert_equals: The ondragexit property must be a function expected "function" but got "undefined"
FAIL ondragexit: dynamic changes on the attribute assert_equals: The ondragexit property must be null (no attribute) expected (object) null but got (undefined) undefined
FAIL ondragexit: dispatching an Event at a <math> element must trigger element.ondragexit assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined
PASS ondragleave: must be on the appropriate locations for GlobalEventHandlers
PASS ondragleave: the default value must be null
PASS ondragleave: the content attribute must be compiled into a function as the corresponding property
PASS ondragleave: dynamic changes on the attribute
PASS ondragleave: dispatching an Event at a <math> element must trigger element.ondragleave
PASS ondragover: must be on the appropriate locations for GlobalEventHandlers
PASS ondragover: the default value must be null
PASS ondragover: the content attribute must be compiled into a function as the corresponding property
PASS ondragover: dynamic changes on the attribute
PASS ondragover: dispatching an Event at a <math> element must trigger element.ondragover
PASS ondragstart: must be on the appropriate locations for GlobalEventHandlers
PASS ondragstart: the default value must be null
PASS ondragstart: the content attribute must be compiled into a function as the corresponding property
PASS ondragstart: dynamic changes on the attribute
PASS ondragstart: dispatching an Event at a <math> element must trigger element.ondragstart
PASS ondrop: must be on the appropriate locations for GlobalEventHandlers
PASS ondrop: the default value must be null
PASS ondrop: the content attribute must be compiled into a function as the corresponding property
PASS ondrop: dynamic changes on the attribute
PASS ondrop: dispatching an Event at a <math> element must trigger element.ondrop
PASS ondurationchange: must be on the appropriate locations for GlobalEventHandlers
PASS ondurationchange: the default value must be null
PASS ondurationchange: the content attribute must be compiled into a function as the corresponding property
PASS ondurationchange: dynamic changes on the attribute
PASS ondurationchange: dispatching an Event at a <math> element must trigger element.ondurationchange
PASS onemptied: must be on the appropriate locations for GlobalEventHandlers
PASS onemptied: the default value must be null
PASS onemptied: the content attribute must be compiled into a function as the corresponding property
PASS onemptied: dynamic changes on the attribute
PASS onemptied: dispatching an Event at a <math> element must trigger element.onemptied
PASS onended: must be on the appropriate locations for GlobalEventHandlers
PASS onended: the default value must be null
PASS onended: the content attribute must be compiled into a function as the corresponding property
PASS onended: dynamic changes on the attribute
PASS onended: dispatching an Event at a <math> element must trigger element.onended
PASS onfocus: must be on the appropriate locations for GlobalEventHandlers
PASS onfocus: the default value must be null
PASS onfocus: the content attribute must be compiled into a function as the corresponding property
PASS onfocus: dynamic changes on the attribute
PASS onfocus: dispatching an Event at a <math> element must trigger element.onfocus
PASS onformdata: must be on the appropriate locations for GlobalEventHandlers
PASS onformdata: the default value must be null
PASS onformdata: the content attribute must be compiled into a function as the corresponding property
PASS onformdata: dynamic changes on the attribute
PASS onformdata: dispatching an Event at a <math> element must trigger element.onformdata
PASS oninput: must be on the appropriate locations for GlobalEventHandlers
PASS oninput: the default value must be null
PASS oninput: the content attribute must be compiled into a function as the corresponding property
PASS oninput: dynamic changes on the attribute
PASS oninput: dispatching an Event at a <math> element must trigger element.oninput
PASS oninvalid: must be on the appropriate locations for GlobalEventHandlers
PASS oninvalid: the default value must be null
PASS oninvalid: the content attribute must be compiled into a function as the corresponding property
PASS oninvalid: dynamic changes on the attribute
PASS oninvalid: dispatching an Event at a <math> element must trigger element.oninvalid
PASS onkeydown: must be on the appropriate locations for GlobalEventHandlers
PASS onkeydown: the default value must be null
PASS onkeydown: the content attribute must be compiled into a function as the corresponding property
PASS onkeydown: dynamic changes on the attribute
PASS onkeydown: dispatching an Event at a <math> element must trigger element.onkeydown
PASS onkeypress: must be on the appropriate locations for GlobalEventHandlers
PASS onkeypress: the default value must be null
PASS onkeypress: the content attribute must be compiled into a function as the corresponding property
PASS onkeypress: dynamic changes on the attribute
PASS onkeypress: dispatching an Event at a <math> element must trigger element.onkeypress
PASS onkeyup: must be on the appropriate locations for GlobalEventHandlers
PASS onkeyup: the default value must be null
PASS onkeyup: the content attribute must be compiled into a function as the corresponding property
PASS onkeyup: dynamic changes on the attribute
PASS onkeyup: dispatching an Event at a <math> element must trigger element.onkeyup
PASS onload: must be on the appropriate locations for GlobalEventHandlers
PASS onload: the default value must be null
PASS onload: the content attribute must be compiled into a function as the corresponding property
PASS onload: dynamic changes on the attribute
PASS onload: dispatching an Event at a <math> element must trigger element.onload
PASS onloadeddata: must be on the appropriate locations for GlobalEventHandlers
PASS onloadeddata: the default value must be null
PASS onloadeddata: the content attribute must be compiled into a function as the corresponding property
PASS onloadeddata: dynamic changes on the attribute
PASS onloadeddata: dispatching an Event at a <math> element must trigger element.onloadeddata
PASS onloadedmetadata: must be on the appropriate locations for GlobalEventHandlers
PASS onloadedmetadata: the default value must be null
PASS onloadedmetadata: the content attribute must be compiled into a function as the corresponding property
PASS onloadedmetadata: dynamic changes on the attribute
PASS onloadedmetadata: dispatching an Event at a <math> element must trigger element.onloadedmetadata
PASS onloadstart: must be on the appropriate locations for GlobalEventHandlers
PASS onloadstart: the default value must be null
PASS onloadstart: the content attribute must be compiled into a function as the corresponding property
PASS onloadstart: dynamic changes on the attribute
PASS onloadstart: dispatching an Event at a <math> element must trigger element.onloadstart
PASS onmousedown: must be on the appropriate locations for GlobalEventHandlers
PASS onmousedown: the default value must be null
PASS onmousedown: the content attribute must be compiled into a function as the corresponding property
PASS onmousedown: dynamic changes on the attribute
PASS onmousedown: dispatching an Event at a <math> element must trigger element.onmousedown
PASS onmouseenter: must be on the appropriate locations for GlobalEventHandlers
PASS onmouseenter: the default value must be null
PASS onmouseenter: the content attribute must be compiled into a function as the corresponding property
PASS onmouseenter: dynamic changes on the attribute
PASS onmouseenter: dispatching an Event at a <math> element must trigger element.onmouseenter
PASS onmouseleave: must be on the appropriate locations for GlobalEventHandlers
PASS onmouseleave: the default value must be null
PASS onmouseleave: the content attribute must be compiled into a function as the corresponding property
PASS onmouseleave: dynamic changes on the attribute
PASS onmouseleave: dispatching an Event at a <math> element must trigger element.onmouseleave
PASS onmousemove: must be on the appropriate locations for GlobalEventHandlers
PASS onmousemove: the default value must be null
PASS onmousemove: the content attribute must be compiled into a function as the corresponding property
PASS onmousemove: dynamic changes on the attribute
PASS onmousemove: dispatching an Event at a <math> element must trigger element.onmousemove
PASS onmouseout: must be on the appropriate locations for GlobalEventHandlers
PASS onmouseout: the default value must be null
PASS onmouseout: the content attribute must be compiled into a function as the corresponding property
PASS onmouseout: dynamic changes on the attribute
PASS onmouseout: dispatching an Event at a <math> element must trigger element.onmouseout
PASS onmouseover: must be on the appropriate locations for GlobalEventHandlers
PASS onmouseover: the default value must be null
PASS onmouseover: the content attribute must be compiled into a function as the corresponding property
PASS onmouseover: dynamic changes on the attribute
PASS onmouseover: dispatching an Event at a <math> element must trigger element.onmouseover
PASS onmouseup: must be on the appropriate locations for GlobalEventHandlers
PASS onmouseup: the default value must be null
PASS onmouseup: the content attribute must be compiled into a function as the corresponding property
PASS onmouseup: dynamic changes on the attribute
PASS onmouseup: dispatching an Event at a <math> element must trigger element.onmouseup
PASS onwheel: must be on the appropriate locations for GlobalEventHandlers
PASS onwheel: the default value must be null
PASS onwheel: the content attribute must be compiled into a function as the corresponding property
PASS onwheel: dynamic changes on the attribute
PASS onwheel: dispatching an Event at a <math> element must trigger element.onwheel
PASS onpause: must be on the appropriate locations for GlobalEventHandlers
PASS onpause: the default value must be null
PASS onpause: the content attribute must be compiled into a function as the corresponding property
PASS onpause: dynamic changes on the attribute
PASS onpause: dispatching an Event at a <math> element must trigger element.onpause
PASS onplay: must be on the appropriate locations for GlobalEventHandlers
PASS onplay: the default value must be null
PASS onplay: the content attribute must be compiled into a function as the corresponding property
PASS onplay: dynamic changes on the attribute
PASS onplay: dispatching an Event at a <math> element must trigger element.onplay
PASS onplaying: must be on the appropriate locations for GlobalEventHandlers
PASS onplaying: the default value must be null
PASS onplaying: the content attribute must be compiled into a function as the corresponding property
PASS onplaying: dynamic changes on the attribute
PASS onplaying: dispatching an Event at a <math> element must trigger element.onplaying
PASS onprogress: must be on the appropriate locations for GlobalEventHandlers
PASS onprogress: the default value must be null
PASS onprogress: the content attribute must be compiled into a function as the corresponding property
PASS onprogress: dynamic changes on the attribute
PASS onprogress: dispatching an Event at a <math> element must trigger element.onprogress
PASS onratechange: must be on the appropriate locations for GlobalEventHandlers
PASS onratechange: the default value must be null
PASS onratechange: the content attribute must be compiled into a function as the corresponding property
PASS onratechange: dynamic changes on the attribute
PASS onratechange: dispatching an Event at a <math> element must trigger element.onratechange
PASS onreset: must be on the appropriate locations for GlobalEventHandlers
PASS onreset: the default value must be null
PASS onreset: the content attribute must be compiled into a function as the corresponding property
PASS onreset: dynamic changes on the attribute
PASS onreset: dispatching an Event at a <math> element must trigger element.onreset
PASS onresize: must be on the appropriate locations for GlobalEventHandlers
PASS onresize: the default value must be null
PASS onresize: the content attribute must be compiled into a function as the corresponding property
PASS onresize: dynamic changes on the attribute
PASS onresize: dispatching an Event at a <math> element must trigger element.onresize
PASS onscroll: must be on the appropriate locations for GlobalEventHandlers
PASS onscroll: the default value must be null
PASS onscroll: the content attribute must be compiled into a function as the corresponding property
PASS onscroll: dynamic changes on the attribute
PASS onscroll: dispatching an Event at a <math> element must trigger element.onscroll
FAIL onsecuritypolicyviolation: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onsecuritypolicyviolation" expected true got false
FAIL onsecuritypolicyviolation: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined
FAIL onsecuritypolicyviolation: the content attribute must be compiled into a function as the corresponding property assert_equals: The onsecuritypolicyviolation property must be a function expected "function" but got "undefined"
FAIL onsecuritypolicyviolation: dynamic changes on the attribute assert_equals: The onsecuritypolicyviolation property must be null (no attribute) expected (object) null but got (undefined) undefined
FAIL onsecuritypolicyviolation: dispatching an Event at a <math> element must trigger element.onsecuritypolicyviolation assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined
PASS onseeked: must be on the appropriate locations for GlobalEventHandlers
PASS onseeked: the default value must be null
PASS onseeked: the content attribute must be compiled into a function as the corresponding property
PASS onseeked: dynamic changes on the attribute
PASS onseeked: dispatching an Event at a <math> element must trigger element.onseeked
PASS onseeking: must be on the appropriate locations for GlobalEventHandlers
PASS onseeking: the default value must be null
PASS onseeking: the content attribute must be compiled into a function as the corresponding property
PASS onseeking: dynamic changes on the attribute
PASS onseeking: dispatching an Event at a <math> element must trigger element.onseeking
PASS onselect: must be on the appropriate locations for GlobalEventHandlers
PASS onselect: the default value must be null
PASS onselect: the content attribute must be compiled into a function as the corresponding property
PASS onselect: dynamic changes on the attribute
PASS onselect: dispatching an Event at a <math> element must trigger element.onselect
FAIL onslotchange: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onslotchange" expected true got false
FAIL onslotchange: the default value must be null assert_equals: The default value of the property is null for a MathMLElement instance expected (object) null but got (undefined) undefined
FAIL onslotchange: the content attribute must be compiled into a function as the corresponding property assert_equals: The onslotchange property must be a function expected "function" but got "undefined"
FAIL onslotchange: dynamic changes on the attribute assert_equals: The onslotchange property must be null (no attribute) expected (object) null but got (undefined) undefined
FAIL onslotchange: dispatching an Event at a <math> element must trigger element.onslotchange assert_equals: The event must be fired at the <math> element expected (object) Element node <math></math> but got (undefined) undefined
PASS onstalled: must be on the appropriate locations for GlobalEventHandlers
PASS onstalled: the default value must be null
PASS onstalled: the content attribute must be compiled into a function as the corresponding property
PASS onstalled: dynamic changes on the attribute
PASS onstalled: dispatching an Event at a <math> element must trigger element.onstalled
PASS onsubmit: must be on the appropriate locations for GlobalEventHandlers
PASS onsubmit: the default value must be null
PASS onsubmit: the content attribute must be compiled into a function as the corresponding property
PASS onsubmit: dynamic changes on the attribute
PASS onsubmit: dispatching an Event at a <math> element must trigger element.onsubmit
PASS onsuspend: must be on the appropriate locations for GlobalEventHandlers
PASS onsuspend: the default value must be null
PASS onsuspend: the content attribute must be compiled into a function as the corresponding property
PASS onsuspend: dynamic changes on the attribute
PASS onsuspend: dispatching an Event at a <math> element must trigger element.onsuspend
PASS ontimeupdate: must be on the appropriate locations for GlobalEventHandlers
PASS ontimeupdate: the default value must be null
PASS ontimeupdate: the content attribute must be compiled into a function as the corresponding property
PASS ontimeupdate: dynamic changes on the attribute
PASS ontimeupdate: dispatching an Event at a <math> element must trigger element.ontimeupdate
PASS ontoggle: must be on the appropriate locations for GlobalEventHandlers
PASS ontoggle: the default value must be null
PASS ontoggle: the content attribute must be compiled into a function as the corresponding property
PASS ontoggle: dynamic changes on the attribute
PASS ontoggle: dispatching an Event at a <math> element must trigger element.ontoggle
PASS onvolumechange: must be on the appropriate locations for GlobalEventHandlers
PASS onvolumechange: the default value must be null
PASS onvolumechange: the content attribute must be compiled into a function as the corresponding property
PASS onvolumechange: dynamic changes on the attribute
PASS onvolumechange: dispatching an Event at a <math> element must trigger element.onvolumechange
PASS onwaiting: must be on the appropriate locations for GlobalEventHandlers
PASS onwaiting: the default value must be null
PASS onwaiting: the content attribute must be compiled into a function as the corresponding property
PASS onwaiting: dynamic changes on the attribute
PASS onwaiting: dispatching an Event at a <math> element must trigger element.onwaiting
Harness: the test ran to completion.
...@@ -4696,6 +4696,198 @@ interface Magnetometer : Sensor ...@@ -4696,6 +4696,198 @@ interface Magnetometer : Sensor
getter y getter y
getter z getter z
method constructor method constructor
interface MathMLElement : Element
attribute @@toStringTag
getter autofocus
getter dataset
getter nonce
getter onabort
getter onactivateinvisible
getter onanimationend
getter onanimationiteration
getter onanimationstart
getter onauxclick
getter onbeforeactivate
getter onblur
getter oncancel
getter oncanplay
getter oncanplaythrough
getter onchange
getter onclick
getter onclose
getter oncontextmenu
getter oncopy
getter oncuechange
getter oncut
getter ondblclick
getter ondrag
getter ondragend
getter ondragenter
getter ondragleave
getter ondragover
getter ondragstart
getter ondrop
getter ondurationchange
getter onemptied
getter onended
getter onerror
getter onfocus
getter onformdata
getter ongotpointercapture
getter oninput
getter oninvalid
getter onkeydown
getter onkeypress
getter onkeyup
getter onload
getter onloadeddata
getter onloadedmetadata
getter onloadstart
getter onlostpointercapture
getter onmousedown
getter onmouseenter
getter onmouseleave
getter onmousemove
getter onmouseout
getter onmouseover
getter onmouseup
getter onmousewheel
getter onoverscroll
getter onpaste
getter onpause
getter onplay
getter onplaying
getter onpointercancel
getter onpointerdown
getter onpointerenter
getter onpointerleave
getter onpointermove
getter onpointerout
getter onpointerover
getter onpointerrawupdate
getter onpointerup
getter onprogress
getter onratechange
getter onreset
getter onresize
getter onscroll
getter onscrollend
getter onseeked
getter onseeking
getter onselect
getter onselectionchange
getter onselectstart
getter onstalled
getter onsubmit
getter onsuspend
getter ontimeupdate
getter ontoggle
getter ontouchcancel
getter ontouchend
getter ontouchmove
getter ontouchstart
getter ontransitionend
getter onvolumechange
getter onwaiting
getter onwheel
getter style
getter tabIndex
method blur
method constructor
method focus
setter autofocus
setter nonce
setter onabort
setter onactivateinvisible
setter onanimationend
setter onanimationiteration
setter onanimationstart
setter onauxclick
setter onbeforeactivate
setter onblur
setter oncancel
setter oncanplay
setter oncanplaythrough
setter onchange
setter onclick
setter onclose
setter oncontextmenu
setter oncopy
setter oncuechange
setter oncut
setter ondblclick
setter ondrag
setter ondragend
setter ondragenter
setter ondragleave
setter ondragover
setter ondragstart
setter ondrop
setter ondurationchange
setter onemptied
setter onended
setter onerror
setter onfocus
setter onformdata
setter ongotpointercapture
setter oninput
setter oninvalid
setter onkeydown
setter onkeypress
setter onkeyup
setter onload
setter onloadeddata
setter onloadedmetadata
setter onloadstart
setter onlostpointercapture
setter onmousedown
setter onmouseenter
setter onmouseleave
setter onmousemove
setter onmouseout
setter onmouseover
setter onmouseup
setter onmousewheel
setter onoverscroll
setter onpaste
setter onpause
setter onplay
setter onplaying
setter onpointercancel
setter onpointerdown
setter onpointerenter
setter onpointerleave
setter onpointermove
setter onpointerout
setter onpointerover
setter onpointerrawupdate
setter onpointerup
setter onprogress
setter onratechange
setter onreset
setter onresize
setter onscroll
setter onscrollend
setter onseeked
setter onseeking
setter onselect
setter onselectionchange
setter onselectstart
setter onstalled
setter onsubmit
setter onsuspend
setter ontimeupdate
setter ontoggle
setter ontouchcancel
setter ontouchend
setter ontouchmove
setter ontouchstart
setter ontransitionend
setter onvolumechange
setter onwaiting
setter onwheel
setter style
setter tabIndex
interface MediaCapabilities interface MediaCapabilities
attribute @@toStringTag attribute @@toStringTag
method constructor method constructor
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment