diff --git a/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.txt b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.txt new file mode 100644 index 00000000000..9f79a071740 --- /dev/null +++ b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.txt @@ -0,0 +1,99 @@ +Harness status: OK + +Found 93 tests + +90 Pass +3 Fail +Pass getAttributeType("dummy", "onabort", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onauxclick", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onbeforeinput", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onbeforematch", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onbeforetoggle", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onblur", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncancel", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncanplay", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncanplaythrough", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onchange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onclick", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onclose", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncommand", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncontextlost", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncontextmenu", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncontextrestored", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncopy", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncuechange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oncut", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondblclick", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondrag", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondragend", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondragenter", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondragleave", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondragover", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondragstart", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondrop", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ondurationchange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onemptied", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onended", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onerror", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onfocus", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onformdata", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oninput", "dummyNs", attrNs) +Pass getAttributeType("dummy", "oninvalid", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onkeydown", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onkeypress", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onkeyup", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onload", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onloadeddata", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onloadedmetadata", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onloadstart", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmousedown", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmouseenter", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmouseleave", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmousemove", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmouseout", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmouseover", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmouseup", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpaste", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpause", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onplay", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onplaying", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onprogress", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onratechange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onreset", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onresize", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onscroll", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onscrollend", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onsecuritypolicyviolation", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onseeked", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onseeking", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onselect", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onslotchange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onstalled", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onsubmit", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onsuspend", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ontimeupdate", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ontoggle", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onvolumechange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onwaiting", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onwheel", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onafterprint", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onbeforeprint", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onbeforeunload", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onhashchange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onlanguagechange", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmessage", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onmessageerror", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onoffline", "dummyNs", attrNs) +Pass getAttributeType("dummy", "ononline", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpagehide", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpagereveal", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpageshow", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpageswap", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onpopstate", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onrejectionhandled", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onstorage", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onunhandledrejection", "dummyNs", attrNs) +Pass getAttributeType("dummy", "onunload", "dummyNs", attrNs) +Fail getAttributeType("dummy", "onbegin", "dummyNs", attrNs) +Fail getAttributeType("dummy", "onend", "dummyNs", attrNs) +Fail getAttributeType("dummy", "onrepeat", "dummyNs", attrNs) diff --git a/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.txt b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.txt new file mode 100644 index 00000000000..4be7a5aafd4 --- /dev/null +++ b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.txt @@ -0,0 +1,26 @@ +Harness status: OK + +Found 21 tests + +21 Pass +Pass 0: getAttributeType with full namespace info. +Pass 0: getAttributeType with element namespace and empty attribute namespace +Pass 0: getAttributeType without namespaces. +Pass 0: getAttributeType with undefined and empty namespace. +Pass 0: getAttributeType with empty and undefined namespace. +Pass 0: getAttributeType with empty namespaces. +Pass 0: getAttributeType with element namespace and empty attribute namespace. +Pass 1: getAttributeType with full namespace info. +Pass 1: getAttributeType with element namespace and empty attribute namespace +Pass 1: getAttributeType without namespaces. +Pass 1: getAttributeType with undefined and empty namespace. +Pass 1: getAttributeType with empty and undefined namespace. +Pass 1: getAttributeType with empty namespaces. +Pass 1: getAttributeType with element namespace and empty attribute namespace. +Pass 2: getAttributeType with full namespace info. +Pass 2: getAttributeType with element namespace and empty attribute namespace +Pass 2: getAttributeType without namespaces. +Pass 2: getAttributeType with undefined and empty namespace. +Pass 2: getAttributeType with empty and undefined namespace. +Pass 2: getAttributeType with empty namespaces. +Pass 2: getAttributeType with element namespace and empty attribute namespace. diff --git a/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.txt b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.txt new file mode 100644 index 00000000000..b37d7904646 --- /dev/null +++ b/Tests/LibWeb/Text/expected/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.txt @@ -0,0 +1,9 @@ +Harness status: OK + +Found 4 tests + +4 Pass +Pass trustedTypes.getAttributeType html script[href] +Pass trustedTypes.getAttributeType svg script[href] +Pass trustedTypes.getAttributeType svg script[href] xlink href +Pass trustedTypes.getAttributeType svg script[href] other href diff --git a/Tests/LibWeb/Text/input/wpt-import/interfaces/encrypted-media.idl b/Tests/LibWeb/Text/input/wpt-import/interfaces/encrypted-media.idl new file mode 100644 index 00000000000..c034cd0bf0d --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/interfaces/encrypted-media.idl @@ -0,0 +1,132 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Encrypted Media Extensions (https://w3c.github.io/encrypted-media/) + +[Exposed=Window] +partial interface Navigator { + [SecureContext] Promise requestMediaKeySystemAccess ( + DOMString keySystem, + sequence supportedConfigurations); +}; + +enum MediaKeysRequirement { + "required", + "optional", + "not-allowed" +}; + +dictionary MediaKeySystemConfiguration { + DOMString label = ""; + sequence initDataTypes = []; + sequence audioCapabilities = []; + sequence videoCapabilities = []; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence sessionTypes; +}; + +dictionary MediaKeySystemMediaCapability { + DOMString contentType = ""; + DOMString? encryptionScheme = null; + DOMString robustness = ""; +}; + +[Exposed=Window, SecureContext] interface MediaKeySystemAccess { + readonly attribute DOMString keySystem; + MediaKeySystemConfiguration getConfiguration (); + Promise createMediaKeys (); +}; + +enum MediaKeySessionType { + "temporary", + "persistent-license" +}; + +[Exposed=Window, SecureContext] interface MediaKeys { + MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); + Promise getStatusForPolicy (optional MediaKeysPolicy policy = {}); + Promise setServerCertificate (BufferSource serverCertificate); +}; + +dictionary MediaKeysPolicy { + DOMString minHdcpVersion; +}; + +enum MediaKeySessionClosedReason { + "internal-error", + "closed-by-application", + "release-acknowledged", + "hardware-context-reset", + "resource-evicted" +}; + +[Exposed=Window, SecureContext] interface MediaKeySession : EventTarget { + readonly attribute DOMString sessionId; + readonly attribute unrestricted double expiration; + readonly attribute Promise closed; + readonly attribute MediaKeyStatusMap keyStatuses; + attribute EventHandler onkeystatuseschange; + attribute EventHandler onmessage; + Promise generateRequest (DOMString initDataType, BufferSource initData); + Promise load (DOMString sessionId); + Promise update (BufferSource response); + Promise close (); + Promise remove (); +}; + +[Exposed=Window, SecureContext] interface MediaKeyStatusMap { + iterable; + readonly attribute unsigned long size; + boolean has (BufferSource keyId); + (MediaKeyStatus or undefined) get (BufferSource keyId); +}; + +enum MediaKeyStatus { + "usable", + "expired", + "released", + "output-restricted", + "output-downscaled", + "usable-in-future", + "status-pending", + "internal-error" +}; + +enum MediaKeyMessageType { + "license-request", + "license-renewal", + "license-release", + "individualization-request" +}; + +[Exposed=Window, SecureContext] +interface MediaKeyMessageEvent : Event { + constructor(DOMString type, MediaKeyMessageEventInit eventInitDict); + readonly attribute MediaKeyMessageType messageType; + readonly attribute ArrayBuffer message; +}; + +dictionary MediaKeyMessageEventInit : EventInit { + required MediaKeyMessageType messageType; + required ArrayBuffer message; +}; + +[Exposed=Window] partial interface HTMLMediaElement { + [SecureContext] readonly attribute MediaKeys? mediaKeys; + attribute EventHandler onencrypted; + attribute EventHandler onwaitingforkey; + [SecureContext] Promise setMediaKeys (MediaKeys? mediaKeys); +}; + +[Exposed=Window] +interface MediaEncryptedEvent : Event { + constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict = {}); + readonly attribute DOMString initDataType; + readonly attribute ArrayBuffer? initData; +}; + +dictionary MediaEncryptedEventInit : EventInit { + DOMString initDataType = ""; + ArrayBuffer? initData = null; +}; diff --git a/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.html b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.html new file mode 100644 index 00000000000..88a18bf695a --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-event-handler-content-attributes.tentative.html @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.html b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.html new file mode 100644 index 00000000000..27e7d2442f6 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-namespace.html @@ -0,0 +1,62 @@ + + + + + + diff --git a/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.html b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.html new file mode 100644 index 00000000000..194c4ba9b75 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/trusted-types/TrustedTypePolicyFactory-getAttributeType-svg.html @@ -0,0 +1,22 @@ + + + + + + +
+ + diff --git a/Tests/LibWeb/Text/input/wpt-import/trusted-types/support/event-handler-attributes.mjs b/Tests/LibWeb/Text/input/wpt-import/trusted-types/support/event-handler-attributes.mjs new file mode 100644 index 00000000000..e3484f19317 --- /dev/null +++ b/Tests/LibWeb/Text/input/wpt-import/trusted-types/support/event-handler-attributes.mjs @@ -0,0 +1,47 @@ +import '../../resources/WebIDLParser.js'; + +export async function getEventHandlerAttributeWithInterfaceNames() { + let attributeNamesWithInterfaceName = []; + function isAttributeImplemented(interfaceName, name) { + switch (interfaceName) { + case 'GlobalEventHandlers': + return name in HTMLElement.prototype; + case 'WindowEventHandlers': + return name in HTMLBodyElement.prototype; + case 'HTMLMediaElement': + return name in HTMLMediaElement.prototype; + case 'SVGAnimationElement': + return name in SVGAnimationElement.prototype; + default: + throw "Unknown interface"; + } + } + function addOnAttributes(IDL, interfaceName) { + // Parsing the whole IDL file is slow, so use a small regexp to extract only + // the part that is relevant for this test. + let regexp = new RegExp(`^.*\(partial \)?interface \(mixin \)?${interfaceName}[^{]*{[^{}]*};$`, "m"); + let parsedIDL = WebIDL2.parse(IDL.match(regexp)[0]); + parsedIDL.find(idl => idl.name === interfaceName) + .members.map(member => member.name) + .filter(name => name.length >= 3 && name.startsWith("on") && + !name.startsWith("onwebkit") && + isAttributeImplemented(interfaceName, name)) + .forEach(name => attributeNamesWithInterfaceName.push({name, interfaceName})); + } + const htmlIDL = await (await fetch("../interfaces/html.idl")).text(); + // GlobalEventHandlers exist on HTMLElement, SVGElement, and MathMLElement. + // WindowEventHandlers exist on HTMLBodyElement, and HTMLFrameSetElement. + ["GlobalEventHandlers", "WindowEventHandlers"].forEach(interfaceName => { + addOnAttributes(htmlIDL, interfaceName); + }); + + const encryptedMediaIDL = await (await fetch("../interfaces/encrypted-media.idl")).text(); + // HTMLMediaElement (the parent for