diff options
Diffstat (limited to 'testing/web-platform/tests/interfaces')
294 files changed, 23619 insertions, 0 deletions
diff --git a/testing/web-platform/tests/interfaces/ANGLE_instanced_arrays.idl b/testing/web-platform/tests/interfaces/ANGLE_instanced_arrays.idl new file mode 100644 index 0000000000..557a416333 --- /dev/null +++ b/testing/web-platform/tests/interfaces/ANGLE_instanced_arrays.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL ANGLE_instanced_arrays Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/ANGLE_instanced_arrays/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface ANGLE_instanced_arrays { + const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE; + undefined drawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + undefined drawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei primcount); + undefined vertexAttribDivisorANGLE(GLuint index, GLuint divisor); +}; diff --git a/testing/web-platform/tests/interfaces/CSP.idl b/testing/web-platform/tests/interfaces/CSP.idl new file mode 100644 index 0000000000..ac0a6ff563 --- /dev/null +++ b/testing/web-platform/tests/interfaces/CSP.idl @@ -0,0 +1,56 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Content Security Policy Level 3 (https://w3c.github.io/webappsec-csp/) + +[Exposed=Window] +interface CSPViolationReportBody : ReportBody { + [Default] object toJSON(); + readonly attribute USVString documentURL; + readonly attribute USVString? referrer; + readonly attribute USVString? blockedURL; + readonly attribute DOMString effectiveDirective; + readonly attribute DOMString originalPolicy; + readonly attribute USVString? sourceFile; + readonly attribute DOMString? sample; + readonly attribute SecurityPolicyViolationEventDisposition disposition; + readonly attribute unsigned short statusCode; + readonly attribute unsigned long? lineNumber; + readonly attribute unsigned long? columnNumber; +}; + +enum SecurityPolicyViolationEventDisposition { + "enforce", "report" +}; + +[Exposed=(Window,Worker)] +interface SecurityPolicyViolationEvent : Event { + constructor(DOMString type, optional SecurityPolicyViolationEventInit eventInitDict = {}); + readonly attribute USVString documentURI; + readonly attribute USVString referrer; + readonly attribute USVString blockedURI; + readonly attribute DOMString effectiveDirective; + readonly attribute DOMString violatedDirective; // historical alias of effectiveDirective + readonly attribute DOMString originalPolicy; + readonly attribute USVString sourceFile; + readonly attribute DOMString sample; + readonly attribute SecurityPolicyViolationEventDisposition disposition; + readonly attribute unsigned short statusCode; + readonly attribute unsigned long lineNumber; + readonly attribute unsigned long columnNumber; +}; + +dictionary SecurityPolicyViolationEventInit : EventInit { + required USVString documentURI; + USVString referrer = ""; + USVString blockedURI = ""; + required DOMString violatedDirective; + required DOMString effectiveDirective; + required DOMString originalPolicy; + USVString sourceFile = ""; + DOMString sample = ""; + required SecurityPolicyViolationEventDisposition disposition; + required unsigned short statusCode; + unsigned long lineNumber = 0; + unsigned long columnNumber = 0; +}; diff --git a/testing/web-platform/tests/interfaces/DOM-Parsing.idl b/testing/web-platform/tests/interfaces/DOM-Parsing.idl new file mode 100644 index 0000000000..d0d84ab697 --- /dev/null +++ b/testing/web-platform/tests/interfaces/DOM-Parsing.idl @@ -0,0 +1,26 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: DOM Parsing and Serialization (https://w3c.github.io/DOM-Parsing/) + +[Exposed=Window] +interface XMLSerializer { + constructor(); + DOMString serializeToString(Node root); +}; + +interface mixin InnerHTML { + [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerHTML; +}; + +Element includes InnerHTML; +ShadowRoot includes InnerHTML; + +partial interface Element { + [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerHTML; + [CEReactions] undefined insertAdjacentHTML(DOMString position, DOMString text); +}; + +partial interface Range { + [CEReactions, NewObject] DocumentFragment createContextualFragment(DOMString fragment); +}; diff --git a/testing/web-platform/tests/interfaces/EXT_blend_minmax.idl b/testing/web-platform/tests/interfaces/EXT_blend_minmax.idl new file mode 100644 index 0000000000..fd7d26e7fb --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_blend_minmax.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_blend_minmax Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_blend_minmax/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_blend_minmax { + const GLenum MIN_EXT = 0x8007; + const GLenum MAX_EXT = 0x8008; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_clip_cull_distance.idl b/testing/web-platform/tests/interfaces/EXT_clip_cull_distance.idl new file mode 100644 index 0000000000..18d1c02a11 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_clip_cull_distance.idl @@ -0,0 +1,20 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_clip_cull_distance Extension Draft Specification (https://registry.khronos.org/webgl/extensions/EXT_clip_cull_distance/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_clip_cull_distance { + const GLenum MAX_CLIP_DISTANCES_EXT = 0x0D32; + const GLenum MAX_CULL_DISTANCES_EXT = 0x82F9; + const GLenum MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = 0x82FA; + + const GLenum CLIP_DISTANCE0_EXT = 0x3000; + const GLenum CLIP_DISTANCE1_EXT = 0x3001; + const GLenum CLIP_DISTANCE2_EXT = 0x3002; + const GLenum CLIP_DISTANCE3_EXT = 0x3003; + const GLenum CLIP_DISTANCE4_EXT = 0x3004; + const GLenum CLIP_DISTANCE5_EXT = 0x3005; + const GLenum CLIP_DISTANCE6_EXT = 0x3006; + const GLenum CLIP_DISTANCE7_EXT = 0x3007; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_color_buffer_float.idl b/testing/web-platform/tests/interfaces/EXT_color_buffer_float.idl new file mode 100644 index 0000000000..09bd397d01 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_color_buffer_float.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_color_buffer_float Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_color_buffer_float/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_color_buffer_float { +}; // interface EXT_color_buffer_float diff --git a/testing/web-platform/tests/interfaces/EXT_color_buffer_half_float.idl b/testing/web-platform/tests/interfaces/EXT_color_buffer_half_float.idl new file mode 100644 index 0000000000..7197e44f27 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_color_buffer_half_float.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_color_buffer_half_float Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_color_buffer_half_float/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_color_buffer_half_float { + const GLenum RGBA16F_EXT = 0x881A; + const GLenum RGB16F_EXT = 0x881B; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211; + const GLenum UNSIGNED_NORMALIZED_EXT = 0x8C17; +}; // interface EXT_color_buffer_half_float diff --git a/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query.idl b/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query.idl new file mode 100644 index 0000000000..cf0c8d9a28 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query.idl @@ -0,0 +1,30 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_disjoint_timer_query Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_disjoint_timer_query/) + +typedef unsigned long long GLuint64EXT; + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WebGLTimerQueryEXT : WebGLObject { +}; + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_disjoint_timer_query { + const GLenum QUERY_COUNTER_BITS_EXT = 0x8864; + const GLenum CURRENT_QUERY_EXT = 0x8865; + const GLenum QUERY_RESULT_EXT = 0x8866; + const GLenum QUERY_RESULT_AVAILABLE_EXT = 0x8867; + const GLenum TIME_ELAPSED_EXT = 0x88BF; + const GLenum TIMESTAMP_EXT = 0x8E28; + const GLenum GPU_DISJOINT_EXT = 0x8FBB; + + WebGLTimerQueryEXT? createQueryEXT(); + undefined deleteQueryEXT(WebGLTimerQueryEXT? query); + [WebGLHandlesContextLoss] boolean isQueryEXT(WebGLTimerQueryEXT? query); + undefined beginQueryEXT(GLenum target, WebGLTimerQueryEXT query); + undefined endQueryEXT(GLenum target); + undefined queryCounterEXT(WebGLTimerQueryEXT query, GLenum target); + any getQueryEXT(GLenum target, GLenum pname); + any getQueryObjectEXT(WebGLTimerQueryEXT query, GLenum pname); +}; diff --git a/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query_webgl2.idl b/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query_webgl2.idl new file mode 100644 index 0000000000..689203cb47 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_disjoint_timer_query_webgl2.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_disjoint_timer_query_webgl2 Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_disjoint_timer_query_webgl2/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_disjoint_timer_query_webgl2 { + const GLenum QUERY_COUNTER_BITS_EXT = 0x8864; + const GLenum TIME_ELAPSED_EXT = 0x88BF; + const GLenum TIMESTAMP_EXT = 0x8E28; + const GLenum GPU_DISJOINT_EXT = 0x8FBB; + + undefined queryCounterEXT(WebGLQuery query, GLenum target); +}; diff --git a/testing/web-platform/tests/interfaces/EXT_float_blend.idl b/testing/web-platform/tests/interfaces/EXT_float_blend.idl new file mode 100644 index 0000000000..58ec47e17e --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_float_blend.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_float_blend Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_float_blend/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_float_blend { +}; // interface EXT_float_blend diff --git a/testing/web-platform/tests/interfaces/EXT_frag_depth.idl b/testing/web-platform/tests/interfaces/EXT_frag_depth.idl new file mode 100644 index 0000000000..1ae6896eff --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_frag_depth.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_frag_depth Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_frag_depth/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_frag_depth { +}; diff --git a/testing/web-platform/tests/interfaces/EXT_sRGB.idl b/testing/web-platform/tests/interfaces/EXT_sRGB.idl new file mode 100644 index 0000000000..3c03c33ff8 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_sRGB.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_sRGB Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_sRGB/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_sRGB { + const GLenum SRGB_EXT = 0x8C40; + const GLenum SRGB_ALPHA_EXT = 0x8C42; + const GLenum SRGB8_ALPHA8_EXT = 0x8C43; + const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_shader_texture_lod.idl b/testing/web-platform/tests/interfaces/EXT_shader_texture_lod.idl new file mode 100644 index 0000000000..13df26c3ce --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_shader_texture_lod.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_shader_texture_lod Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_shader_texture_lod/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_shader_texture_lod { +}; diff --git a/testing/web-platform/tests/interfaces/EXT_texture_compression_bptc.idl b/testing/web-platform/tests/interfaces/EXT_texture_compression_bptc.idl new file mode 100644 index 0000000000..2772980bdc --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_texture_compression_bptc.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_texture_compression_bptc Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_texture_compression_bptc { + const GLenum COMPRESSED_RGBA_BPTC_UNORM_EXT = 0x8E8C; + const GLenum COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT = 0x8E8D; + const GLenum COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT = 0x8E8E; + const GLenum COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT = 0x8E8F; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_texture_compression_rgtc.idl b/testing/web-platform/tests/interfaces/EXT_texture_compression_rgtc.idl new file mode 100644 index 0000000000..f12b962ea0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_texture_compression_rgtc.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_texture_compression_rgtc Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_texture_compression_rgtc { + const GLenum COMPRESSED_RED_RGTC1_EXT = 0x8DBB; + const GLenum COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC; + const GLenum COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD; + const GLenum COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_texture_filter_anisotropic.idl b/testing/web-platform/tests/interfaces/EXT_texture_filter_anisotropic.idl new file mode 100644 index 0000000000..5c78bfaf4f --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_texture_filter_anisotropic.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_texture_filter_anisotropic Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_texture_filter_anisotropic/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_texture_filter_anisotropic { + const GLenum TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; + const GLenum MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; +}; diff --git a/testing/web-platform/tests/interfaces/EXT_texture_norm16.idl b/testing/web-platform/tests/interfaces/EXT_texture_norm16.idl new file mode 100644 index 0000000000..1fe5ed86e7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/EXT_texture_norm16.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL EXT_texture_norm16 Extension Specification (https://registry.khronos.org/webgl/extensions/EXT_texture_norm16/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface EXT_texture_norm16 { + const GLenum R16_EXT = 0x822A; + const GLenum RG16_EXT = 0x822C; + const GLenum RGB16_EXT = 0x8054; + const GLenum RGBA16_EXT = 0x805B; + const GLenum R16_SNORM_EXT = 0x8F98; + const GLenum RG16_SNORM_EXT = 0x8F99; + const GLenum RGB16_SNORM_EXT = 0x8F9A; + const GLenum RGBA16_SNORM_EXT = 0x8F9B; +}; diff --git a/testing/web-platform/tests/interfaces/FedCM.idl b/testing/web-platform/tests/interfaces/FedCM.idl new file mode 100644 index 0000000000..b3ddb54e0c --- /dev/null +++ b/testing/web-platform/tests/interfaces/FedCM.idl @@ -0,0 +1,81 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Federated Credential Management API (https://fedidcg.github.io/FedCM/) + +dictionary IdentityProviderWellKnown { + required sequence<USVString> provider_urls; +}; + +dictionary IdentityProviderIcon { + required USVString url; + unsigned long size; +}; + +dictionary IdentityProviderBranding { + USVString background_color; + USVString color; + sequence<IdentityProviderIcon> icons; +}; + +dictionary IdentityProviderAPIConfig { + required USVString accounts_endpoint; + required USVString client_metadata_endpoint; + required USVString id_assertion_endpoint; + IdentityProviderBranding branding; +}; + +dictionary IdentityProviderAccount { + required USVString id; + required USVString name; + required USVString email; + USVString given_name; + sequence<USVString> approved_clients; +}; +dictionary IdentityProviderAccountList { + sequence<IdentityProviderAccount> accounts; +}; + +dictionary IdentityProviderClientMetadata { + USVString privacy_policy_url; + USVString terms_of_service_url; +}; + +dictionary IdentityProviderToken { + required USVString token; +}; + +[Exposed=Window, SecureContext] +interface IdentityCredential : Credential { + readonly attribute USVString? token; +}; + +partial dictionary CredentialRequestOptions { + IdentityCredentialRequestOptions identity; +}; + +dictionary IdentityCredentialRequestOptions { + sequence<IdentityProviderConfig> providers; +}; + +dictionary IdentityProviderConfig { + required USVString configURL; + required USVString clientId; + USVString nonce; +}; + +dictionary IdentityCredentialLogoutRPsRequest { + required USVString url; + required USVString accountId; +}; + +[Exposed=Window, SecureContext] +partial interface IdentityCredential { + static Promise<undefined> logoutRPs(sequence<IdentityCredentialLogoutRPsRequest> logoutRequests); +}; + +[Exposed=Window, SecureContext] +interface IdentityProvider { + static undefined login(); + static undefined logout(); +}; diff --git a/testing/web-platform/tests/interfaces/FileAPI.idl b/testing/web-platform/tests/interfaces/FileAPI.idl new file mode 100644 index 0000000000..aee0e65dca --- /dev/null +++ b/testing/web-platform/tests/interfaces/FileAPI.idl @@ -0,0 +1,100 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: File API (https://w3c.github.io/FileAPI/) + +[Exposed=(Window,Worker), Serializable] +interface Blob { + constructor(optional sequence<BlobPart> blobParts, + optional BlobPropertyBag options = {}); + + readonly attribute unsigned long long size; + readonly attribute DOMString type; + + // slice Blob into byte-ranged chunks + Blob slice(optional [Clamp] long long start, + optional [Clamp] long long end, + optional DOMString contentType); + + // read from the Blob. + [NewObject] ReadableStream stream(); + [NewObject] Promise<USVString> text(); + [NewObject] Promise<ArrayBuffer> arrayBuffer(); +}; + +enum EndingType { "transparent", "native" }; + +dictionary BlobPropertyBag { + DOMString type = ""; + EndingType endings = "transparent"; +}; + +typedef (BufferSource or Blob or USVString) BlobPart; + +[Exposed=(Window,Worker), Serializable] +interface File : Blob { + constructor(sequence<BlobPart> fileBits, + USVString fileName, + optional FilePropertyBag options = {}); + readonly attribute DOMString name; + readonly attribute long long lastModified; +}; + +dictionary FilePropertyBag : BlobPropertyBag { + long long lastModified; +}; + +[Exposed=(Window,Worker), Serializable] +interface FileList { + getter File? item(unsigned long index); + readonly attribute unsigned long length; +}; + +[Exposed=(Window,Worker)] +interface FileReader: EventTarget { + constructor(); + // async read methods + undefined readAsArrayBuffer(Blob blob); + undefined readAsBinaryString(Blob blob); + undefined readAsText(Blob blob, optional DOMString encoding); + undefined readAsDataURL(Blob blob); + + undefined abort(); + + // states + const unsigned short EMPTY = 0; + const unsigned short LOADING = 1; + const unsigned short DONE = 2; + + readonly attribute unsigned short readyState; + + // File or Blob data + readonly attribute (DOMString or ArrayBuffer)? result; + + readonly attribute DOMException? error; + + // event handler content attributes + attribute EventHandler onloadstart; + attribute EventHandler onprogress; + attribute EventHandler onload; + attribute EventHandler onabort; + attribute EventHandler onerror; + attribute EventHandler onloadend; +}; + +[Exposed=(DedicatedWorker,SharedWorker)] +interface FileReaderSync { + constructor(); + // Synchronously return strings + + ArrayBuffer readAsArrayBuffer(Blob blob); + DOMString readAsBinaryString(Blob blob); + DOMString readAsText(Blob blob, optional DOMString encoding); + DOMString readAsDataURL(Blob blob); +}; + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +partial interface URL { + static DOMString createObjectURL((Blob or MediaSource) obj); + static undefined revokeObjectURL(DOMString url); +}; diff --git a/testing/web-platform/tests/interfaces/IndexedDB.idl b/testing/web-platform/tests/interfaces/IndexedDB.idl new file mode 100644 index 0000000000..d82391da7e --- /dev/null +++ b/testing/web-platform/tests/interfaces/IndexedDB.idl @@ -0,0 +1,226 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Indexed Database API 3.0 (https://w3c.github.io/IndexedDB/) + +[Exposed=(Window,Worker)] +interface IDBRequest : EventTarget { + readonly attribute any result; + readonly attribute DOMException? error; + readonly attribute (IDBObjectStore or IDBIndex or IDBCursor)? source; + readonly attribute IDBTransaction? transaction; + readonly attribute IDBRequestReadyState readyState; + + // Event handlers: + attribute EventHandler onsuccess; + attribute EventHandler onerror; +}; + +enum IDBRequestReadyState { + "pending", + "done" +}; + +[Exposed=(Window,Worker)] +interface IDBOpenDBRequest : IDBRequest { + // Event handlers: + attribute EventHandler onblocked; + attribute EventHandler onupgradeneeded; +}; + +[Exposed=(Window,Worker)] +interface IDBVersionChangeEvent : Event { + constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict = {}); + readonly attribute unsigned long long oldVersion; + readonly attribute unsigned long long? newVersion; +}; + +dictionary IDBVersionChangeEventInit : EventInit { + unsigned long long oldVersion = 0; + unsigned long long? newVersion = null; +}; + +partial interface mixin WindowOrWorkerGlobalScope { + [SameObject] readonly attribute IDBFactory indexedDB; +}; + +[Exposed=(Window,Worker)] +interface IDBFactory { + [NewObject] IDBOpenDBRequest open(DOMString name, + optional [EnforceRange] unsigned long long version); + [NewObject] IDBOpenDBRequest deleteDatabase(DOMString name); + + Promise<sequence<IDBDatabaseInfo>> databases(); + + short cmp(any first, any second); +}; + +dictionary IDBDatabaseInfo { + DOMString name; + unsigned long long version; +}; + +[Exposed=(Window,Worker)] +interface IDBDatabase : EventTarget { + readonly attribute DOMString name; + readonly attribute unsigned long long version; + readonly attribute DOMStringList objectStoreNames; + + [NewObject] IDBTransaction transaction((DOMString or sequence<DOMString>) storeNames, + optional IDBTransactionMode mode = "readonly", + optional IDBTransactionOptions options = {}); + undefined close(); + + [NewObject] IDBObjectStore createObjectStore( + DOMString name, + optional IDBObjectStoreParameters options = {}); + undefined deleteObjectStore(DOMString name); + + // Event handlers: + attribute EventHandler onabort; + attribute EventHandler onclose; + attribute EventHandler onerror; + attribute EventHandler onversionchange; +}; + +enum IDBTransactionDurability { "default", "strict", "relaxed" }; + +dictionary IDBTransactionOptions { + IDBTransactionDurability durability = "default"; +}; + +dictionary IDBObjectStoreParameters { + (DOMString or sequence<DOMString>)? keyPath = null; + boolean autoIncrement = false; +}; + +[Exposed=(Window,Worker)] +interface IDBObjectStore { + attribute DOMString name; + readonly attribute any keyPath; + readonly attribute DOMStringList indexNames; + [SameObject] readonly attribute IDBTransaction transaction; + readonly attribute boolean autoIncrement; + + [NewObject] IDBRequest put(any value, optional any key); + [NewObject] IDBRequest add(any value, optional any key); + [NewObject] IDBRequest delete(any query); + [NewObject] IDBRequest clear(); + [NewObject] IDBRequest get(any query); + [NewObject] IDBRequest getKey(any query); + [NewObject] IDBRequest getAll(optional any query, + optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest getAllKeys(optional any query, + optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest count(optional any query); + + [NewObject] IDBRequest openCursor(optional any query, + optional IDBCursorDirection direction = "next"); + [NewObject] IDBRequest openKeyCursor(optional any query, + optional IDBCursorDirection direction = "next"); + + IDBIndex index(DOMString name); + + [NewObject] IDBIndex createIndex(DOMString name, + (DOMString or sequence<DOMString>) keyPath, + optional IDBIndexParameters options = {}); + undefined deleteIndex(DOMString name); +}; + +dictionary IDBIndexParameters { + boolean unique = false; + boolean multiEntry = false; +}; + +[Exposed=(Window,Worker)] +interface IDBIndex { + attribute DOMString name; + [SameObject] readonly attribute IDBObjectStore objectStore; + readonly attribute any keyPath; + readonly attribute boolean multiEntry; + readonly attribute boolean unique; + + [NewObject] IDBRequest get(any query); + [NewObject] IDBRequest getKey(any query); + [NewObject] IDBRequest getAll(optional any query, + optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest getAllKeys(optional any query, + optional [EnforceRange] unsigned long count); + [NewObject] IDBRequest count(optional any query); + + [NewObject] IDBRequest openCursor(optional any query, + optional IDBCursorDirection direction = "next"); + [NewObject] IDBRequest openKeyCursor(optional any query, + optional IDBCursorDirection direction = "next"); +}; + +[Exposed=(Window,Worker)] +interface IDBKeyRange { + readonly attribute any lower; + readonly attribute any upper; + readonly attribute boolean lowerOpen; + readonly attribute boolean upperOpen; + + // Static construction methods: + [NewObject] static IDBKeyRange only(any value); + [NewObject] static IDBKeyRange lowerBound(any lower, optional boolean open = false); + [NewObject] static IDBKeyRange upperBound(any upper, optional boolean open = false); + [NewObject] static IDBKeyRange bound(any lower, + any upper, + optional boolean lowerOpen = false, + optional boolean upperOpen = false); + + boolean includes(any key); +}; + +[Exposed=(Window,Worker)] +interface IDBCursor { + readonly attribute (IDBObjectStore or IDBIndex) source; + readonly attribute IDBCursorDirection direction; + readonly attribute any key; + readonly attribute any primaryKey; + [SameObject] readonly attribute IDBRequest request; + + undefined advance([EnforceRange] unsigned long count); + undefined continue(optional any key); + undefined continuePrimaryKey(any key, any primaryKey); + + [NewObject] IDBRequest update(any value); + [NewObject] IDBRequest delete(); +}; + +enum IDBCursorDirection { + "next", + "nextunique", + "prev", + "prevunique" +}; + +[Exposed=(Window,Worker)] +interface IDBCursorWithValue : IDBCursor { + readonly attribute any value; +}; + +[Exposed=(Window,Worker)] +interface IDBTransaction : EventTarget { + readonly attribute DOMStringList objectStoreNames; + readonly attribute IDBTransactionMode mode; + readonly attribute IDBTransactionDurability durability; + [SameObject] readonly attribute IDBDatabase db; + readonly attribute DOMException? error; + + IDBObjectStore objectStore(DOMString name); + undefined commit(); + undefined abort(); + + // Event handlers: + attribute EventHandler onabort; + attribute EventHandler oncomplete; + attribute EventHandler onerror; +}; + +enum IDBTransactionMode { + "readonly", + "readwrite", + "versionchange" +}; diff --git a/testing/web-platform/tests/interfaces/KHR_parallel_shader_compile.idl b/testing/web-platform/tests/interfaces/KHR_parallel_shader_compile.idl new file mode 100644 index 0000000000..14709658e3 --- /dev/null +++ b/testing/web-platform/tests/interfaces/KHR_parallel_shader_compile.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL KHR_parallel_shader_compile Extension Specification (https://registry.khronos.org/webgl/extensions/KHR_parallel_shader_compile/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface KHR_parallel_shader_compile { + const GLenum COMPLETION_STATUS_KHR = 0x91B1; +}; diff --git a/testing/web-platform/tests/interfaces/META.yml b/testing/web-platform/tests/interfaces/META.yml new file mode 100644 index 0000000000..c1dd8dddf9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/META.yml @@ -0,0 +1,2 @@ +suggested_reviewers: + - foolip diff --git a/testing/web-platform/tests/interfaces/OES_draw_buffers_indexed.idl b/testing/web-platform/tests/interfaces/OES_draw_buffers_indexed.idl new file mode 100644 index 0000000000..ea1e217a11 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_draw_buffers_indexed.idl @@ -0,0 +1,26 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_draw_buffers_indexed Extension Specification (https://registry.khronos.org/webgl/extensions/OES_draw_buffers_indexed/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_draw_buffers_indexed { + undefined enableiOES(GLenum target, GLuint index); + + undefined disableiOES(GLenum target, GLuint index); + + undefined blendEquationiOES(GLuint buf, GLenum mode); + + undefined blendEquationSeparateiOES(GLuint buf, + GLenum modeRGB, GLenum modeAlpha); + + undefined blendFunciOES(GLuint buf, + GLenum src, GLenum dst); + + undefined blendFuncSeparateiOES(GLuint buf, + GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); + + undefined colorMaskiOES(GLuint buf, + GLboolean r, GLboolean g, GLboolean b, GLboolean a); +}; diff --git a/testing/web-platform/tests/interfaces/OES_element_index_uint.idl b/testing/web-platform/tests/interfaces/OES_element_index_uint.idl new file mode 100644 index 0000000000..df43a57da8 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_element_index_uint.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_element_index_uint Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_element_index_uint/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_element_index_uint { +}; diff --git a/testing/web-platform/tests/interfaces/OES_fbo_render_mipmap.idl b/testing/web-platform/tests/interfaces/OES_fbo_render_mipmap.idl new file mode 100644 index 0000000000..608c39291a --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_fbo_render_mipmap.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_fbo_render_mipmap Extension Specification (https://registry.khronos.org/webgl/extensions/OES_fbo_render_mipmap/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_fbo_render_mipmap { +}; diff --git a/testing/web-platform/tests/interfaces/OES_standard_derivatives.idl b/testing/web-platform/tests/interfaces/OES_standard_derivatives.idl new file mode 100644 index 0000000000..7bf073a3f1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_standard_derivatives.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_standard_derivatives Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_standard_derivatives/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_standard_derivatives { + const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B; +}; diff --git a/testing/web-platform/tests/interfaces/OES_texture_float.idl b/testing/web-platform/tests/interfaces/OES_texture_float.idl new file mode 100644 index 0000000000..a1bb79cd5c --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_texture_float.idl @@ -0,0 +1,7 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_texture_float Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_texture_float/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_texture_float { }; diff --git a/testing/web-platform/tests/interfaces/OES_texture_float_linear.idl b/testing/web-platform/tests/interfaces/OES_texture_float_linear.idl new file mode 100644 index 0000000000..462629736d --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_texture_float_linear.idl @@ -0,0 +1,7 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_texture_float_linear Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_texture_float_linear/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_texture_float_linear { }; diff --git a/testing/web-platform/tests/interfaces/OES_texture_half_float.idl b/testing/web-platform/tests/interfaces/OES_texture_half_float.idl new file mode 100644 index 0000000000..be41454362 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_texture_half_float.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_texture_half_float Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_texture_half_float/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_texture_half_float { + const GLenum HALF_FLOAT_OES = 0x8D61; +}; diff --git a/testing/web-platform/tests/interfaces/OES_texture_half_float_linear.idl b/testing/web-platform/tests/interfaces/OES_texture_half_float_linear.idl new file mode 100644 index 0000000000..2f1a999b90 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_texture_half_float_linear.idl @@ -0,0 +1,7 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_texture_half_float_linear Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_texture_half_float_linear/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_texture_half_float_linear { }; diff --git a/testing/web-platform/tests/interfaces/OES_vertex_array_object.idl b/testing/web-platform/tests/interfaces/OES_vertex_array_object.idl new file mode 100644 index 0000000000..8aeb7459f3 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OES_vertex_array_object.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OES_vertex_array_object Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/OES_vertex_array_object/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WebGLVertexArrayObjectOES : WebGLObject { +}; + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OES_vertex_array_object { + const GLenum VERTEX_ARRAY_BINDING_OES = 0x85B5; + + WebGLVertexArrayObjectOES? createVertexArrayOES(); + undefined deleteVertexArrayOES(WebGLVertexArrayObjectOES? arrayObject); + [WebGLHandlesContextLoss] GLboolean isVertexArrayOES(WebGLVertexArrayObjectOES? arrayObject); + undefined bindVertexArrayOES(WebGLVertexArrayObjectOES? arrayObject); +}; diff --git a/testing/web-platform/tests/interfaces/OVR_multiview2.idl b/testing/web-platform/tests/interfaces/OVR_multiview2.idl new file mode 100644 index 0000000000..9c1ecc4246 --- /dev/null +++ b/testing/web-platform/tests/interfaces/OVR_multiview2.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL OVR_multiview2 Extension Specification (https://registry.khronos.org/webgl/extensions/OVR_multiview2/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface OVR_multiview2 { + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632; + const GLenum MAX_VIEWS_OVR = 0x9631; + const GLenum FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633; + + undefined framebufferTextureMultiviewOVR(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, GLint baseViewIndex, GLsizei numViews); +}; diff --git a/testing/web-platform/tests/interfaces/README.md b/testing/web-platform/tests/interfaces/README.md new file mode 100644 index 0000000000..5e948ad955 --- /dev/null +++ b/testing/web-platform/tests/interfaces/README.md @@ -0,0 +1,3 @@ +This directory contains [Web IDL](https://webidl.spec.whatwg.org/) interface definitions for use in idlharness.js tests. + +The `.idl` files (except `*.tentative.idl`) are copied from [@webref/idl](https://www.npmjs.com/package/@webref/idl) by a [workflow](https://github.com/web-platform-tests/wpt/blob/master/.github/workflows/interfaces.yml) that tries to sync the files daily. The resulting pull requests require manual review but can be approved/merged by anyone with write access. diff --git a/testing/web-platform/tests/interfaces/SVG.idl b/testing/web-platform/tests/interfaces/SVG.idl new file mode 100644 index 0000000000..3a0b86126b --- /dev/null +++ b/testing/web-platform/tests/interfaces/SVG.idl @@ -0,0 +1,693 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Scalable Vector Graphics (SVG) 2 (https://svgwg.org/svg2-draft/) + +[Exposed=Window] +interface SVGElement : Element { + + [SameObject] readonly attribute SVGAnimatedString className; + + readonly attribute SVGSVGElement? ownerSVGElement; + readonly attribute SVGElement? viewportElement; +}; + +SVGElement includes GlobalEventHandlers; +SVGElement includes SVGElementInstance; +SVGElement includes HTMLOrSVGElement; + +dictionary SVGBoundingBoxOptions { + boolean fill = true; + boolean stroke = false; + boolean markers = false; + boolean clipped = false; +}; + +[Exposed=Window] +interface SVGGraphicsElement : SVGElement { + [SameObject] readonly attribute SVGAnimatedTransformList transform; + + DOMRect getBBox(optional SVGBoundingBoxOptions options = {}); + DOMMatrix? getCTM(); + DOMMatrix? getScreenCTM(); +}; + +SVGGraphicsElement includes SVGTests; + +[Exposed=Window] +interface SVGGeometryElement : SVGGraphicsElement { + [SameObject] readonly attribute SVGAnimatedNumber pathLength; + + boolean isPointInFill(optional DOMPointInit point = {}); + boolean isPointInStroke(optional DOMPointInit point = {}); + float getTotalLength(); + DOMPoint getPointAtLength(float distance); +}; + +[Exposed=Window] +interface SVGNumber { + attribute float value; +}; + +[Exposed=Window] +interface SVGLength { + + // Length Unit Types + const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0; + const unsigned short SVG_LENGTHTYPE_NUMBER = 1; + const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2; + const unsigned short SVG_LENGTHTYPE_EMS = 3; + const unsigned short SVG_LENGTHTYPE_EXS = 4; + const unsigned short SVG_LENGTHTYPE_PX = 5; + const unsigned short SVG_LENGTHTYPE_CM = 6; + const unsigned short SVG_LENGTHTYPE_MM = 7; + const unsigned short SVG_LENGTHTYPE_IN = 8; + const unsigned short SVG_LENGTHTYPE_PT = 9; + const unsigned short SVG_LENGTHTYPE_PC = 10; + + readonly attribute unsigned short unitType; + attribute float value; + attribute float valueInSpecifiedUnits; + attribute DOMString valueAsString; + + undefined newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); + undefined convertToSpecifiedUnits(unsigned short unitType); +}; + +[Exposed=Window] +interface SVGAngle { + + // Angle Unit Types + const unsigned short SVG_ANGLETYPE_UNKNOWN = 0; + const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1; + const unsigned short SVG_ANGLETYPE_DEG = 2; + const unsigned short SVG_ANGLETYPE_RAD = 3; + const unsigned short SVG_ANGLETYPE_GRAD = 4; + + readonly attribute unsigned short unitType; + attribute float value; + attribute float valueInSpecifiedUnits; + attribute DOMString valueAsString; + + undefined newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); + undefined convertToSpecifiedUnits(unsigned short unitType); +}; + +[Exposed=Window] +interface SVGNumberList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + undefined clear(); + SVGNumber initialize(SVGNumber newItem); + getter SVGNumber getItem(unsigned long index); + SVGNumber insertItemBefore(SVGNumber newItem, unsigned long index); + SVGNumber replaceItem(SVGNumber newItem, unsigned long index); + SVGNumber removeItem(unsigned long index); + SVGNumber appendItem(SVGNumber newItem); + setter undefined (unsigned long index, SVGNumber newItem); +}; + +[Exposed=Window] +interface SVGLengthList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + undefined clear(); + SVGLength initialize(SVGLength newItem); + getter SVGLength getItem(unsigned long index); + SVGLength insertItemBefore(SVGLength newItem, unsigned long index); + SVGLength replaceItem(SVGLength newItem, unsigned long index); + SVGLength removeItem(unsigned long index); + SVGLength appendItem(SVGLength newItem); + setter undefined (unsigned long index, SVGLength newItem); +}; + +[Exposed=Window] +interface SVGStringList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + undefined clear(); + DOMString initialize(DOMString newItem); + getter DOMString getItem(unsigned long index); + DOMString insertItemBefore(DOMString newItem, unsigned long index); + DOMString replaceItem(DOMString newItem, unsigned long index); + DOMString removeItem(unsigned long index); + DOMString appendItem(DOMString newItem); + setter undefined (unsigned long index, DOMString newItem); +}; + +[Exposed=Window] +interface SVGAnimatedBoolean { + attribute boolean baseVal; + readonly attribute boolean animVal; +}; + +[Exposed=Window] +interface SVGAnimatedEnumeration { + attribute unsigned short baseVal; + readonly attribute unsigned short animVal; +}; + +[Exposed=Window] +interface SVGAnimatedInteger { + attribute long baseVal; + readonly attribute long animVal; +}; + +[Exposed=Window] +interface SVGAnimatedNumber { + attribute float baseVal; + readonly attribute float animVal; +}; + +[Exposed=Window] +interface SVGAnimatedLength { + [SameObject] readonly attribute SVGLength baseVal; + [SameObject] readonly attribute SVGLength animVal; +}; + +[Exposed=Window] +interface SVGAnimatedAngle { + [SameObject] readonly attribute SVGAngle baseVal; + [SameObject] readonly attribute SVGAngle animVal; +}; + +[Exposed=Window] +interface SVGAnimatedString { + attribute DOMString baseVal; + readonly attribute DOMString animVal; +}; + +[Exposed=Window] +interface SVGAnimatedRect { + [SameObject] readonly attribute DOMRect baseVal; + [SameObject] readonly attribute DOMRectReadOnly animVal; +}; + +[Exposed=Window] +interface SVGAnimatedNumberList { + [SameObject] readonly attribute SVGNumberList baseVal; + [SameObject] readonly attribute SVGNumberList animVal; +}; + +[Exposed=Window] +interface SVGAnimatedLengthList { + [SameObject] readonly attribute SVGLengthList baseVal; + [SameObject] readonly attribute SVGLengthList animVal; +}; + +[Exposed=Window] +interface SVGUnitTypes { + // Unit Types + const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; + const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1; + const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2; +}; + +interface mixin SVGTests { + [SameObject] readonly attribute SVGStringList requiredExtensions; + [SameObject] readonly attribute SVGStringList systemLanguage; +}; + +interface mixin SVGFitToViewBox { + [SameObject] readonly attribute SVGAnimatedRect viewBox; + [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; +}; + +interface mixin SVGURIReference { + [SameObject] readonly attribute SVGAnimatedString href; +}; + +partial interface Document { + readonly attribute SVGSVGElement? rootElement; +}; + +[Exposed=Window] +interface SVGSVGElement : SVGGraphicsElement { + + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; + + attribute float currentScale; + [SameObject] readonly attribute DOMPointReadOnly currentTranslate; + + NodeList getIntersectionList(DOMRectReadOnly rect, SVGElement? referenceElement); + NodeList getEnclosureList(DOMRectReadOnly rect, SVGElement? referenceElement); + boolean checkIntersection(SVGElement element, DOMRectReadOnly rect); + boolean checkEnclosure(SVGElement element, DOMRectReadOnly rect); + + undefined deselectAll(); + + SVGNumber createSVGNumber(); + SVGLength createSVGLength(); + SVGAngle createSVGAngle(); + DOMPoint createSVGPoint(); + DOMMatrix createSVGMatrix(); + DOMRect createSVGRect(); + SVGTransform createSVGTransform(); + SVGTransform createSVGTransformFromMatrix(optional DOMMatrix2DInit matrix = {}); + + Element getElementById(DOMString elementId); + + // Deprecated methods that have no effect when called, + // but which are kept for compatibility reasons. + unsigned long suspendRedraw(unsigned long maxWaitMilliseconds); + undefined unsuspendRedraw(unsigned long suspendHandleID); + undefined unsuspendRedrawAll(); + undefined forceRedraw(); +}; + +SVGSVGElement includes SVGFitToViewBox; +SVGSVGElement includes WindowEventHandlers; + +[Exposed=Window] +interface SVGGElement : SVGGraphicsElement { +}; + +[Exposed=Window] +interface SVGDefsElement : SVGGraphicsElement { +}; + +[Exposed=Window] +interface SVGDescElement : SVGElement { +}; + +[Exposed=Window] +interface SVGMetadataElement : SVGElement { +}; + +[Exposed=Window] +interface SVGTitleElement : SVGElement { +}; + +[Exposed=Window] +interface SVGSymbolElement : SVGGraphicsElement { +}; + +SVGSymbolElement includes SVGFitToViewBox; + +[Exposed=Window] +interface SVGUseElement : SVGGraphicsElement { + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; + [SameObject] readonly attribute SVGElement? instanceRoot; + [SameObject] readonly attribute SVGElement? animatedInstanceRoot; +}; + +SVGUseElement includes SVGURIReference; + +[Exposed=Window] +interface SVGUseElementShadowRoot : ShadowRoot { +}; + +interface mixin SVGElementInstance { + [SameObject] readonly attribute SVGElement? correspondingElement; + [SameObject] readonly attribute SVGUseElement? correspondingUseElement; +}; + +[Exposed=Window] +interface ShadowAnimation : Animation { + constructor(Animation source, (Element or CSSPseudoElement) newTarget); + [SameObject] readonly attribute Animation sourceAnimation; +}; + +[Exposed=Window] +interface SVGSwitchElement : SVGGraphicsElement { +}; + +interface mixin GetSVGDocument { + Document getSVGDocument(); +}; + +[Exposed=Window] +interface SVGStyleElement : SVGElement { + attribute DOMString type; + attribute DOMString media; + attribute DOMString title; +}; + +SVGStyleElement includes LinkStyle; + +[Exposed=Window] +interface SVGTransform { + + // Transform Types + const unsigned short SVG_TRANSFORM_UNKNOWN = 0; + const unsigned short SVG_TRANSFORM_MATRIX = 1; + const unsigned short SVG_TRANSFORM_TRANSLATE = 2; + const unsigned short SVG_TRANSFORM_SCALE = 3; + const unsigned short SVG_TRANSFORM_ROTATE = 4; + const unsigned short SVG_TRANSFORM_SKEWX = 5; + const unsigned short SVG_TRANSFORM_SKEWY = 6; + + readonly attribute unsigned short type; + [SameObject] readonly attribute DOMMatrix matrix; + readonly attribute float angle; + + undefined setMatrix(optional DOMMatrix2DInit matrix = {}); + undefined setTranslate(float tx, float ty); + undefined setScale(float sx, float sy); + undefined setRotate(float angle, float cx, float cy); + undefined setSkewX(float angle); + undefined setSkewY(float angle); +}; + +[Exposed=Window] +interface SVGTransformList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + undefined clear(); + SVGTransform initialize(SVGTransform newItem); + getter SVGTransform getItem(unsigned long index); + SVGTransform insertItemBefore(SVGTransform newItem, unsigned long index); + SVGTransform replaceItem(SVGTransform newItem, unsigned long index); + SVGTransform removeItem(unsigned long index); + SVGTransform appendItem(SVGTransform newItem); + setter undefined (unsigned long index, SVGTransform newItem); + + // Additional methods not common to other list interfaces. + SVGTransform createSVGTransformFromMatrix(optional DOMMatrix2DInit matrix = {}); + SVGTransform? consolidate(); +}; + +[Exposed=Window] +interface SVGAnimatedTransformList { + [SameObject] readonly attribute SVGTransformList baseVal; + [SameObject] readonly attribute SVGTransformList animVal; +}; + +[Exposed=Window] +interface SVGPreserveAspectRatio { + + // Alignment Types + const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0; + const unsigned short SVG_PRESERVEASPECTRATIO_NONE = 1; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7; + const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8; + const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9; + const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10; + + // Meet-or-slice Types + const unsigned short SVG_MEETORSLICE_UNKNOWN = 0; + const unsigned short SVG_MEETORSLICE_MEET = 1; + const unsigned short SVG_MEETORSLICE_SLICE = 2; + + attribute unsigned short align; + attribute unsigned short meetOrSlice; +}; + +[Exposed=Window] +interface SVGAnimatedPreserveAspectRatio { + [SameObject] readonly attribute SVGPreserveAspectRatio baseVal; + [SameObject] readonly attribute SVGPreserveAspectRatio animVal; +}; + +[Exposed=Window] +interface SVGPathElement : SVGGeometryElement { +}; + +[Exposed=Window] +interface SVGRectElement : SVGGeometryElement { + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; + [SameObject] readonly attribute SVGAnimatedLength rx; + [SameObject] readonly attribute SVGAnimatedLength ry; +}; + +[Exposed=Window] +interface SVGCircleElement : SVGGeometryElement { + [SameObject] readonly attribute SVGAnimatedLength cx; + [SameObject] readonly attribute SVGAnimatedLength cy; + [SameObject] readonly attribute SVGAnimatedLength r; +}; + +[Exposed=Window] +interface SVGEllipseElement : SVGGeometryElement { + [SameObject] readonly attribute SVGAnimatedLength cx; + [SameObject] readonly attribute SVGAnimatedLength cy; + [SameObject] readonly attribute SVGAnimatedLength rx; + [SameObject] readonly attribute SVGAnimatedLength ry; +}; + +[Exposed=Window] +interface SVGLineElement : SVGGeometryElement { + [SameObject] readonly attribute SVGAnimatedLength x1; + [SameObject] readonly attribute SVGAnimatedLength y1; + [SameObject] readonly attribute SVGAnimatedLength x2; + [SameObject] readonly attribute SVGAnimatedLength y2; +}; + +interface mixin SVGAnimatedPoints { + [SameObject] readonly attribute SVGPointList points; + [SameObject] readonly attribute SVGPointList animatedPoints; +}; + +[Exposed=Window] +interface SVGPointList { + + readonly attribute unsigned long length; + readonly attribute unsigned long numberOfItems; + + undefined clear(); + DOMPoint initialize(DOMPoint newItem); + getter DOMPoint getItem(unsigned long index); + DOMPoint insertItemBefore(DOMPoint newItem, unsigned long index); + DOMPoint replaceItem(DOMPoint newItem, unsigned long index); + DOMPoint removeItem(unsigned long index); + DOMPoint appendItem(DOMPoint newItem); + setter undefined (unsigned long index, DOMPoint newItem); +}; + +[Exposed=Window] +interface SVGPolylineElement : SVGGeometryElement { +}; + +SVGPolylineElement includes SVGAnimatedPoints; + +[Exposed=Window] +interface SVGPolygonElement : SVGGeometryElement { +}; + +SVGPolygonElement includes SVGAnimatedPoints; + +[Exposed=Window] +interface SVGTextContentElement : SVGGraphicsElement { + + // lengthAdjust Types + const unsigned short LENGTHADJUST_UNKNOWN = 0; + const unsigned short LENGTHADJUST_SPACING = 1; + const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2; + + [SameObject] readonly attribute SVGAnimatedLength textLength; + [SameObject] readonly attribute SVGAnimatedEnumeration lengthAdjust; + + long getNumberOfChars(); + float getComputedTextLength(); + float getSubStringLength(unsigned long charnum, unsigned long nchars); + DOMPoint getStartPositionOfChar(unsigned long charnum); + DOMPoint getEndPositionOfChar(unsigned long charnum); + DOMRect getExtentOfChar(unsigned long charnum); + float getRotationOfChar(unsigned long charnum); + long getCharNumAtPosition(optional DOMPointInit point = {}); + undefined selectSubString(unsigned long charnum, unsigned long nchars); +}; + +[Exposed=Window] +interface SVGTextPositioningElement : SVGTextContentElement { + [SameObject] readonly attribute SVGAnimatedLengthList x; + [SameObject] readonly attribute SVGAnimatedLengthList y; + [SameObject] readonly attribute SVGAnimatedLengthList dx; + [SameObject] readonly attribute SVGAnimatedLengthList dy; + [SameObject] readonly attribute SVGAnimatedNumberList rotate; +}; + +[Exposed=Window] +interface SVGTextElement : SVGTextPositioningElement { +}; + +[Exposed=Window] +interface SVGTSpanElement : SVGTextPositioningElement { +}; + +[Exposed=Window] +interface SVGTextPathElement : SVGTextContentElement { + + // textPath Method Types + const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1; + const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2; + + // textPath Spacing Types + const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0; + const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1; + const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2; + + [SameObject] readonly attribute SVGAnimatedLength startOffset; + [SameObject] readonly attribute SVGAnimatedEnumeration method; + [SameObject] readonly attribute SVGAnimatedEnumeration spacing; +}; + +SVGTextPathElement includes SVGURIReference; + +[Exposed=Window] +interface SVGImageElement : SVGGraphicsElement { + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; + [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; + attribute DOMString? crossOrigin; +}; + +SVGImageElement includes SVGURIReference; + +[Exposed=Window] +interface SVGForeignObjectElement : SVGGraphicsElement { + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; +}; + +[Exposed=Window] +interface SVGMarkerElement : SVGElement { + + // Marker Unit Types + const unsigned short SVG_MARKERUNITS_UNKNOWN = 0; + const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1; + const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2; + + // Marker Orientation Types + const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0; + const unsigned short SVG_MARKER_ORIENT_AUTO = 1; + const unsigned short SVG_MARKER_ORIENT_ANGLE = 2; + + [SameObject] readonly attribute SVGAnimatedLength refX; + [SameObject] readonly attribute SVGAnimatedLength refY; + [SameObject] readonly attribute SVGAnimatedEnumeration markerUnits; + [SameObject] readonly attribute SVGAnimatedLength markerWidth; + [SameObject] readonly attribute SVGAnimatedLength markerHeight; + [SameObject] readonly attribute SVGAnimatedEnumeration orientType; + [SameObject] readonly attribute SVGAnimatedAngle orientAngle; + attribute DOMString orient; + + undefined setOrientToAuto(); + undefined setOrientToAngle(SVGAngle angle); +}; + +SVGMarkerElement includes SVGFitToViewBox; + +[Exposed=Window] +interface SVGGradientElement : SVGElement { + + // Spread Method Types + const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0; + const unsigned short SVG_SPREADMETHOD_PAD = 1; + const unsigned short SVG_SPREADMETHOD_REFLECT = 2; + const unsigned short SVG_SPREADMETHOD_REPEAT = 3; + + [SameObject] readonly attribute SVGAnimatedEnumeration gradientUnits; + [SameObject] readonly attribute SVGAnimatedTransformList gradientTransform; + [SameObject] readonly attribute SVGAnimatedEnumeration spreadMethod; +}; + +SVGGradientElement includes SVGURIReference; + +[Exposed=Window] +interface SVGLinearGradientElement : SVGGradientElement { + [SameObject] readonly attribute SVGAnimatedLength x1; + [SameObject] readonly attribute SVGAnimatedLength y1; + [SameObject] readonly attribute SVGAnimatedLength x2; + [SameObject] readonly attribute SVGAnimatedLength y2; +}; + +[Exposed=Window] +interface SVGRadialGradientElement : SVGGradientElement { + [SameObject] readonly attribute SVGAnimatedLength cx; + [SameObject] readonly attribute SVGAnimatedLength cy; + [SameObject] readonly attribute SVGAnimatedLength r; + [SameObject] readonly attribute SVGAnimatedLength fx; + [SameObject] readonly attribute SVGAnimatedLength fy; + [SameObject] readonly attribute SVGAnimatedLength fr; +}; + +[Exposed=Window] +interface SVGStopElement : SVGElement { + [SameObject] readonly attribute SVGAnimatedNumber offset; +}; + +[Exposed=Window] +interface SVGPatternElement : SVGElement { + [SameObject] readonly attribute SVGAnimatedEnumeration patternUnits; + [SameObject] readonly attribute SVGAnimatedEnumeration patternContentUnits; + [SameObject] readonly attribute SVGAnimatedTransformList patternTransform; + [SameObject] readonly attribute SVGAnimatedLength x; + [SameObject] readonly attribute SVGAnimatedLength y; + [SameObject] readonly attribute SVGAnimatedLength width; + [SameObject] readonly attribute SVGAnimatedLength height; +}; + +SVGPatternElement includes SVGFitToViewBox; +SVGPatternElement includes SVGURIReference; + +[Exposed=Window] +interface SVGScriptElement : SVGElement { + attribute DOMString type; + attribute DOMString? crossOrigin; +}; + +SVGScriptElement includes SVGURIReference; + +[Exposed=Window] +interface SVGAElement : SVGGraphicsElement { + [SameObject] readonly attribute SVGAnimatedString target; + attribute DOMString download; + attribute USVString ping; + attribute DOMString rel; + [SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + attribute DOMString hreflang; + attribute DOMString type; + + attribute DOMString text; + + attribute DOMString referrerPolicy; +}; + +SVGAElement includes SVGURIReference; + +// Inline HTMLHyperlinkElementUtils except href, which conflicts. +partial interface SVGAElement { + readonly attribute USVString origin; + [CEReactions] attribute USVString protocol; + [CEReactions] attribute USVString username; + [CEReactions] attribute USVString password; + [CEReactions] attribute USVString host; + [CEReactions] attribute USVString hostname; + [CEReactions] attribute USVString port; + [CEReactions] attribute USVString pathname; + [CEReactions] attribute USVString search; + [CEReactions] attribute USVString hash; +}; + +[Exposed=Window] +interface SVGViewElement : SVGElement {}; + +SVGViewElement includes SVGFitToViewBox; diff --git a/testing/web-platform/tests/interfaces/WEBGL_blend_equation_advanced_coherent.idl b/testing/web-platform/tests/interfaces/WEBGL_blend_equation_advanced_coherent.idl new file mode 100644 index 0000000000..2208329ded --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_blend_equation_advanced_coherent.idl @@ -0,0 +1,23 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_blend_equation_advanced_coherent Extension Draft Specification (https://registry.khronos.org/webgl/extensions/WEBGL_blend_equation_advanced_coherent/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_blend_equation_advanced_coherent { + const GLenum MULTIPLY = 0x9294; + const GLenum SCREEN = 0x9295; + const GLenum OVERLAY = 0x9296; + const GLenum DARKEN = 0x9297; + const GLenum LIGHTEN = 0x9298; + const GLenum COLORDODGE = 0x9299; + const GLenum COLORBURN = 0x929A; + const GLenum HARDLIGHT = 0x929B; + const GLenum SOFTLIGHT = 0x929C; + const GLenum DIFFERENCE = 0x929E; + const GLenum EXCLUSION = 0x92A0; + const GLenum HSL_HUE = 0x92AD; + const GLenum HSL_SATURATION = 0x92AE; + const GLenum HSL_COLOR = 0x92AF; + const GLenum HSL_LUMINOSITY = 0x92B0; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_color_buffer_float.idl b/testing/web-platform/tests/interfaces/WEBGL_color_buffer_float.idl new file mode 100644 index 0000000000..b73f63153d --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_color_buffer_float.idl @@ -0,0 +1,11 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_color_buffer_float Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_color_buffer_float/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_color_buffer_float { + const GLenum RGBA32F_EXT = 0x8814; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211; + const GLenum UNSIGNED_NORMALIZED_EXT = 0x8C17; +}; // interface WEBGL_color_buffer_float diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_astc.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_astc.idl new file mode 100644 index 0000000000..9e4632ff7e --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_astc.idl @@ -0,0 +1,41 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_astc Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_astc { + /* Compressed Texture Format */ + const GLenum COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; + const GLenum COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; + const GLenum COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; + const GLenum COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; + const GLenum COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; + const GLenum COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; + const GLenum COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; + const GLenum COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; + const GLenum COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; + const GLenum COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; + const GLenum COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; + const GLenum COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; + const GLenum COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; + const GLenum COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; + + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; + const GLenum COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; + + // Profile query support. + sequence<DOMString> getSupportedProfiles(); +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc.idl new file mode 100644 index 0000000000..5174a08546 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_etc Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_etc { + /* Compressed Texture Formats */ + const GLenum COMPRESSED_R11_EAC = 0x9270; + const GLenum COMPRESSED_SIGNED_R11_EAC = 0x9271; + const GLenum COMPRESSED_RG11_EAC = 0x9272; + const GLenum COMPRESSED_SIGNED_RG11_EAC = 0x9273; + const GLenum COMPRESSED_RGB8_ETC2 = 0x9274; + const GLenum COMPRESSED_SRGB8_ETC2 = 0x9275; + const GLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + const GLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + const GLenum COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + const GLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc1.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc1.idl new file mode 100644 index 0000000000..773697e450 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc1.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_etc1 Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc1/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_etc1 { + /* Compressed Texture Format */ + const GLenum COMPRESSED_RGB_ETC1_WEBGL = 0x8D64; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_pvrtc.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_pvrtc.idl new file mode 100644 index 0000000000..5aa004af80 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_pvrtc.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_pvrtc Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_pvrtc { + /* Compressed Texture Formats */ + const GLenum COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; + const GLenum COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; + const GLenum COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; + const GLenum COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc.idl new file mode 100644 index 0000000000..6e7c4bd89e --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_s3tc Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_s3tc { + /* Compressed Texture Formats */ + const GLenum COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + const GLenum COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + const GLenum COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + const GLenum COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc_srgb.idl b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc_srgb.idl new file mode 100644 index 0000000000..809265e68d --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc_srgb.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_compressed_texture_s3tc_srgb Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_compressed_texture_s3tc_srgb { + /* Compressed Texture Formats */ + const GLenum COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C; + const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D; + const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E; + const GLenum COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_debug_renderer_info.idl b/testing/web-platform/tests/interfaces/WEBGL_debug_renderer_info.idl new file mode 100644 index 0000000000..769406151d --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_debug_renderer_info.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_debug_renderer_info Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_debug_renderer_info/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_debug_renderer_info { + + const GLenum UNMASKED_VENDOR_WEBGL = 0x9245; + const GLenum UNMASKED_RENDERER_WEBGL = 0x9246; + +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_debug_shaders.idl b/testing/web-platform/tests/interfaces/WEBGL_debug_shaders.idl new file mode 100644 index 0000000000..ecb48d0b1d --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_debug_shaders.idl @@ -0,0 +1,11 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_debug_shaders Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_debug_shaders/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_debug_shaders { + + DOMString getTranslatedShaderSource(WebGLShader shader); + +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_depth_texture.idl b/testing/web-platform/tests/interfaces/WEBGL_depth_texture.idl new file mode 100644 index 0000000000..a9ec791ad0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_depth_texture.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_depth_texture Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_depth_texture/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_depth_texture { + const GLenum UNSIGNED_INT_24_8_WEBGL = 0x84FA; +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_draw_buffers.idl b/testing/web-platform/tests/interfaces/WEBGL_draw_buffers.idl new file mode 100644 index 0000000000..3310388f6e --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_draw_buffers.idl @@ -0,0 +1,46 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_draw_buffers Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_draw_buffers/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_draw_buffers { + const GLenum COLOR_ATTACHMENT0_WEBGL = 0x8CE0; + const GLenum COLOR_ATTACHMENT1_WEBGL = 0x8CE1; + const GLenum COLOR_ATTACHMENT2_WEBGL = 0x8CE2; + const GLenum COLOR_ATTACHMENT3_WEBGL = 0x8CE3; + const GLenum COLOR_ATTACHMENT4_WEBGL = 0x8CE4; + const GLenum COLOR_ATTACHMENT5_WEBGL = 0x8CE5; + const GLenum COLOR_ATTACHMENT6_WEBGL = 0x8CE6; + const GLenum COLOR_ATTACHMENT7_WEBGL = 0x8CE7; + const GLenum COLOR_ATTACHMENT8_WEBGL = 0x8CE8; + const GLenum COLOR_ATTACHMENT9_WEBGL = 0x8CE9; + const GLenum COLOR_ATTACHMENT10_WEBGL = 0x8CEA; + const GLenum COLOR_ATTACHMENT11_WEBGL = 0x8CEB; + const GLenum COLOR_ATTACHMENT12_WEBGL = 0x8CEC; + const GLenum COLOR_ATTACHMENT13_WEBGL = 0x8CED; + const GLenum COLOR_ATTACHMENT14_WEBGL = 0x8CEE; + const GLenum COLOR_ATTACHMENT15_WEBGL = 0x8CEF; + + const GLenum DRAW_BUFFER0_WEBGL = 0x8825; + const GLenum DRAW_BUFFER1_WEBGL = 0x8826; + const GLenum DRAW_BUFFER2_WEBGL = 0x8827; + const GLenum DRAW_BUFFER3_WEBGL = 0x8828; + const GLenum DRAW_BUFFER4_WEBGL = 0x8829; + const GLenum DRAW_BUFFER5_WEBGL = 0x882A; + const GLenum DRAW_BUFFER6_WEBGL = 0x882B; + const GLenum DRAW_BUFFER7_WEBGL = 0x882C; + const GLenum DRAW_BUFFER8_WEBGL = 0x882D; + const GLenum DRAW_BUFFER9_WEBGL = 0x882E; + const GLenum DRAW_BUFFER10_WEBGL = 0x882F; + const GLenum DRAW_BUFFER11_WEBGL = 0x8830; + const GLenum DRAW_BUFFER12_WEBGL = 0x8831; + const GLenum DRAW_BUFFER13_WEBGL = 0x8832; + const GLenum DRAW_BUFFER14_WEBGL = 0x8833; + const GLenum DRAW_BUFFER15_WEBGL = 0x8834; + + const GLenum MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF; + const GLenum MAX_DRAW_BUFFERS_WEBGL = 0x8824; + + undefined drawBuffersWEBGL(sequence<GLenum> buffers); +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_draw_instanced_base_vertex_base_instance.idl b/testing/web-platform/tests/interfaces/WEBGL_draw_instanced_base_vertex_base_instance.idl new file mode 100644 index 0000000000..38f7a42a11 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_draw_instanced_base_vertex_base_instance.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_draw_instanced_base_vertex_base_instance Extension Draft Specification (https://registry.khronos.org/webgl/extensions/WEBGL_draw_instanced_base_vertex_base_instance/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_draw_instanced_base_vertex_base_instance { + undefined drawArraysInstancedBaseInstanceWEBGL( + GLenum mode, GLint first, GLsizei count, + GLsizei instanceCount, GLuint baseInstance); + undefined drawElementsInstancedBaseVertexBaseInstanceWEBGL( + GLenum mode, GLsizei count, GLenum type, GLintptr offset, + GLsizei instanceCount, GLint baseVertex, GLuint baseInstance); +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_lose_context.idl b/testing/web-platform/tests/interfaces/WEBGL_lose_context.idl new file mode 100644 index 0000000000..ee68fb5c09 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_lose_context.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_lose_context Khronos Ratified Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_lose_context/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_lose_context { + undefined loseContext(); + undefined restoreContext(); +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_multi_draw.idl b/testing/web-platform/tests/interfaces/WEBGL_multi_draw.idl new file mode 100644 index 0000000000..ee8c044b52 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_multi_draw.idl @@ -0,0 +1,32 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_multi_draw Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_multi_draw { + undefined multiDrawArraysWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + GLsizei drawcount); + undefined multiDrawElementsWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + GLenum type, + ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset, + GLsizei drawcount); + undefined multiDrawArraysInstancedWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset, + GLsizei drawcount); + undefined multiDrawElementsInstancedWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + GLenum type, + ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset, + GLsizei drawcount); +}; diff --git a/testing/web-platform/tests/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl b/testing/web-platform/tests/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl new file mode 100644 index 0000000000..2258fa9a10 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl @@ -0,0 +1,26 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL WEBGL_multi_draw_instanced_base_vertex_base_instance Extension Draft Specification (https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw_instanced_base_vertex_base_instance/) + +[Exposed=(Window,Worker), LegacyNoInterfaceObject] +interface WEBGL_multi_draw_instanced_base_vertex_base_instance { + undefined multiDrawArraysInstancedBaseInstanceWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLint>) firstsList, GLuint firstsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset, + ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset, + GLsizei drawcount + ); + undefined multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL( + GLenum mode, + ([AllowShared] Int32Array or sequence<GLsizei>) countsList, GLuint countsOffset, + GLenum type, + ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, GLuint offsetsOffset, + ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, GLuint instanceCountsOffset, + ([AllowShared] Int32Array or sequence<GLint>) baseVerticesList, GLuint baseVerticesOffset, + ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, GLuint baseInstancesOffset, + GLsizei drawcount + ); +}; diff --git a/testing/web-platform/tests/interfaces/WebCryptoAPI.idl b/testing/web-platform/tests/interfaces/WebCryptoAPI.idl new file mode 100644 index 0000000000..0e68ea82f5 --- /dev/null +++ b/testing/web-platform/tests/interfaces/WebCryptoAPI.idl @@ -0,0 +1,237 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Cryptography API (https://w3c.github.io/webcrypto/) + +partial interface mixin WindowOrWorkerGlobalScope { + [SameObject] readonly attribute Crypto crypto; +}; + +[Exposed=(Window,Worker)] +interface Crypto { + [SecureContext] readonly attribute SubtleCrypto subtle; + ArrayBufferView getRandomValues(ArrayBufferView array); + [SecureContext] DOMString randomUUID(); +}; + +typedef (object or DOMString) AlgorithmIdentifier; + +typedef AlgorithmIdentifier HashAlgorithmIdentifier; + +dictionary Algorithm { + required DOMString name; +}; + +dictionary KeyAlgorithm { + required DOMString name; +}; + +enum KeyType { "public", "private", "secret" }; + +enum KeyUsage { "encrypt", "decrypt", "sign", "verify", "deriveKey", "deriveBits", "wrapKey", "unwrapKey" }; + +[SecureContext,Exposed=(Window,Worker),Serializable] +interface CryptoKey { + readonly attribute KeyType type; + readonly attribute boolean extractable; + readonly attribute object algorithm; + readonly attribute object usages; +}; + +enum KeyFormat { "raw", "spki", "pkcs8", "jwk" }; + +[SecureContext,Exposed=(Window,Worker)] +interface SubtleCrypto { + Promise<any> encrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + Promise<any> decrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + Promise<any> sign(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + Promise<any> verify(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource signature, + BufferSource data); + Promise<any> digest(AlgorithmIdentifier algorithm, + BufferSource data); + + Promise<any> generateKey(AlgorithmIdentifier algorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); + Promise<any> deriveKey(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + AlgorithmIdentifier derivedKeyType, + boolean extractable, + sequence<KeyUsage> keyUsages ); + Promise<ArrayBuffer> deriveBits(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + unsigned long length); + + Promise<CryptoKey> importKey(KeyFormat format, + (BufferSource or JsonWebKey) keyData, + AlgorithmIdentifier algorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); + Promise<any> exportKey(KeyFormat format, CryptoKey key); + + Promise<any> wrapKey(KeyFormat format, + CryptoKey key, + CryptoKey wrappingKey, + AlgorithmIdentifier wrapAlgorithm); + Promise<CryptoKey> unwrapKey(KeyFormat format, + BufferSource wrappedKey, + CryptoKey unwrappingKey, + AlgorithmIdentifier unwrapAlgorithm, + AlgorithmIdentifier unwrappedKeyAlgorithm, + boolean extractable, + sequence<KeyUsage> keyUsages ); +}; + +dictionary RsaOtherPrimesInfo { + // The following fields are defined in Section 6.3.2.7 of JSON Web Algorithms + DOMString r; + DOMString d; + DOMString t; +}; + +dictionary JsonWebKey { + // The following fields are defined in Section 3.1 of JSON Web Key + DOMString kty; + DOMString use; + sequence<DOMString> key_ops; + DOMString alg; + + // The following fields are defined in JSON Web Key Parameters Registration + boolean ext; + + // The following fields are defined in Section 6 of JSON Web Algorithms + DOMString crv; + DOMString x; + DOMString y; + DOMString d; + DOMString n; + DOMString e; + DOMString p; + DOMString q; + DOMString dp; + DOMString dq; + DOMString qi; + sequence<RsaOtherPrimesInfo> oth; + DOMString k; +}; + +typedef Uint8Array BigInteger; + +dictionary CryptoKeyPair { + CryptoKey publicKey; + CryptoKey privateKey; +}; + +dictionary RsaKeyGenParams : Algorithm { + required [EnforceRange] unsigned long modulusLength; + required BigInteger publicExponent; +}; + +dictionary RsaHashedKeyGenParams : RsaKeyGenParams { + required HashAlgorithmIdentifier hash; +}; + +dictionary RsaKeyAlgorithm : KeyAlgorithm { + required unsigned long modulusLength; + required BigInteger publicExponent; +}; + +dictionary RsaHashedKeyAlgorithm : RsaKeyAlgorithm { + required KeyAlgorithm hash; +}; + +dictionary RsaHashedImportParams : Algorithm { + required HashAlgorithmIdentifier hash; +}; + +dictionary RsaPssParams : Algorithm { + required [EnforceRange] unsigned long saltLength; +}; + +dictionary RsaOaepParams : Algorithm { + BufferSource label; +}; + +dictionary EcdsaParams : Algorithm { + required HashAlgorithmIdentifier hash; +}; + +typedef DOMString NamedCurve; + +dictionary EcKeyGenParams : Algorithm { + required NamedCurve namedCurve; +}; + +dictionary EcKeyAlgorithm : KeyAlgorithm { + required NamedCurve namedCurve; +}; + +dictionary EcKeyImportParams : Algorithm { + required NamedCurve namedCurve; +}; + +dictionary EcdhKeyDeriveParams : Algorithm { + required CryptoKey public; +}; + +dictionary AesCtrParams : Algorithm { + required BufferSource counter; + required [EnforceRange] octet length; +}; + +dictionary AesKeyAlgorithm : KeyAlgorithm { + required unsigned short length; +}; + +dictionary AesKeyGenParams : Algorithm { + required [EnforceRange] unsigned short length; +}; + +dictionary AesDerivedKeyParams : Algorithm { + required [EnforceRange] unsigned short length; +}; + +dictionary AesCbcParams : Algorithm { + required BufferSource iv; +}; + +dictionary AesGcmParams : Algorithm { + required BufferSource iv; + BufferSource additionalData; + [EnforceRange] octet tagLength; +}; + +dictionary HmacImportParams : Algorithm { + required HashAlgorithmIdentifier hash; + [EnforceRange] unsigned long length; +}; + +dictionary HmacKeyAlgorithm : KeyAlgorithm { + required KeyAlgorithm hash; + required unsigned long length; +}; + +dictionary HmacKeyGenParams : Algorithm { + required HashAlgorithmIdentifier hash; + [EnforceRange] unsigned long length; +}; + +dictionary HkdfParams : Algorithm { + required HashAlgorithmIdentifier hash; + required BufferSource salt; + required BufferSource info; +}; + +dictionary Pbkdf2Params : Algorithm { + required BufferSource salt; + required [EnforceRange] unsigned long iterations; + required HashAlgorithmIdentifier hash; +}; diff --git a/testing/web-platform/tests/interfaces/accelerometer.idl b/testing/web-platform/tests/interfaces/accelerometer.idl new file mode 100644 index 0000000000..fc8fc07ff7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/accelerometer.idl @@ -0,0 +1,40 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Accelerometer (https://w3c.github.io/accelerometer/) + +[SecureContext, Exposed=Window] +interface Accelerometer : Sensor { + constructor(optional AccelerometerSensorOptions options = {}); + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; +}; + +enum AccelerometerLocalCoordinateSystem { "device", "screen" }; + +dictionary AccelerometerSensorOptions : SensorOptions { + AccelerometerLocalCoordinateSystem referenceFrame = "device"; +}; + +[SecureContext, Exposed=Window] +interface LinearAccelerationSensor : Accelerometer { + constructor(optional AccelerometerSensorOptions options = {}); +}; + +[SecureContext, Exposed=Window] +interface GravitySensor : Accelerometer { + constructor(optional AccelerometerSensorOptions options = {}); +}; + +dictionary AccelerometerReadingValues { + required double? x; + required double? y; + required double? z; +}; + +dictionary LinearAccelerationReadingValues : AccelerometerReadingValues { +}; + +dictionary GravityReadingValues : AccelerometerReadingValues { +}; diff --git a/testing/web-platform/tests/interfaces/ambient-light.idl b/testing/web-platform/tests/interfaces/ambient-light.idl new file mode 100644 index 0000000000..6d9c8e03ea --- /dev/null +++ b/testing/web-platform/tests/interfaces/ambient-light.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Ambient Light Sensor (https://w3c.github.io/ambient-light/) + +[SecureContext, Exposed=Window] +interface AmbientLightSensor : Sensor { + constructor(optional SensorOptions sensorOptions = {}); + readonly attribute double? illuminance; +}; + +dictionary AmbientLightReadingValues { + required double? illuminance; +}; diff --git a/testing/web-platform/tests/interfaces/anchors.idl b/testing/web-platform/tests/interfaces/anchors.idl new file mode 100644 index 0000000000..5aa9395f09 --- /dev/null +++ b/testing/web-platform/tests/interfaces/anchors.idl @@ -0,0 +1,35 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Anchors Module (https://immersive-web.github.io/anchors/) + +[SecureContext, Exposed=Window] +interface XRAnchor { + readonly attribute XRSpace anchorSpace; + + Promise<DOMString> requestPersistentHandle(); + + undefined delete(); +}; + +partial interface XRFrame { + Promise<XRAnchor> createAnchor(XRRigidTransform pose, XRSpace space); +}; + +partial interface XRSession { + Promise<XRAnchor> restorePersistentAnchor(DOMString uuid); + Promise<undefined> deletePersistentAnchor(DOMString uuid); +}; + +partial interface XRHitTestResult { + Promise<XRAnchor> createAnchor(); +}; + +[Exposed=Window] +interface XRAnchorSet { + readonly setlike<XRAnchor>; +}; + +partial interface XRFrame { + [SameObject] readonly attribute XRAnchorSet trackedAnchors; +}; diff --git a/testing/web-platform/tests/interfaces/attribution-reporting-api.idl b/testing/web-platform/tests/interfaces/attribution-reporting-api.idl new file mode 100644 index 0000000000..76640f54c8 --- /dev/null +++ b/testing/web-platform/tests/interfaces/attribution-reporting-api.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Attribution Reporting (https://wicg.github.io/attribution-reporting-api/) + +interface mixin HTMLAttributionSrcElementUtils { + [CEReactions] attribute USVString attributionSrc; +}; + +HTMLAnchorElement includes HTMLAttributionSrcElementUtils; +HTMLImageElement includes HTMLAttributionSrcElementUtils; +HTMLScriptElement includes HTMLAttributionSrcElementUtils; diff --git a/testing/web-platform/tests/interfaces/audio-output.idl b/testing/web-platform/tests/interfaces/audio-output.idl new file mode 100644 index 0000000000..80ceb22530 --- /dev/null +++ b/testing/web-platform/tests/interfaces/audio-output.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Audio Output Devices API (https://w3c.github.io/mediacapture-output/) + +partial interface HTMLMediaElement { + [SecureContext] readonly attribute DOMString sinkId; + [SecureContext] Promise<undefined> setSinkId (DOMString sinkId); +}; + +partial interface MediaDevices { + Promise<MediaDeviceInfo> selectAudioOutput(optional AudioOutputOptions options = {}); +}; + +dictionary AudioOutputOptions { + DOMString deviceId = ""; +}; diff --git a/testing/web-platform/tests/interfaces/autoplay-detection.idl b/testing/web-platform/tests/interfaces/autoplay-detection.idl new file mode 100644 index 0000000000..cd0884fe52 --- /dev/null +++ b/testing/web-platform/tests/interfaces/autoplay-detection.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Autoplay Policy Detection (https://w3c.github.io/autoplay/) + +enum AutoplayPolicy { + "allowed", + "allowed-muted", + "disallowed" +}; + +enum AutoplayPolicyMediaType { "mediaelement", "audiocontext" }; + +[Exposed=Window] +partial interface Navigator { + AutoplayPolicy getAutoplayPolicy(AutoplayPolicyMediaType type); + AutoplayPolicy getAutoplayPolicy(HTMLMediaElement element); + AutoplayPolicy getAutoplayPolicy(AudioContext context); +}; diff --git a/testing/web-platform/tests/interfaces/background-fetch.idl b/testing/web-platform/tests/interfaces/background-fetch.idl new file mode 100644 index 0000000000..993bd8bc2f --- /dev/null +++ b/testing/web-platform/tests/interfaces/background-fetch.idl @@ -0,0 +1,89 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Background Fetch (https://wicg.github.io/background-fetch/) + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onbackgroundfetchsuccess; + attribute EventHandler onbackgroundfetchfail; + attribute EventHandler onbackgroundfetchabort; + attribute EventHandler onbackgroundfetchclick; +}; + +partial interface ServiceWorkerRegistration { + readonly attribute BackgroundFetchManager backgroundFetch; +}; + +[Exposed=(Window,Worker)] +interface BackgroundFetchManager { + Promise<BackgroundFetchRegistration> fetch(DOMString id, (RequestInfo or sequence<RequestInfo>) requests, optional BackgroundFetchOptions options = {}); + Promise<BackgroundFetchRegistration?> get(DOMString id); + Promise<sequence<DOMString>> getIds(); +}; + +dictionary BackgroundFetchUIOptions { + sequence<ImageResource> icons; + DOMString title; +}; + +dictionary BackgroundFetchOptions : BackgroundFetchUIOptions { + unsigned long long downloadTotal = 0; +}; + +[Exposed=(Window,Worker)] +interface BackgroundFetchRegistration : EventTarget { + readonly attribute DOMString id; + readonly attribute unsigned long long uploadTotal; + readonly attribute unsigned long long uploaded; + readonly attribute unsigned long long downloadTotal; + readonly attribute unsigned long long downloaded; + readonly attribute BackgroundFetchResult result; + readonly attribute BackgroundFetchFailureReason failureReason; + readonly attribute boolean recordsAvailable; + + attribute EventHandler onprogress; + + Promise<boolean> abort(); + Promise<BackgroundFetchRecord> match(RequestInfo request, optional CacheQueryOptions options = {}); + Promise<sequence<BackgroundFetchRecord>> matchAll(optional RequestInfo request, optional CacheQueryOptions options = {}); +}; + +enum BackgroundFetchResult { "", "success", "failure" }; + +enum BackgroundFetchFailureReason { + // The background fetch has not completed yet, or was successful. + "", + // The operation was aborted by the user, or abort() was called. + "aborted", + // A response had a not-ok-status. + "bad-status", + // A fetch failed for other reasons, e.g. CORS, MIX, an invalid partial response, + // or a general network failure for a fetch that cannot be retried. + "fetch-error", + // Storage quota was reached during the operation. + "quota-exceeded", + // The provided downloadTotal was exceeded. + "download-total-exceeded" +}; + +[Exposed=(Window,Worker)] +interface BackgroundFetchRecord { + readonly attribute Request request; + readonly attribute Promise<Response> responseReady; +}; + +[Exposed=ServiceWorker] +interface BackgroundFetchEvent : ExtendableEvent { + constructor(DOMString type, BackgroundFetchEventInit init); + readonly attribute BackgroundFetchRegistration registration; +}; + +dictionary BackgroundFetchEventInit : ExtendableEventInit { + required BackgroundFetchRegistration registration; +}; + +[Exposed=ServiceWorker] +interface BackgroundFetchUpdateUIEvent : BackgroundFetchEvent { + constructor(DOMString type, BackgroundFetchEventInit init); + Promise<undefined> updateUI(optional BackgroundFetchUIOptions options = {}); +}; diff --git a/testing/web-platform/tests/interfaces/background-sync.idl b/testing/web-platform/tests/interfaces/background-sync.idl new file mode 100644 index 0000000000..79a13a617a --- /dev/null +++ b/testing/web-platform/tests/interfaces/background-sync.idl @@ -0,0 +1,30 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Background Synchronization (https://wicg.github.io/background-sync/spec/) + +partial interface ServiceWorkerRegistration { + readonly attribute SyncManager sync; +}; + +[Exposed=(Window,Worker)] +interface SyncManager { + Promise<undefined> register(DOMString tag); + Promise<sequence<DOMString>> getTags(); +}; + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onsync; +}; + +[Exposed=ServiceWorker] +interface SyncEvent : ExtendableEvent { + constructor(DOMString type, SyncEventInit init); + readonly attribute DOMString tag; + readonly attribute boolean lastChance; +}; + +dictionary SyncEventInit : ExtendableEventInit { + required DOMString tag; + boolean lastChance = false; +}; diff --git a/testing/web-platform/tests/interfaces/badging.idl b/testing/web-platform/tests/interfaces/badging.idl new file mode 100644 index 0000000000..f34dfa7e04 --- /dev/null +++ b/testing/web-platform/tests/interfaces/badging.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Badging API (https://w3c.github.io/badging/) + +[SecureContext] +partial interface Navigator { + Promise<undefined> setClientBadge(optional [EnforceRange] unsigned long long contents); + Promise<undefined> clearClientBadge(); +}; + +[SecureContext] +interface mixin NavigatorBadge { + Promise<undefined> setAppBadge(optional [EnforceRange] unsigned long long contents); + Promise<undefined> clearAppBadge(); +}; + +Navigator includes NavigatorBadge; +WorkerNavigator includes NavigatorBadge; diff --git a/testing/web-platform/tests/interfaces/battery-status.idl b/testing/web-platform/tests/interfaces/battery-status.idl new file mode 100644 index 0000000000..2d042db28a --- /dev/null +++ b/testing/web-platform/tests/interfaces/battery-status.idl @@ -0,0 +1,21 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Battery Status API (https://w3c.github.io/battery/) + +[SecureContext] +partial interface Navigator { + Promise<BatteryManager> getBattery(); +}; + +[SecureContext, Exposed=Window] +interface BatteryManager : EventTarget { + readonly attribute boolean charging; + readonly attribute unrestricted double chargingTime; + readonly attribute unrestricted double dischargingTime; + readonly attribute double level; + attribute EventHandler onchargingchange; + attribute EventHandler onchargingtimechange; + attribute EventHandler ondischargingtimechange; + attribute EventHandler onlevelchange; +}; diff --git a/testing/web-platform/tests/interfaces/beacon.idl b/testing/web-platform/tests/interfaces/beacon.idl new file mode 100644 index 0000000000..103a999fd4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/beacon.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Beacon (https://w3c.github.io/beacon/) + +partial interface Navigator { + boolean sendBeacon(USVString url, optional BodyInit? data = null); +}; diff --git a/testing/web-platform/tests/interfaces/capture-handle-identity.idl b/testing/web-platform/tests/interfaces/capture-handle-identity.idl new file mode 100644 index 0000000000..37b2c61dac --- /dev/null +++ b/testing/web-platform/tests/interfaces/capture-handle-identity.idl @@ -0,0 +1,27 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Capture Handle - Bootstrapping Collaboration when Screensharing (https://w3c.github.io/mediacapture-handle/identity/) + +dictionary CaptureHandleConfig { + boolean exposeOrigin = false; + DOMString handle = ""; + sequence<DOMString> permittedOrigins = []; +}; + +partial interface MediaDevices { + undefined setCaptureHandleConfig(optional CaptureHandleConfig config = {}); +}; + +dictionary CaptureHandle { + DOMString origin; + DOMString handle; +}; + +partial interface MediaStreamTrack { + CaptureHandle? getCaptureHandle(); +}; + +partial interface MediaStreamTrack { + attribute EventHandler oncapturehandlechange; +}; diff --git a/testing/web-platform/tests/interfaces/clipboard-apis.idl b/testing/web-platform/tests/interfaces/clipboard-apis.idl new file mode 100644 index 0000000000..3f2c9ba6f2 --- /dev/null +++ b/testing/web-platform/tests/interfaces/clipboard-apis.idl @@ -0,0 +1,51 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Clipboard API and events (https://w3c.github.io/clipboard-apis/) + +dictionary ClipboardEventInit : EventInit { + DataTransfer? clipboardData = null; +}; + +[Exposed=Window] +interface ClipboardEvent : Event { + constructor(DOMString type, optional ClipboardEventInit eventInitDict = {}); + readonly attribute DataTransfer? clipboardData; +}; + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute Clipboard clipboard; +}; + +typedef Promise<(DOMString or Blob)> ClipboardItemData; + +[SecureContext, Exposed=Window] +interface ClipboardItem { + constructor(record<DOMString, ClipboardItemData> items, + optional ClipboardItemOptions options = {}); + + readonly attribute PresentationStyle presentationStyle; + readonly attribute FrozenArray<DOMString> types; + + Promise<Blob> getType(DOMString type); +}; + +enum PresentationStyle { "unspecified", "inline", "attachment" }; + +dictionary ClipboardItemOptions { + PresentationStyle presentationStyle = "unspecified"; +}; + +typedef sequence<ClipboardItem> ClipboardItems; + +[SecureContext, Exposed=Window] +interface Clipboard : EventTarget { + Promise<ClipboardItems> read(); + Promise<DOMString> readText(); + Promise<undefined> write(ClipboardItems data); + Promise<undefined> writeText(DOMString data); +}; + +dictionary ClipboardPermissionDescriptor : PermissionDescriptor { + boolean allowWithoutGesture = false; +}; diff --git a/testing/web-platform/tests/interfaces/close-watcher.idl b/testing/web-platform/tests/interfaces/close-watcher.idl new file mode 100644 index 0000000000..de7940c07e --- /dev/null +++ b/testing/web-platform/tests/interfaces/close-watcher.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Close Watcher API (https://wicg.github.io/close-watcher/) + +[Exposed=Window] +interface CloseWatcher : EventTarget { + constructor(optional CloseWatcherOptions options = {}); + + undefined destroy(); + undefined close(); + + attribute EventHandler oncancel; + attribute EventHandler onclose; +}; + +dictionary CloseWatcherOptions { + AbortSignal signal; +}; diff --git a/testing/web-platform/tests/interfaces/compat.idl b/testing/web-platform/tests/interfaces/compat.idl new file mode 100644 index 0000000000..8106c2d4e0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/compat.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Compatibility Standard (https://compat.spec.whatwg.org/) + +partial interface Window { + readonly attribute short orientation; + attribute EventHandler onorientationchange; +}; + +partial interface HTMLBodyElement { + attribute EventHandler onorientationchange; +}; diff --git a/testing/web-platform/tests/interfaces/compression.idl b/testing/web-platform/tests/interfaces/compression.idl new file mode 100644 index 0000000000..88be302a4a --- /dev/null +++ b/testing/web-platform/tests/interfaces/compression.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Compression Streams (https://wicg.github.io/compression/) + +[Exposed=*] +interface CompressionStream { + constructor(DOMString format); +}; +CompressionStream includes GenericTransformStream; + +[Exposed=*] +interface DecompressionStream { + constructor(DOMString format); +}; +DecompressionStream includes GenericTransformStream; diff --git a/testing/web-platform/tests/interfaces/compute-pressure.idl b/testing/web-platform/tests/interfaces/compute-pressure.idl new file mode 100644 index 0000000000..2a11b84c45 --- /dev/null +++ b/testing/web-platform/tests/interfaces/compute-pressure.idl @@ -0,0 +1,39 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Compute Pressure Level 1 (https://w3c.github.io/compute-pressure/) + +enum PressureState { "nominal", "fair", "serious", "critical" }; + +enum PressureFactor { "thermal", "power-supply" }; + +callback PressureUpdateCallback = undefined ( + sequence<PressureRecord> changes, + PressureObserver observer +); + +enum PressureSource { "cpu" }; + +[Exposed=(DedicatedWorker,SharedWorker,Window), SecureContext] +interface PressureObserver { + constructor(PressureUpdateCallback callback, optional PressureObserverOptions options = {}); + + Promise<undefined> observe(PressureSource source); + undefined unobserve(PressureSource source); + undefined disconnect(); + sequence<PressureRecord> takeRecords(); + + [SameObject] static readonly attribute FrozenArray<PressureSource> supportedSources; +}; + +[Exposed=(DedicatedWorker,SharedWorker,Window), SecureContext] +interface PressureRecord { + readonly attribute PressureSource source; + readonly attribute PressureState state; + readonly attribute FrozenArray<PressureFactor> factors; + readonly attribute DOMHighResTimeStamp time; +}; + +dictionary PressureObserverOptions { + double sampleRate = 1.0; +}; diff --git a/testing/web-platform/tests/interfaces/console.idl b/testing/web-platform/tests/interfaces/console.idl new file mode 100644 index 0000000000..fdf1d0df97 --- /dev/null +++ b/testing/web-platform/tests/interfaces/console.idl @@ -0,0 +1,34 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Console Standard (https://console.spec.whatwg.org/) + +[Exposed=*] +namespace console { // but see namespace object requirements below + // Logging + undefined assert(optional boolean condition = false, any... data); + undefined clear(); + undefined debug(any... data); + undefined error(any... data); + undefined info(any... data); + undefined log(any... data); + undefined table(optional any tabularData, optional sequence<DOMString> properties); + undefined trace(any... data); + undefined warn(any... data); + undefined dir(optional any item, optional object? options); + undefined dirxml(any... data); + + // Counting + undefined count(optional DOMString label = "default"); + undefined countReset(optional DOMString label = "default"); + + // Grouping + undefined group(any... data); + undefined groupCollapsed(any... data); + undefined groupEnd(); + + // Timing + undefined time(optional DOMString label = "default"); + undefined timeLog(optional DOMString label = "default", any... data); + undefined timeEnd(optional DOMString label = "default"); +}; diff --git a/testing/web-platform/tests/interfaces/contact-api.idl b/testing/web-platform/tests/interfaces/contact-api.idl new file mode 100644 index 0000000000..aece81664e --- /dev/null +++ b/testing/web-platform/tests/interfaces/contact-api.idl @@ -0,0 +1,44 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Contact Picker API (https://w3c.github.io/contact-picker/spec/) + +[Exposed=Window] +partial interface Navigator { + [SecureContext, SameObject] readonly attribute ContactsManager contacts; +}; + +enum ContactProperty { "address", "email", "icon", "name", "tel" }; + +[Exposed=Window] +interface ContactAddress { + [Default] object toJSON(); + readonly attribute DOMString city; + readonly attribute DOMString country; + readonly attribute DOMString dependentLocality; + readonly attribute DOMString organization; + readonly attribute DOMString phone; + readonly attribute DOMString postalCode; + readonly attribute DOMString recipient; + readonly attribute DOMString region; + readonly attribute DOMString sortingCode; + readonly attribute FrozenArray<DOMString> addressLine; +}; + +dictionary ContactInfo { + sequence<ContactAddress> address; + sequence<DOMString> email; + sequence<Blob> icon; + sequence<DOMString> name; + sequence<DOMString> tel; +}; + +dictionary ContactsSelectOptions { + boolean multiple = false; +}; + +[Exposed=Window,SecureContext] +interface ContactsManager { + Promise<sequence<ContactProperty>> getProperties(); + Promise<sequence<ContactInfo>> select(sequence<ContactProperty> properties, optional ContactsSelectOptions options = {}); +}; diff --git a/testing/web-platform/tests/interfaces/content-index.idl b/testing/web-platform/tests/interfaces/content-index.idl new file mode 100644 index 0000000000..177c5b9f11 --- /dev/null +++ b/testing/web-platform/tests/interfaces/content-index.idl @@ -0,0 +1,46 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Content Index (https://wicg.github.io/content-index/spec/) + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler oncontentdelete; +}; + +partial interface ServiceWorkerRegistration { + [SameObject] readonly attribute ContentIndex index; +}; + +enum ContentCategory { + "", + "homepage", + "article", + "video", + "audio", +}; + +dictionary ContentDescription { + required DOMString id; + required DOMString title; + required DOMString description; + ContentCategory category = ""; + sequence<ImageResource> icons = []; + required USVString url; +}; + +[Exposed=(Window,Worker)] +interface ContentIndex { + Promise<undefined> add(ContentDescription description); + Promise<undefined> delete(DOMString id); + Promise<sequence<ContentDescription>> getAll(); +}; + +dictionary ContentIndexEventInit : ExtendableEventInit { + required DOMString id; +}; + +[Exposed=ServiceWorker] +interface ContentIndexEvent : ExtendableEvent { + constructor(DOMString type, ContentIndexEventInit init); + readonly attribute DOMString id; +}; diff --git a/testing/web-platform/tests/interfaces/cookie-store.idl b/testing/web-platform/tests/interfaces/cookie-store.idl new file mode 100644 index 0000000000..72ef3f8c82 --- /dev/null +++ b/testing/web-platform/tests/interfaces/cookie-store.idl @@ -0,0 +1,110 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Cookie Store API (https://wicg.github.io/cookie-store/) + +[Exposed=(ServiceWorker,Window), + SecureContext] +interface CookieStore : EventTarget { + Promise<CookieListItem?> get(USVString name); + Promise<CookieListItem?> get(optional CookieStoreGetOptions options = {}); + + Promise<CookieList> getAll(USVString name); + Promise<CookieList> getAll(optional CookieStoreGetOptions options = {}); + + Promise<undefined> set(USVString name, USVString value); + Promise<undefined> set(CookieInit options); + + Promise<undefined> delete(USVString name); + Promise<undefined> delete(CookieStoreDeleteOptions options); + + [Exposed=Window] + attribute EventHandler onchange; +}; + +dictionary CookieStoreGetOptions { + USVString name; + USVString url; +}; + +enum CookieSameSite { + "strict", + "lax", + "none" +}; + +dictionary CookieInit { + required USVString name; + required USVString value; + EpochTimeStamp? expires = null; + USVString? domain = null; + USVString path = "/"; + CookieSameSite sameSite = "strict"; +}; + +dictionary CookieStoreDeleteOptions { + required USVString name; + USVString? domain = null; + USVString path = "/"; +}; + +dictionary CookieListItem { + USVString name; + USVString value; + USVString? domain; + USVString path; + EpochTimeStamp? expires; + boolean secure; + CookieSameSite sameSite; +}; + +typedef sequence<CookieListItem> CookieList; + +[Exposed=(ServiceWorker,Window), + SecureContext] +interface CookieStoreManager { + Promise<undefined> subscribe(sequence<CookieStoreGetOptions> subscriptions); + Promise<sequence<CookieStoreGetOptions>> getSubscriptions(); + Promise<undefined> unsubscribe(sequence<CookieStoreGetOptions> subscriptions); +}; + +[Exposed=(ServiceWorker,Window)] +partial interface ServiceWorkerRegistration { + [SameObject] readonly attribute CookieStoreManager cookies; +}; + +[Exposed=Window, + SecureContext] +interface CookieChangeEvent : Event { + constructor(DOMString type, optional CookieChangeEventInit eventInitDict = {}); + [SameObject] readonly attribute FrozenArray<CookieListItem> changed; + [SameObject] readonly attribute FrozenArray<CookieListItem> deleted; +}; + +dictionary CookieChangeEventInit : EventInit { + CookieList changed; + CookieList deleted; +}; + +[Exposed=ServiceWorker] +interface ExtendableCookieChangeEvent : ExtendableEvent { + constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict = {}); + [SameObject] readonly attribute FrozenArray<CookieListItem> changed; + [SameObject] readonly attribute FrozenArray<CookieListItem> deleted; +}; + +dictionary ExtendableCookieChangeEventInit : ExtendableEventInit { + CookieList changed; + CookieList deleted; +}; + +[SecureContext] +partial interface Window { + [SameObject] readonly attribute CookieStore cookieStore; +}; + +partial interface ServiceWorkerGlobalScope { + [SameObject] readonly attribute CookieStore cookieStore; + + attribute EventHandler oncookiechange; +}; diff --git a/testing/web-platform/tests/interfaces/crash-reporting.idl b/testing/web-platform/tests/interfaces/crash-reporting.idl new file mode 100644 index 0000000000..7c8a0ff71f --- /dev/null +++ b/testing/web-platform/tests/interfaces/crash-reporting.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Crash Reporting (https://wicg.github.io/crash-reporting/) + +[Exposed=(Window,Worker)] +interface CrashReportBody : ReportBody { + [Default] object toJSON(); + readonly attribute DOMString? reason; +}; diff --git a/testing/web-platform/tests/interfaces/credential-management.idl b/testing/web-platform/tests/interfaces/credential-management.idl new file mode 100644 index 0000000000..e9fab13f35 --- /dev/null +++ b/testing/web-platform/tests/interfaces/credential-management.idl @@ -0,0 +1,105 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Credential Management Level 1 (https://w3c.github.io/webappsec-credential-management/) + +[Exposed=Window, SecureContext] +interface Credential { + readonly attribute USVString id; + readonly attribute DOMString type; + static Promise<boolean> isConditionalMediationAvailable(); +}; + +[SecureContext] +interface mixin CredentialUserData { + readonly attribute USVString name; + readonly attribute USVString iconURL; +}; + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute CredentialsContainer credentials; +}; + +[Exposed=Window, SecureContext] +interface CredentialsContainer { + Promise<Credential?> get(optional CredentialRequestOptions options = {}); + Promise<Credential> store(Credential credential); + Promise<Credential?> create(optional CredentialCreationOptions options = {}); + Promise<undefined> preventSilentAccess(); +}; + +dictionary CredentialData { + required USVString id; +}; + +dictionary CredentialRequestOptions { + CredentialMediationRequirement mediation = "optional"; + AbortSignal signal; +}; + +enum CredentialMediationRequirement { + "silent", + "optional", + "conditional", + "required" +}; + +dictionary CredentialCreationOptions { + AbortSignal signal; +}; + +[Exposed=Window, + SecureContext] +interface PasswordCredential : Credential { + constructor(HTMLFormElement form); + constructor(PasswordCredentialData data); + readonly attribute USVString password; +}; +PasswordCredential includes CredentialUserData; + +partial dictionary CredentialRequestOptions { + boolean password = false; +}; + +dictionary PasswordCredentialData : CredentialData { + USVString name; + USVString iconURL; + required USVString origin; + required USVString password; +}; + +typedef (PasswordCredentialData or HTMLFormElement) PasswordCredentialInit; + +partial dictionary CredentialCreationOptions { + PasswordCredentialInit password; +}; + +[Exposed=Window, + SecureContext] +interface FederatedCredential : Credential { + constructor(FederatedCredentialInit data); + readonly attribute USVString provider; + readonly attribute DOMString? protocol; +}; +FederatedCredential includes CredentialUserData; + +dictionary FederatedCredentialRequestOptions { + sequence<USVString> providers; + sequence<DOMString> protocols; +}; + +partial dictionary CredentialRequestOptions { + FederatedCredentialRequestOptions federated; +}; + +dictionary FederatedCredentialInit : CredentialData { + USVString name; + USVString iconURL; + required USVString origin; + required USVString provider; + DOMString protocol; +}; + +partial dictionary CredentialCreationOptions { + FederatedCredentialInit federated; +}; diff --git a/testing/web-platform/tests/interfaces/csp-embedded-enforcement.idl b/testing/web-platform/tests/interfaces/csp-embedded-enforcement.idl new file mode 100644 index 0000000000..a980630bc1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/csp-embedded-enforcement.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Content Security Policy: Embedded Enforcement (https://w3c.github.io/webappsec-cspee/) + +partial interface HTMLIFrameElement { + [CEReactions] attribute DOMString csp; +}; diff --git a/testing/web-platform/tests/interfaces/csp-next.idl b/testing/web-platform/tests/interfaces/csp-next.idl new file mode 100644 index 0000000000..d94b36cf88 --- /dev/null +++ b/testing/web-platform/tests/interfaces/csp-next.idl @@ -0,0 +1,21 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Scripting Policy (https://wicg.github.io/csp-next/scripting-policy.html) + +enum ScriptingPolicyViolationType { + "externalScript", + "inlineScript", + "inlineEventHandler", + "eval" +}; + +[Exposed=(Window,Worker), SecureContext] +interface ScriptingPolicyReportBody : ReportBody { + [Default] object toJSON(); + readonly attribute DOMString violationType; + readonly attribute USVString? violationURL; + readonly attribute USVString? violationSample; + readonly attribute unsigned long lineno; + readonly attribute unsigned long colno; +}; diff --git a/testing/web-platform/tests/interfaces/css-animation-worklet.idl b/testing/web-platform/tests/interfaces/css-animation-worklet.idl new file mode 100644 index 0000000000..82d34a3ea2 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-animation-worklet.idl @@ -0,0 +1,37 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Animation Worklet API (https://drafts.css-houdini.org/css-animationworklet-1/) + +[Exposed=Window] +partial namespace CSS { + [SameObject] readonly attribute Worklet animationWorklet; +}; + +[ Global=(Worklet,AnimationWorklet), Exposed=AnimationWorklet ] +interface AnimationWorkletGlobalScope : WorkletGlobalScope { + undefined registerAnimator(DOMString name, AnimatorInstanceConstructor animatorCtor); +}; + +callback AnimatorInstanceConstructor = any (any options, optional any state); + +[ Exposed=AnimationWorklet ] +interface WorkletAnimationEffect { + EffectTiming getTiming(); + ComputedEffectTiming getComputedTiming(); + attribute double? localTime; +}; + +[Exposed=Window] +interface WorkletAnimation : Animation { + constructor(DOMString animatorName, + optional (AnimationEffect or sequence<AnimationEffect>)? effects = null, + optional AnimationTimeline? timeline, + optional any options); + readonly attribute DOMString animatorName; +}; + +[Exposed=AnimationWorklet] +interface WorkletGroupEffect { + sequence<WorkletAnimationEffect> getChildren(); +}; diff --git a/testing/web-platform/tests/interfaces/css-animations-2.idl b/testing/web-platform/tests/interfaces/css-animations-2.idl new file mode 100644 index 0000000000..84f138e8ab --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-animations-2.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Animations Level 2 (https://drafts.csswg.org/css-animations-2/) + +[Exposed=Window] +interface CSSAnimation : Animation { + readonly attribute CSSOMString animationName; +}; diff --git a/testing/web-platform/tests/interfaces/css-animations.idl b/testing/web-platform/tests/interfaces/css-animations.idl new file mode 100644 index 0000000000..6620e0156d --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-animations.idl @@ -0,0 +1,47 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Animations Level 1 (https://drafts.csswg.org/css-animations-1/) + +[Exposed=Window] +interface AnimationEvent : Event { + constructor(CSSOMString type, optional AnimationEventInit animationEventInitDict = {}); + readonly attribute CSSOMString animationName; + readonly attribute double elapsedTime; + readonly attribute CSSOMString pseudoElement; +}; +dictionary AnimationEventInit : EventInit { + CSSOMString animationName = ""; + double elapsedTime = 0.0; + CSSOMString pseudoElement = ""; +}; + +partial interface CSSRule { + const unsigned short KEYFRAMES_RULE = 7; + const unsigned short KEYFRAME_RULE = 8; +}; + +[Exposed=Window] +interface CSSKeyframeRule : CSSRule { + attribute CSSOMString keyText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +[Exposed=Window] +interface CSSKeyframesRule : CSSRule { + attribute CSSOMString name; + readonly attribute CSSRuleList cssRules; + readonly attribute unsigned long length; + + getter CSSKeyframeRule (unsigned long index); + undefined appendRule(CSSOMString rule); + undefined deleteRule(CSSOMString select); + CSSKeyframeRule? findRule(CSSOMString select); +}; + +partial interface mixin GlobalEventHandlers { + attribute EventHandler onanimationstart; + attribute EventHandler onanimationiteration; + attribute EventHandler onanimationend; + attribute EventHandler onanimationcancel; +}; diff --git a/testing/web-platform/tests/interfaces/css-cascade.idl b/testing/web-platform/tests/interfaces/css-cascade.idl new file mode 100644 index 0000000000..9011dc7fd9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-cascade.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Cascading and Inheritance Level 5 (https://drafts.csswg.org/css-cascade-5/) + +partial interface CSSImportRule { + readonly attribute CSSOMString? layerName; +}; + +[Exposed=Window] +interface CSSLayerBlockRule : CSSGroupingRule { + readonly attribute CSSOMString name; +}; + +[Exposed=Window] +interface CSSLayerStatementRule : CSSRule { + readonly attribute FrozenArray<CSSOMString> nameList; +}; diff --git a/testing/web-platform/tests/interfaces/css-color-5.idl b/testing/web-platform/tests/interfaces/css-color-5.idl new file mode 100644 index 0000000000..6f5c6dfc09 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-color-5.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Color Module Level 5 (https://drafts.csswg.org/css-color-5/) + +[Exposed=Window] +interface CSSColorProfileRule : CSSRule { + readonly attribute CSSOMString name ; + readonly attribute CSSOMString src ; + readonly attribute CSSOMString renderingIntent ; + readonly attribute CSSOMString components ; +}; diff --git a/testing/web-platform/tests/interfaces/css-conditional.idl b/testing/web-platform/tests/interfaces/css-conditional.idl new file mode 100644 index 0000000000..d87f305fdd --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-conditional.idl @@ -0,0 +1,27 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Conditional Rules Module Level 3 (https://drafts.csswg.org/css-conditional-3/) + +partial interface CSSRule { + const unsigned short SUPPORTS_RULE = 12; +}; + +[Exposed=Window] +interface CSSConditionRule : CSSGroupingRule { + readonly attribute CSSOMString conditionText; +}; + +[Exposed=Window] +interface CSSMediaRule : CSSConditionRule { + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; +}; + +[Exposed=Window] +interface CSSSupportsRule : CSSConditionRule { +}; + +partial namespace CSS { + boolean supports(CSSOMString property, CSSOMString value); + boolean supports(CSSOMString conditionText); +}; diff --git a/testing/web-platform/tests/interfaces/css-contain-3.idl b/testing/web-platform/tests/interfaces/css-contain-3.idl new file mode 100644 index 0000000000..0ecf380495 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-contain-3.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Containment Module Level 3 (https://drafts.csswg.org/css-contain-3/) + +[Exposed=Window] +interface CSSContainerRule : CSSConditionRule { + readonly attribute CSSOMString containerName; + readonly attribute CSSOMString containerQuery; +}; diff --git a/testing/web-platform/tests/interfaces/css-contain.idl b/testing/web-platform/tests/interfaces/css-contain.idl new file mode 100644 index 0000000000..6b29119617 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-contain.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Containment Module Level 2 (https://drafts.csswg.org/css-contain-2/) + +[Exposed=Window] +interface ContentVisibilityAutoStateChangedEvent : Event { + constructor(DOMString type, optional ContentVisibilityAutoStateChangedEventInit eventInitDict = {}); + readonly attribute boolean skipped; +}; +dictionary ContentVisibilityAutoStateChangedEventInit : EventInit { + boolean skipped = false; +}; diff --git a/testing/web-platform/tests/interfaces/css-counter-styles.idl b/testing/web-platform/tests/interfaces/css-counter-styles.idl new file mode 100644 index 0000000000..f679e0fe55 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-counter-styles.idl @@ -0,0 +1,23 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Counter Styles Level 3 (https://drafts.csswg.org/css-counter-styles-3/) + +partial interface CSSRule { + const unsigned short COUNTER_STYLE_RULE = 11; +}; + +[Exposed=Window] +interface CSSCounterStyleRule : CSSRule { + attribute CSSOMString name; + attribute CSSOMString system; + attribute CSSOMString symbols; + attribute CSSOMString additiveSymbols; + attribute CSSOMString negative; + attribute CSSOMString prefix; + attribute CSSOMString suffix; + attribute CSSOMString range; + attribute CSSOMString pad; + attribute CSSOMString speakAs; + attribute CSSOMString fallback; +}; diff --git a/testing/web-platform/tests/interfaces/css-font-loading.idl b/testing/web-platform/tests/interfaces/css-font-loading.idl new file mode 100644 index 0000000000..6f2e16dd64 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-font-loading.idl @@ -0,0 +1,134 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Font Loading Module Level 3 (https://drafts.csswg.org/css-font-loading-3/) + +typedef (ArrayBuffer or ArrayBufferView) BinaryData; + +dictionary FontFaceDescriptors { + CSSOMString style = "normal"; + CSSOMString weight = "normal"; + CSSOMString stretch = "normal"; + CSSOMString unicodeRange = "U+0-10FFFF"; + CSSOMString variant = "normal"; + CSSOMString featureSettings = "normal"; + CSSOMString variationSettings = "normal"; + CSSOMString display = "auto"; + CSSOMString ascentOverride = "normal"; + CSSOMString descentOverride = "normal"; + CSSOMString lineGapOverride = "normal"; +}; + +enum FontFaceLoadStatus { "unloaded", "loading", "loaded", "error" }; + +[Exposed=(Window,Worker)] +interface FontFace { + constructor(CSSOMString family, (CSSOMString or BinaryData) source, + optional FontFaceDescriptors descriptors = {}); + attribute CSSOMString family; + attribute CSSOMString style; + attribute CSSOMString weight; + attribute CSSOMString stretch; + attribute CSSOMString unicodeRange; + attribute CSSOMString variant; + attribute CSSOMString featureSettings; + attribute CSSOMString variationSettings; + attribute CSSOMString display; + attribute CSSOMString ascentOverride; + attribute CSSOMString descentOverride; + attribute CSSOMString lineGapOverride; + + readonly attribute FontFaceLoadStatus status; + + Promise<FontFace> load(); + readonly attribute Promise<FontFace> loaded; +}; + +[Exposed=(Window,Worker)] +interface FontFaceFeatures { + /* The CSSWG is still discussing what goes in here */ +}; + +[Exposed=(Window,Worker)] +interface FontFaceVariationAxis { + readonly attribute DOMString name; + readonly attribute DOMString axisTag; + readonly attribute double minimumValue; + readonly attribute double maximumValue; + readonly attribute double defaultValue; +}; + +[Exposed=(Window,Worker)] +interface FontFaceVariations { + readonly setlike<FontFaceVariationAxis>; +}; + +[Exposed=(Window,Worker)] +interface FontFacePalette { + iterable<DOMString>; + readonly attribute unsigned long length; + getter DOMString (unsigned long index); + readonly attribute boolean usableWithLightBackground; + readonly attribute boolean usableWithDarkBackground; +}; + +[Exposed=(Window,Worker)] +interface FontFacePalettes { + iterable<FontFacePalette>; + readonly attribute unsigned long length; + getter FontFacePalette (unsigned long index); +}; + +partial interface FontFace { + readonly attribute FontFaceFeatures features; + readonly attribute FontFaceVariations variations; + readonly attribute FontFacePalettes palettes; +}; + +dictionary FontFaceSetLoadEventInit : EventInit { + sequence<FontFace> fontfaces = []; +}; + +[Exposed=(Window,Worker)] +interface FontFaceSetLoadEvent : Event { + constructor(CSSOMString type, optional FontFaceSetLoadEventInit eventInitDict = {}); + [SameObject] readonly attribute FrozenArray<FontFace> fontfaces; +}; + +enum FontFaceSetLoadStatus { "loading", "loaded" }; + +[Exposed=(Window,Worker)] +interface FontFaceSet : EventTarget { + constructor(sequence<FontFace> initialFaces); + + setlike<FontFace>; + FontFaceSet add(FontFace font); + boolean delete(FontFace font); + undefined clear(); + + // events for when loading state changes + attribute EventHandler onloading; + attribute EventHandler onloadingdone; + attribute EventHandler onloadingerror; + + // check and start loads if appropriate + // and fulfill promise when all loads complete + Promise<sequence<FontFace>> load(CSSOMString font, optional CSSOMString text = " "); + + // return whether all fonts in the fontlist are loaded + // (does not initiate load if not available) + boolean check(CSSOMString font, optional CSSOMString text = " "); + + // async notification that font loading and layout operations are done + readonly attribute Promise<FontFaceSet> ready; + + // loading state, "loading" while one or more fonts loading, "loaded" otherwise + readonly attribute FontFaceSetLoadStatus status; +}; + +interface mixin FontFaceSource { + readonly attribute FontFaceSet fonts; +}; + +Document includes FontFaceSource; +WorkerGlobalScope includes FontFaceSource; diff --git a/testing/web-platform/tests/interfaces/css-fonts.idl b/testing/web-platform/tests/interfaces/css-fonts.idl new file mode 100644 index 0000000000..eddfc02521 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-fonts.idl @@ -0,0 +1,36 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Fonts Module Level 4 (https://drafts.csswg.org/css-fonts-4/) + +[Exposed=Window] +interface CSSFontFaceRule : CSSRule { + readonly attribute CSSStyleDeclaration style; +}; + +partial interface CSSRule { const unsigned short FONT_FEATURE_VALUES_RULE = 14; +}; +[Exposed=Window] +interface CSSFontFeatureValuesRule : CSSRule { + attribute CSSOMString fontFamily; + readonly attribute CSSFontFeatureValuesMap annotation; + readonly attribute CSSFontFeatureValuesMap ornaments; + readonly attribute CSSFontFeatureValuesMap stylistic; + readonly attribute CSSFontFeatureValuesMap swash; + readonly attribute CSSFontFeatureValuesMap characterVariant; + readonly attribute CSSFontFeatureValuesMap styleset; +}; + +[Exposed=Window] +interface CSSFontFeatureValuesMap { + maplike<CSSOMString, sequence<unsigned long>>; + undefined set(CSSOMString featureValueName, + (unsigned long or sequence<unsigned long>) values); +}; + +[Exposed=Window]interface CSSFontPaletteValuesRule : CSSRule { + readonly attribute CSSOMString name; + readonly attribute CSSOMString fontFamily; + readonly attribute CSSOMString basePalette; + readonly attribute CSSOMString overrideColors; +}; diff --git a/testing/web-platform/tests/interfaces/css-highlight-api.idl b/testing/web-platform/tests/interfaces/css-highlight-api.idl new file mode 100644 index 0000000000..f3c6b2e9d2 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-highlight-api.idl @@ -0,0 +1,27 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Custom Highlight API Module Level 1 (https://drafts.csswg.org/css-highlight-api-1/) + +enum HighlightType { + "highlight", + "spelling-error", + "grammar-error" +}; + +[Exposed=Window] +interface Highlight { + constructor(AbstractRange... initialRanges); + setlike<AbstractRange>; + attribute long priority; + attribute HighlightType type; +}; + +partial namespace CSS { + readonly attribute HighlightRegistry highlights; +}; + +[Exposed=Window] +interface HighlightRegistry { + maplike<DOMString, Highlight>; +}; diff --git a/testing/web-platform/tests/interfaces/css-images-4.idl b/testing/web-platform/tests/interfaces/css-images-4.idl new file mode 100644 index 0000000000..8866b008cc --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-images-4.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Images Module Level 4 (https://drafts.csswg.org/css-images-4/) + +partial namespace CSS { + [SameObject] readonly attribute any elementSources; +}; diff --git a/testing/web-platform/tests/interfaces/css-layout-api.idl b/testing/web-platform/tests/interfaces/css-layout-api.idl new file mode 100644 index 0000000000..2b772d5b84 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-layout-api.idl @@ -0,0 +1,144 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Layout API Level 1 (https://drafts.css-houdini.org/css-layout-api-1/) + +partial namespace CSS { + [SameObject] readonly attribute Worklet layoutWorklet; +}; + +[Global=(Worklet,LayoutWorklet),Exposed=LayoutWorklet] +interface LayoutWorkletGlobalScope : WorkletGlobalScope { + undefined registerLayout(DOMString name, VoidFunction layoutCtor); +}; + +dictionary LayoutOptions { + ChildDisplayType childDisplay = "block"; + LayoutSizingMode sizing = "block-like"; +}; + +enum ChildDisplayType { + "block", // default - "blockifies" the child boxes. + "normal", +}; + +enum LayoutSizingMode { + "block-like", // default - Sizing behaves like block containers. + "manual", // Sizing is specified by the web developer. +}; + +[Exposed=LayoutWorklet] +interface LayoutChild { + readonly attribute StylePropertyMapReadOnly styleMap; + + Promise<IntrinsicSizes> intrinsicSizes(); + Promise<LayoutFragment> layoutNextFragment(LayoutConstraintsOptions constraints, ChildBreakToken breakToken); +}; + +[Exposed=LayoutWorklet] +interface LayoutFragment { + readonly attribute double inlineSize; + readonly attribute double blockSize; + + attribute double inlineOffset; + attribute double blockOffset; + + readonly attribute any data; + + readonly attribute ChildBreakToken? breakToken; +}; + +[Exposed=LayoutWorklet] +interface IntrinsicSizes { + readonly attribute double minContentSize; + readonly attribute double maxContentSize; +}; + +[Exposed=LayoutWorklet] +interface LayoutConstraints { + readonly attribute double availableInlineSize; + readonly attribute double availableBlockSize; + + readonly attribute double? fixedInlineSize; + readonly attribute double? fixedBlockSize; + + readonly attribute double percentageInlineSize; + readonly attribute double percentageBlockSize; + + readonly attribute double? blockFragmentationOffset; + readonly attribute BlockFragmentationType blockFragmentationType; + + readonly attribute any data; +}; + +enum BlockFragmentationType { "none", "page", "column", "region" }; + +dictionary LayoutConstraintsOptions { + double availableInlineSize; + double availableBlockSize; + + double fixedInlineSize; + double fixedBlockSize; + + double percentageInlineSize; + double percentageBlockSize; + + double blockFragmentationOffset; + BlockFragmentationType blockFragmentationType = "none"; + + any data; +}; + +[Exposed=LayoutWorklet] +interface ChildBreakToken { + readonly attribute BreakType breakType; + readonly attribute LayoutChild child; +}; + +[Exposed=LayoutWorklet] +interface BreakToken { + readonly attribute FrozenArray<ChildBreakToken> childBreakTokens; + readonly attribute any data; +}; + +dictionary BreakTokenOptions { + sequence<ChildBreakToken> childBreakTokens; + any data = null; +}; + +enum BreakType { "none", "line", "column", "page", "region" }; + +[Exposed=LayoutWorklet] +interface LayoutEdges { + readonly attribute double inlineStart; + readonly attribute double inlineEnd; + + readonly attribute double blockStart; + readonly attribute double blockEnd; + + // Convenience attributes for the sum in one direction. + readonly attribute double inline; + readonly attribute double block; +}; + +// This is the final return value from the author defined layout() method. +dictionary FragmentResultOptions { + double inlineSize = 0; + double blockSize = 0; + double autoBlockSize = 0; + sequence<LayoutFragment> childFragments = []; + any data = null; + BreakTokenOptions breakToken = null; +}; + +[Exposed=LayoutWorklet] +interface FragmentResult { + constructor(optional FragmentResultOptions options = {}); + readonly attribute double inlineSize; + readonly attribute double blockSize; +}; + +dictionary IntrinsicSizesResultOptions { + double maxContentSize; + double minContentSize; +}; diff --git a/testing/web-platform/tests/interfaces/css-masking.idl b/testing/web-platform/tests/interfaces/css-masking.idl new file mode 100644 index 0000000000..72fbd9aa1f --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-masking.idl @@ -0,0 +1,20 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Masking Module Level 1 (https://drafts.fxtf.org/css-masking-1/) + +[Exposed=Window] +interface SVGClipPathElement : SVGElement { + readonly attribute SVGAnimatedEnumeration clipPathUnits; + readonly attribute SVGAnimatedTransformList transform; +}; + +[Exposed=Window] +interface SVGMaskElement : SVGElement { + readonly attribute SVGAnimatedEnumeration maskUnits; + readonly attribute SVGAnimatedEnumeration maskContentUnits; + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; +}; diff --git a/testing/web-platform/tests/interfaces/css-nav.idl b/testing/web-platform/tests/interfaces/css-nav.idl new file mode 100644 index 0000000000..03f039e4cb --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-nav.idl @@ -0,0 +1,48 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Spatial Navigation Level 1 (https://drafts.csswg.org/css-nav-1/) + +enum SpatialNavigationDirection { + "up", + "down", + "left", + "right", +}; + +partial interface Window { + undefined navigate(SpatialNavigationDirection dir); +}; + +enum FocusableAreaSearchMode { + "visible", + "all" +}; + +dictionary FocusableAreasOption { + FocusableAreaSearchMode mode; +}; + +dictionary SpatialNavigationSearchOptions { + sequence<Node>? candidates; + Node? container; +}; + +partial interface Element { + Node getSpatialNavigationContainer(); + sequence<Node> focusableAreas(optional FocusableAreasOption option = {}); + Node? spatialNavigationSearch(SpatialNavigationDirection dir, optional SpatialNavigationSearchOptions options = {}); +}; + +[Exposed=Window] +interface NavigationEvent : UIEvent { + constructor(DOMString type, + optional NavigationEventInit eventInitDict = {}); + readonly attribute SpatialNavigationDirection dir; + readonly attribute EventTarget? relatedTarget; +}; + +dictionary NavigationEventInit : UIEventInit { + SpatialNavigationDirection dir; + EventTarget? relatedTarget = null; +}; diff --git a/testing/web-platform/tests/interfaces/css-nesting.idl b/testing/web-platform/tests/interfaces/css-nesting.idl new file mode 100644 index 0000000000..01f27ab9d6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-nesting.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Nesting Module (https://drafts.csswg.org/css-nesting-1/) + +partial interface CSSStyleRule { + [SameObject] readonly attribute CSSRuleList cssRules; + unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); + undefined deleteRule(unsigned long index); +}; diff --git a/testing/web-platform/tests/interfaces/css-paint-api.idl b/testing/web-platform/tests/interfaces/css-paint-api.idl new file mode 100644 index 0000000000..0924c53556 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-paint-api.idl @@ -0,0 +1,39 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Painting API Level 1 (https://drafts.css-houdini.org/css-paint-api-1/) + +partial namespace CSS { + [SameObject] readonly attribute Worklet paintWorklet; +}; + +[Global=(Worklet,PaintWorklet),Exposed=PaintWorklet] +interface PaintWorkletGlobalScope : WorkletGlobalScope { + undefined registerPaint(DOMString name, VoidFunction paintCtor); + readonly attribute unrestricted double devicePixelRatio; +}; + +dictionary PaintRenderingContext2DSettings { + boolean alpha = true; +}; + +[Exposed=PaintWorklet] +interface PaintRenderingContext2D { +}; +PaintRenderingContext2D includes CanvasState; +PaintRenderingContext2D includes CanvasTransform; +PaintRenderingContext2D includes CanvasCompositing; +PaintRenderingContext2D includes CanvasImageSmoothing; +PaintRenderingContext2D includes CanvasFillStrokeStyles; +PaintRenderingContext2D includes CanvasShadowStyles; +PaintRenderingContext2D includes CanvasRect; +PaintRenderingContext2D includes CanvasDrawPath; +PaintRenderingContext2D includes CanvasDrawImage; +PaintRenderingContext2D includes CanvasPathDrawingStyles; +PaintRenderingContext2D includes CanvasPath; + +[Exposed=PaintWorklet] +interface PaintSize { + readonly attribute double width; + readonly attribute double height; +}; diff --git a/testing/web-platform/tests/interfaces/css-parser-api.idl b/testing/web-platform/tests/interfaces/css-parser-api.idl new file mode 100644 index 0000000000..4e34a3f25d --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-parser-api.idl @@ -0,0 +1,76 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Parser API (https://wicg.github.io/css-parser-api/) + +typedef (DOMString or ReadableStream) CSSStringSource; +typedef (DOMString or CSSStyleValue or CSSParserValue) CSSToken; + +partial namespace CSS { + Promise<sequence<CSSParserRule>> parseStylesheet(CSSStringSource css, optional CSSParserOptions options = {}); + Promise<sequence<CSSParserRule>> parseRuleList(CSSStringSource css, optional CSSParserOptions options = {}); + Promise<CSSParserRule> parseRule(CSSStringSource css, optional CSSParserOptions options = {}); + Promise<sequence<CSSParserRule>> parseDeclarationList(CSSStringSource css, optional CSSParserOptions options = {}); + CSSParserDeclaration parseDeclaration(DOMString css, optional CSSParserOptions options = {}); + CSSToken parseValue(DOMString css); + sequence<CSSToken> parseValueList(DOMString css); + sequence<sequence<CSSToken>> parseCommaValueList(DOMString css); +}; + +dictionary CSSParserOptions { + object atRules; + /* dict of at-rule name => at-rule type + (contains decls or contains qualified rules) */ +}; + +[Exposed=Window] +interface CSSParserRule { + /* Just a superclass. */ +}; + +[Exposed=Window] +interface CSSParserAtRule : CSSParserRule { + constructor(DOMString name, sequence<CSSToken> prelude, optional sequence<CSSParserRule>? body); + readonly attribute DOMString name; + readonly attribute FrozenArray<CSSParserValue> prelude; + readonly attribute FrozenArray<CSSParserRule>? body; + /* nullable to handle at-statements */ + stringifier; +}; + +[Exposed=Window] +interface CSSParserQualifiedRule : CSSParserRule { + constructor(sequence<CSSToken> prelude, optional sequence<CSSParserRule>? body); + readonly attribute FrozenArray<CSSParserValue> prelude; + readonly attribute FrozenArray<CSSParserRule> body; + stringifier; +}; + +[Exposed=Window] +interface CSSParserDeclaration : CSSParserRule { + constructor(DOMString name, optional sequence<CSSParserRule> body); + readonly attribute DOMString name; + readonly attribute FrozenArray<CSSParserValue> body; + stringifier; +}; + +[Exposed=Window] +interface CSSParserValue { + /* Just a superclass. */ +}; + +[Exposed=Window] +interface CSSParserBlock : CSSParserValue { + constructor(DOMString name, sequence<CSSParserValue> body); + readonly attribute DOMString name; /* "[]", "{}", or "()" */ + readonly attribute FrozenArray<CSSParserValue> body; + stringifier; +}; + +[Exposed=Window] +interface CSSParserFunction : CSSParserValue { + constructor(DOMString name, sequence<sequence<CSSParserValue>> args); + readonly attribute DOMString name; + readonly attribute FrozenArray<FrozenArray<CSSParserValue>> args; + stringifier; +}; diff --git a/testing/web-platform/tests/interfaces/css-properties-values-api.idl b/testing/web-platform/tests/interfaces/css-properties-values-api.idl new file mode 100644 index 0000000000..eb7d7b027e --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-properties-values-api.idl @@ -0,0 +1,23 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Properties and Values API Level 1 (https://drafts.css-houdini.org/css-properties-values-api-1/) + +dictionary PropertyDefinition { + required DOMString name; + DOMString syntax = "*"; + required boolean inherits; + DOMString initialValue; +}; + +partial namespace CSS { + undefined registerProperty(PropertyDefinition definition); +}; + +[Exposed=Window] +interface CSSPropertyRule : CSSRule { + readonly attribute CSSOMString name; + readonly attribute CSSOMString syntax; + readonly attribute boolean inherits; + readonly attribute CSSOMString? initialValue; +}; diff --git a/testing/web-platform/tests/interfaces/css-pseudo.idl b/testing/web-platform/tests/interfaces/css-pseudo.idl new file mode 100644 index 0000000000..dbe4c5461f --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-pseudo.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Pseudo-Elements Module Level 4 (https://drafts.csswg.org/css-pseudo-4/) + +[Exposed=Window] +interface CSSPseudoElement : EventTarget { + readonly attribute CSSOMString type; + readonly attribute Element element; + readonly attribute (Element or CSSPseudoElement) parent; + CSSPseudoElement? pseudo(CSSOMString type); +}; + +partial interface Element { + CSSPseudoElement? pseudo(CSSOMString type); +}; diff --git a/testing/web-platform/tests/interfaces/css-regions.idl b/testing/web-platform/tests/interfaces/css-regions.idl new file mode 100644 index 0000000000..113438f790 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-regions.idl @@ -0,0 +1,29 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Regions Module Level 1 (https://drafts.csswg.org/css-regions-1/) + +partial interface Document { + readonly attribute NamedFlowMap namedFlows; +}; + +[Exposed=Window] interface NamedFlowMap { + maplike<CSSOMString, NamedFlow>; +}; + +[Exposed=Window] +interface NamedFlow : EventTarget { + readonly attribute CSSOMString name; + readonly attribute boolean overset; + sequence<Element> getRegions(); + readonly attribute short firstEmptyRegionIndex; + sequence<Node> getContent(); + sequence<Element> getRegionsByContent(Node node); +}; + +interface mixin Region { + readonly attribute CSSOMString regionOverset; + sequence<Range>? getRegionFlowRanges(); +}; + +Element includes Region; diff --git a/testing/web-platform/tests/interfaces/css-shadow-parts.idl b/testing/web-platform/tests/interfaces/css-shadow-parts.idl new file mode 100644 index 0000000000..3759199fc1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-shadow-parts.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Shadow Parts (https://drafts.csswg.org/css-shadow-parts-1/) + +partial interface Element { + [SameObject, PutForwards=value] readonly attribute DOMTokenList part; +}; diff --git a/testing/web-platform/tests/interfaces/css-toggle.tentative.idl b/testing/web-platform/tests/interfaces/css-toggle.tentative.idl new file mode 100644 index 0000000000..5587019a29 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-toggle.tentative.idl @@ -0,0 +1,51 @@ +partial interface Element { + [SameObject] readonly attribute CSSToggleMap toggles; +}; + +interface CSSToggleMap { + maplike<DOMString, CSSToggle>; + CSSToggleMap set(DOMString key, CSSToggle value); +}; + +interface CSSToggle { + attribute (unsigned long or DOMString) value; + attribute unsigned long? valueAsNumber; + attribute DOMString? valueAsString; + + attribute (unsigned long or FrozenArray<DOMString>) states; + attribute boolean group; + attribute CSSToggleScope scope; + attribute CSSToggleCycle cycle; + + constructor(optional CSSToggleData options); +}; + +dictionary CSSToggleData { + (unsigned long or DOMString) value = 0; + (unsigned long or sequence<DOMString>) states = 1; + boolean group = false; + CSSToggleScope scope = "wide"; + CSSToggleCycle cycle = "cycle"; +}; + +enum CSSToggleScope { + "narrow", + "wide", +}; + +enum CSSToggleCycle { + "cycle", + "cycle-on", + "sticky", +}; + +interface CSSToggleEvent : Event { + constructor(DOMString type, optional CSSToggleEventInit eventInitDict = {}); + readonly attribute DOMString toggleName; + readonly attribute CSSToggle? toggle; +}; + +dictionary CSSToggleEventInit : EventInit { + DOMString toggleName = ""; + CSSToggle? toggle = null; +}; diff --git a/testing/web-platform/tests/interfaces/css-transitions-2.idl b/testing/web-platform/tests/interfaces/css-transitions-2.idl new file mode 100644 index 0000000000..9d06f3cf26 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-transitions-2.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Transitions Level 2 (https://drafts.csswg.org/css-transitions-2/) + +[Exposed=Window] +interface CSSTransition : Animation { + readonly attribute CSSOMString transitionProperty; +}; diff --git a/testing/web-platform/tests/interfaces/css-transitions.idl b/testing/web-platform/tests/interfaces/css-transitions.idl new file mode 100644 index 0000000000..0f00b2c014 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-transitions.idl @@ -0,0 +1,25 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Transitions (https://drafts.csswg.org/css-transitions-1/) + +[Exposed=Window] +interface TransitionEvent : Event { + constructor(CSSOMString type, optional TransitionEventInit transitionEventInitDict = {}); + readonly attribute CSSOMString propertyName; + readonly attribute double elapsedTime; + readonly attribute CSSOMString pseudoElement; +}; + +dictionary TransitionEventInit : EventInit { + CSSOMString propertyName = ""; + double elapsedTime = 0.0; + CSSOMString pseudoElement = ""; +}; + +partial interface mixin GlobalEventHandlers { + attribute EventHandler ontransitionrun; + attribute EventHandler ontransitionstart; + attribute EventHandler ontransitionend; + attribute EventHandler ontransitioncancel; +}; diff --git a/testing/web-platform/tests/interfaces/css-typed-om.idl b/testing/web-platform/tests/interfaces/css-typed-om.idl new file mode 100644 index 0000000000..595a424e01 --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-typed-om.idl @@ -0,0 +1,425 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Typed OM Level 1 (https://drafts.css-houdini.org/css-typed-om-1/) + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSStyleValue { + stringifier; + [Exposed=Window] static CSSStyleValue parse(USVString property, USVString cssText); + [Exposed=Window] static sequence<CSSStyleValue> parseAll(USVString property, USVString cssText); +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface StylePropertyMapReadOnly { + iterable<USVString, sequence<CSSStyleValue>>; + any get(USVString property); + /* 'any' means (undefined or CSSStyleValue) here, + see https://github.com/heycam/webidl/issues/60 */ + sequence<CSSStyleValue> getAll(USVString property); + boolean has(USVString property); + readonly attribute unsigned long size; +}; + +[Exposed=Window] +interface StylePropertyMap : StylePropertyMapReadOnly { + undefined set(USVString property, (CSSStyleValue or USVString)... values); + undefined append(USVString property, (CSSStyleValue or USVString)... values); + undefined delete(USVString property); + undefined clear(); +}; + +partial interface Element { + [SameObject] StylePropertyMapReadOnly computedStyleMap(); +}; + +partial interface CSSStyleRule { + [SameObject] readonly attribute StylePropertyMap styleMap; +}; + +partial interface mixin ElementCSSInlineStyle { + [SameObject] readonly attribute StylePropertyMap attributeStyleMap; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSUnparsedValue : CSSStyleValue { + constructor(sequence<CSSUnparsedSegment> members); + iterable<CSSUnparsedSegment>; + readonly attribute unsigned long length; + getter CSSUnparsedSegment (unsigned long index); + setter CSSUnparsedSegment (unsigned long index, CSSUnparsedSegment val); +}; + +typedef (USVString or CSSVariableReferenceValue) CSSUnparsedSegment; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSVariableReferenceValue { + constructor(USVString variable, optional CSSUnparsedValue? fallback = null); + attribute USVString variable; + readonly attribute CSSUnparsedValue? fallback; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSKeywordValue : CSSStyleValue { + constructor(USVString value); + attribute USVString value; +}; + +typedef (DOMString or CSSKeywordValue) CSSKeywordish; + +typedef (double or CSSNumericValue) CSSNumberish; + +enum CSSNumericBaseType { + "length", + "angle", + "time", + "frequency", + "resolution", + "flex", + "percent", +}; + +dictionary CSSNumericType { + long length; + long angle; + long time; + long frequency; + long resolution; + long flex; + long percent; + CSSNumericBaseType percentHint; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSNumericValue : CSSStyleValue { + CSSNumericValue add(CSSNumberish... values); + CSSNumericValue sub(CSSNumberish... values); + CSSNumericValue mul(CSSNumberish... values); + CSSNumericValue div(CSSNumberish... values); + CSSNumericValue min(CSSNumberish... values); + CSSNumericValue max(CSSNumberish... values); + + boolean equals(CSSNumberish... value); + + CSSUnitValue to(USVString unit); + CSSMathSum toSum(USVString... units); + CSSNumericType type(); + + [Exposed=Window] static CSSNumericValue parse(USVString cssText); +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSUnitValue : CSSNumericValue { + constructor(double value, USVString unit); + attribute double value; + readonly attribute USVString unit; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathValue : CSSNumericValue { + readonly attribute CSSMathOperator operator; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathSum : CSSMathValue { + constructor(CSSNumberish... args); + readonly attribute CSSNumericArray values; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathProduct : CSSMathValue { + constructor(CSSNumberish... args); + readonly attribute CSSNumericArray values; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathNegate : CSSMathValue { + constructor(CSSNumberish arg); + readonly attribute CSSNumericValue value; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathInvert : CSSMathValue { + constructor(CSSNumberish arg); + readonly attribute CSSNumericValue value; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathMin : CSSMathValue { + constructor(CSSNumberish... args); + readonly attribute CSSNumericArray values; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathMax : CSSMathValue { + constructor(CSSNumberish... args); + readonly attribute CSSNumericArray values; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMathClamp : CSSMathValue { + constructor(CSSNumberish lower, CSSNumberish value, CSSNumberish upper); + readonly attribute CSSNumericValue lower; + readonly attribute CSSNumericValue value; + readonly attribute CSSNumericValue upper; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSNumericArray { + iterable<CSSNumericValue>; + readonly attribute unsigned long length; + getter CSSNumericValue (unsigned long index); +}; + +enum CSSMathOperator { + "sum", + "product", + "negate", + "invert", + "min", + "max", + "clamp", +}; + +partial namespace CSS { + CSSUnitValue number(double value); + CSSUnitValue percent(double value); + + // <length> + CSSUnitValue em(double value); + CSSUnitValue ex(double value); + CSSUnitValue ch(double value); + CSSUnitValue ic(double value); + CSSUnitValue rem(double value); + CSSUnitValue lh(double value); + CSSUnitValue rlh(double value); + CSSUnitValue vw(double value); + CSSUnitValue vh(double value); + CSSUnitValue vi(double value); + CSSUnitValue vb(double value); + CSSUnitValue vmin(double value); + CSSUnitValue vmax(double value); + CSSUnitValue svw(double value); + CSSUnitValue svh(double value); + CSSUnitValue svi(double value); + CSSUnitValue svb(double value); + CSSUnitValue svmin(double value); + CSSUnitValue svmax(double value); + CSSUnitValue lvw(double value); + CSSUnitValue lvh(double value); + CSSUnitValue lvi(double value); + CSSUnitValue lvb(double value); + CSSUnitValue lvmin(double value); + CSSUnitValue lvmax(double value); + CSSUnitValue dvw(double value); + CSSUnitValue dvh(double value); + CSSUnitValue dvi(double value); + CSSUnitValue dvb(double value); + CSSUnitValue dvmin(double value); + CSSUnitValue dvmax(double value); + CSSUnitValue cqw(double value); + CSSUnitValue cqh(double value); + CSSUnitValue cqi(double value); + CSSUnitValue cqb(double value); + CSSUnitValue cqmin(double value); + CSSUnitValue cqmax(double value); + CSSUnitValue cm(double value); + CSSUnitValue mm(double value); + CSSUnitValue Q(double value); + CSSUnitValue in(double value); + CSSUnitValue pt(double value); + CSSUnitValue pc(double value); + CSSUnitValue px(double value); + + // <angle> + CSSUnitValue deg(double value); + CSSUnitValue grad(double value); + CSSUnitValue rad(double value); + CSSUnitValue turn(double value); + + // <time> + CSSUnitValue s(double value); + CSSUnitValue ms(double value); + + // <frequency> + CSSUnitValue Hz(double value); + CSSUnitValue kHz(double value); + + // <resolution> + CSSUnitValue dpi(double value); + CSSUnitValue dpcm(double value); + CSSUnitValue dppx(double value); + + // <flex> + CSSUnitValue fr(double value); +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSTransformValue : CSSStyleValue { + constructor(sequence<CSSTransformComponent> transforms); + iterable<CSSTransformComponent>; + readonly attribute unsigned long length; + getter CSSTransformComponent (unsigned long index); + setter CSSTransformComponent (unsigned long index, CSSTransformComponent val); + + readonly attribute boolean is2D; + DOMMatrix toMatrix(); +}; + +typedef (CSSNumericValue or CSSKeywordish) CSSPerspectiveValue; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSTransformComponent { + stringifier; + attribute boolean is2D; + DOMMatrix toMatrix(); +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSTranslate : CSSTransformComponent { + constructor(CSSNumericValue x, CSSNumericValue y, optional CSSNumericValue z); + attribute CSSNumericValue x; + attribute CSSNumericValue y; + attribute CSSNumericValue z; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSRotate : CSSTransformComponent { + constructor(CSSNumericValue angle); + constructor(CSSNumberish x, CSSNumberish y, CSSNumberish z, CSSNumericValue angle); + attribute CSSNumberish x; + attribute CSSNumberish y; + attribute CSSNumberish z; + attribute CSSNumericValue angle; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSScale : CSSTransformComponent { + constructor(CSSNumberish x, CSSNumberish y, optional CSSNumberish z); + attribute CSSNumberish x; + attribute CSSNumberish y; + attribute CSSNumberish z; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSSkew : CSSTransformComponent { + constructor(CSSNumericValue ax, CSSNumericValue ay); + attribute CSSNumericValue ax; + attribute CSSNumericValue ay; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSSkewX : CSSTransformComponent { + constructor(CSSNumericValue ax); + attribute CSSNumericValue ax; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSSkewY : CSSTransformComponent { + constructor(CSSNumericValue ay); + attribute CSSNumericValue ay; +}; + +/* Note that skew(x,y) is *not* the same as skewX(x) skewY(y), + thus the separate interfaces for all three. */ + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSPerspective : CSSTransformComponent { + constructor(CSSPerspectiveValue length); + attribute CSSPerspectiveValue length; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSMatrixComponent : CSSTransformComponent { + constructor(DOMMatrixReadOnly matrix, optional CSSMatrixComponentOptions options = {}); + attribute DOMMatrix matrix; +}; + +dictionary CSSMatrixComponentOptions { + boolean is2D; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSImageValue : CSSStyleValue { +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSColorValue : CSSStyleValue { + [Exposed=Window] static (CSSColorValue or CSSStyleValue) parse(USVString cssText); +}; + +typedef (CSSNumberish or CSSKeywordish) CSSColorRGBComp; +typedef (CSSNumberish or CSSKeywordish) CSSColorPercent; +typedef (CSSNumberish or CSSKeywordish) CSSColorNumber; +typedef (CSSNumberish or CSSKeywordish) CSSColorAngle; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSRGB : CSSColorValue { + constructor(CSSColorRGBComp r, CSSColorRGBComp g, CSSColorRGBComp b, optional CSSColorPercent alpha = 1); + attribute CSSColorRGBComp r; + attribute CSSColorRGBComp g; + attribute CSSColorRGBComp b; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSHSL : CSSColorValue { + constructor(CSSColorAngle h, CSSColorPercent s, CSSColorPercent l, optional CSSColorPercent alpha = 1); + attribute CSSColorAngle h; + attribute CSSColorPercent s; + attribute CSSColorPercent l; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSHWB : CSSColorValue { + constructor(CSSNumericValue h, CSSNumberish w, CSSNumberish b, optional CSSNumberish alpha = 1); + attribute CSSNumericValue h; + attribute CSSNumberish w; + attribute CSSNumberish b; + attribute CSSNumberish alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSLab : CSSColorValue { + constructor(CSSColorPercent l, CSSColorNumber a, CSSColorNumber b, optional CSSColorPercent alpha = 1); + attribute CSSColorPercent l; + attribute CSSColorNumber a; + attribute CSSColorNumber b; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSLCH : CSSColorValue { + constructor(CSSColorPercent l, CSSColorPercent c, CSSColorAngle h, optional CSSColorPercent alpha = 1); + attribute CSSColorPercent l; + attribute CSSColorPercent c; + attribute CSSColorAngle h; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSOKLab : CSSColorValue { + constructor(CSSColorPercent l, CSSColorNumber a, CSSColorNumber b, optional CSSColorPercent alpha = 1); + attribute CSSColorPercent l; + attribute CSSColorNumber a; + attribute CSSColorNumber b; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSOKLCH : CSSColorValue { + constructor(CSSColorPercent l, CSSColorPercent c, CSSColorAngle h, optional CSSColorPercent alpha = 1); + attribute CSSColorPercent l; + attribute CSSColorPercent c; + attribute CSSColorAngle h; + attribute CSSColorPercent alpha; +}; + +[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)] +interface CSSColor : CSSColorValue { + constructor(CSSKeywordish colorSpace, sequence<CSSColorPercent> channels, optional CSSNumberish alpha = 1); + attribute CSSKeywordish colorSpace; + attribute ObservableArray<CSSColorPercent> channels; + attribute CSSNumberish alpha; +}; diff --git a/testing/web-platform/tests/interfaces/css-view-transitions.idl b/testing/web-platform/tests/interfaces/css-view-transitions.idl new file mode 100644 index 0000000000..c7ac9f336c --- /dev/null +++ b/testing/web-platform/tests/interfaces/css-view-transitions.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS View Transitions Module Level 1 (https://drafts.csswg.org/css-view-transitions-1/) + +partial interface Document { + ViewTransition startViewTransition(optional UpdateDOMCallback? callback = null); +}; + +callback UpdateDOMCallback = Promise<any> (); + +[Exposed=Window] +interface ViewTransition { + undefined skipTransition(); + readonly attribute Promise<undefined> finished; + readonly attribute Promise<undefined> ready; + readonly attribute Promise<undefined> domUpdated; +}; diff --git a/testing/web-platform/tests/interfaces/cssom-view.idl b/testing/web-platform/tests/interfaces/cssom-view.idl new file mode 100644 index 0000000000..2046b38533 --- /dev/null +++ b/testing/web-platform/tests/interfaces/cssom-view.idl @@ -0,0 +1,200 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSSOM View Module (https://drafts.csswg.org/cssom-view-1/) + +enum ScrollBehavior { "auto", "smooth" }; + +dictionary ScrollOptions { + ScrollBehavior behavior = "auto"; +}; +dictionary ScrollToOptions : ScrollOptions { + unrestricted double left; + unrestricted double top; +}; + +partial interface Window { + [NewObject] MediaQueryList matchMedia(CSSOMString query); + [SameObject, Replaceable] readonly attribute Screen screen; + [SameObject, Replaceable] readonly attribute VisualViewport? visualViewport; + + // browsing context + undefined moveTo(long x, long y); + undefined moveBy(long x, long y); + undefined resizeTo(long width, long height); + undefined resizeBy(long x, long y); + + // viewport + [Replaceable] readonly attribute long innerWidth; + [Replaceable] readonly attribute long innerHeight; + + // viewport scrolling + [Replaceable] readonly attribute double scrollX; + [Replaceable] readonly attribute double pageXOffset; + [Replaceable] readonly attribute double scrollY; + [Replaceable] readonly attribute double pageYOffset; + undefined scroll(optional ScrollToOptions options = {}); + undefined scroll(unrestricted double x, unrestricted double y); + undefined scrollTo(optional ScrollToOptions options = {}); + undefined scrollTo(unrestricted double x, unrestricted double y); + undefined scrollBy(optional ScrollToOptions options = {}); + undefined scrollBy(unrestricted double x, unrestricted double y); + + // client + [Replaceable] readonly attribute long screenX; + [Replaceable] readonly attribute long screenLeft; + [Replaceable] readonly attribute long screenY; + [Replaceable] readonly attribute long screenTop; + [Replaceable] readonly attribute long outerWidth; + [Replaceable] readonly attribute long outerHeight; + [Replaceable] readonly attribute double devicePixelRatio; +}; + +[Exposed=Window] +interface MediaQueryList : EventTarget { + readonly attribute CSSOMString media; + readonly attribute boolean matches; + undefined addListener(EventListener? callback); + undefined removeListener(EventListener? callback); + attribute EventHandler onchange; +}; + +[Exposed=Window] +interface MediaQueryListEvent : Event { + constructor(CSSOMString type, optional MediaQueryListEventInit eventInitDict = {}); + readonly attribute CSSOMString media; + readonly attribute boolean matches; +}; + +dictionary MediaQueryListEventInit : EventInit { + CSSOMString media = ""; + boolean matches = false; +}; + +[Exposed=Window] +interface Screen { + readonly attribute long availWidth; + readonly attribute long availHeight; + readonly attribute long width; + readonly attribute long height; + readonly attribute unsigned long colorDepth; + readonly attribute unsigned long pixelDepth; +}; + +partial interface Document { + Element? elementFromPoint(double x, double y); + sequence<Element> elementsFromPoint(double x, double y); + CaretPosition? caretPositionFromPoint(double x, double y); + readonly attribute Element? scrollingElement; +}; + +[Exposed=Window] +interface CaretPosition { + readonly attribute Node offsetNode; + readonly attribute unsigned long offset; + [NewObject] DOMRect? getClientRect(); +}; + +enum ScrollLogicalPosition { "start", "center", "end", "nearest" }; +dictionary ScrollIntoViewOptions : ScrollOptions { + ScrollLogicalPosition block = "start"; + ScrollLogicalPosition inline = "nearest"; +}; + +dictionary CheckVisibilityOptions { + boolean checkOpacity = false; + boolean checkVisibilityCSS = false; +}; + +partial interface Element { + DOMRectList getClientRects(); + [NewObject] DOMRect getBoundingClientRect(); + + boolean checkVisibility(optional CheckVisibilityOptions options = {}); + + undefined scrollIntoView(optional (boolean or ScrollIntoViewOptions) arg = {}); + undefined scroll(optional ScrollToOptions options = {}); + undefined scroll(unrestricted double x, unrestricted double y); + undefined scrollTo(optional ScrollToOptions options = {}); + undefined scrollTo(unrestricted double x, unrestricted double y); + undefined scrollBy(optional ScrollToOptions options = {}); + undefined scrollBy(unrestricted double x, unrestricted double y); + attribute unrestricted double scrollTop; + attribute unrestricted double scrollLeft; + readonly attribute long scrollWidth; + readonly attribute long scrollHeight; + readonly attribute long clientTop; + readonly attribute long clientLeft; + readonly attribute long clientWidth; + readonly attribute long clientHeight; +}; + +partial interface HTMLElement { + readonly attribute Element? offsetParent; + readonly attribute long offsetTop; + readonly attribute long offsetLeft; + readonly attribute long offsetWidth; + readonly attribute long offsetHeight; +}; + +partial interface HTMLImageElement { + readonly attribute long x; + readonly attribute long y; +}; + +partial interface Range { + DOMRectList getClientRects(); + [NewObject] DOMRect getBoundingClientRect(); +}; + +partial interface MouseEvent { + readonly attribute double pageX; + readonly attribute double pageY; + readonly attribute double x; + readonly attribute double y; + readonly attribute double offsetX; + readonly attribute double offsetY; +}; + +enum CSSBoxType { "margin", "border", "padding", "content" }; +dictionary BoxQuadOptions { + CSSBoxType box = "border"; + GeometryNode relativeTo; // XXX default document (i.e. viewport) +}; + +dictionary ConvertCoordinateOptions { + CSSBoxType fromBox = "border"; + CSSBoxType toBox = "border"; +}; + +interface mixin GeometryUtils { + sequence<DOMQuad> getBoxQuads(optional BoxQuadOptions options = {}); + DOMQuad convertQuadFromNode(DOMQuadInit quad, GeometryNode from, optional ConvertCoordinateOptions options = {}); + DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options = {}); + DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options = {}); // XXX z,w turns into 0 +}; + +Text includes GeometryUtils; // like Range +Element includes GeometryUtils; +CSSPseudoElement includes GeometryUtils; +Document includes GeometryUtils; + +typedef (Text or Element or CSSPseudoElement or Document) GeometryNode; + +[Exposed=Window] +interface VisualViewport : EventTarget { + readonly attribute double offsetLeft; + readonly attribute double offsetTop; + + readonly attribute double pageLeft; + readonly attribute double pageTop; + + readonly attribute double width; + readonly attribute double height; + + readonly attribute double scale; + + attribute EventHandler onresize; + attribute EventHandler onscroll; + attribute EventHandler onscrollend; +}; diff --git a/testing/web-platform/tests/interfaces/cssom.idl b/testing/web-platform/tests/interfaces/cssom.idl new file mode 100644 index 0000000000..222b3dc09e --- /dev/null +++ b/testing/web-platform/tests/interfaces/cssom.idl @@ -0,0 +1,167 @@ +// GENERATED PREAMBLE - DO NOT EDIT +// CSSOMString is an implementation-defined type of either DOMString or +// USVString in CSSOM: https://drafts.csswg.org/cssom/#cssomstring-type +// For web-platform-tests, use DOMString because USVString has additional +// requirements in type conversion and could result in spurious failures for +// implementations that use DOMString. +typedef DOMString CSSOMString; + +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: CSS Object Model (CSSOM) (https://drafts.csswg.org/cssom-1/) + +[Exposed=Window] +interface MediaList { + stringifier attribute [LegacyNullToEmptyString] CSSOMString mediaText; + readonly attribute unsigned long length; + getter CSSOMString? item(unsigned long index); + undefined appendMedium(CSSOMString medium); + undefined deleteMedium(CSSOMString medium); +}; + +[Exposed=Window] +interface StyleSheet { + readonly attribute CSSOMString type; + readonly attribute USVString? href; + readonly attribute (Element or ProcessingInstruction)? ownerNode; + readonly attribute CSSStyleSheet? parentStyleSheet; + readonly attribute DOMString? title; + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; + attribute boolean disabled; +}; + +[Exposed=Window] +interface CSSStyleSheet : StyleSheet { + constructor(optional CSSStyleSheetInit options = {}); + + readonly attribute CSSRule? ownerRule; + [SameObject] readonly attribute CSSRuleList cssRules; + unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); + undefined deleteRule(unsigned long index); + + Promise<CSSStyleSheet> replace(USVString text); + undefined replaceSync(USVString text); +}; + +dictionary CSSStyleSheetInit { + DOMString baseURL = null; + (MediaList or DOMString) media = ""; + boolean disabled = false; +}; + +partial interface CSSStyleSheet { + [SameObject] readonly attribute CSSRuleList rules; + long addRule(optional DOMString selector = "undefined", optional DOMString style = "undefined", optional unsigned long index); + undefined removeRule(optional unsigned long index = 0); +}; + +[Exposed=Window] +interface StyleSheetList { + getter CSSStyleSheet? item(unsigned long index); + readonly attribute unsigned long length; +}; + +partial interface mixin DocumentOrShadowRoot { + [SameObject] readonly attribute StyleSheetList styleSheets; + attribute ObservableArray<CSSStyleSheet> adoptedStyleSheets; +}; + +interface mixin LinkStyle { + readonly attribute CSSStyleSheet? sheet; +}; + +ProcessingInstruction includes LinkStyle; +[Exposed=Window] +interface CSSRuleList { + getter CSSRule? item(unsigned long index); + readonly attribute unsigned long length; +}; + +[Exposed=Window] +interface CSSRule { + attribute CSSOMString cssText; + readonly attribute CSSRule? parentRule; + readonly attribute CSSStyleSheet? parentStyleSheet; + + // the following attribute and constants are historical + readonly attribute unsigned short type; + const unsigned short STYLE_RULE = 1; + const unsigned short CHARSET_RULE = 2; + const unsigned short IMPORT_RULE = 3; + const unsigned short MEDIA_RULE = 4; + const unsigned short FONT_FACE_RULE = 5; + const unsigned short PAGE_RULE = 6; + const unsigned short MARGIN_RULE = 9; + const unsigned short NAMESPACE_RULE = 10; +}; + +[Exposed=Window] +interface CSSStyleRule : CSSRule { + attribute CSSOMString selectorText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +[Exposed=Window] +interface CSSImportRule : CSSRule { + readonly attribute USVString href; + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; + [SameObject] readonly attribute CSSStyleSheet styleSheet; +}; + +[Exposed=Window] +interface CSSGroupingRule : CSSRule { + [SameObject] readonly attribute CSSRuleList cssRules; + unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); + undefined deleteRule(unsigned long index); +}; + +[Exposed=Window] +interface CSSPageRule : CSSGroupingRule { + attribute CSSOMString selectorText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +[Exposed=Window] +interface CSSMarginRule : CSSRule { + readonly attribute CSSOMString name; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +[Exposed=Window] +interface CSSNamespaceRule : CSSRule { + readonly attribute CSSOMString namespaceURI; + readonly attribute CSSOMString prefix; +}; + +[Exposed=Window] +interface CSSStyleDeclaration { + [CEReactions] attribute CSSOMString cssText; + readonly attribute unsigned long length; + getter CSSOMString item(unsigned long index); + CSSOMString getPropertyValue(CSSOMString property); + CSSOMString getPropertyPriority(CSSOMString property); + [CEReactions] undefined setProperty(CSSOMString property, [LegacyNullToEmptyString] CSSOMString value, optional [LegacyNullToEmptyString] CSSOMString priority = ""); + [CEReactions] CSSOMString removeProperty(CSSOMString property); + readonly attribute CSSRule? parentRule; + [CEReactions] attribute [LegacyNullToEmptyString] CSSOMString cssFloat; +}; + +interface mixin ElementCSSInlineStyle { + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +}; + +HTMLElement includes ElementCSSInlineStyle; + +SVGElement includes ElementCSSInlineStyle; + +MathMLElement includes ElementCSSInlineStyle; + +partial interface Window { + [NewObject] CSSStyleDeclaration getComputedStyle(Element elt, optional CSSOMString? pseudoElt); +}; + +[Exposed=Window] +namespace CSS { + CSSOMString escape(CSSOMString ident); +}; diff --git a/testing/web-platform/tests/interfaces/custom-state-pseudo-class.idl b/testing/web-platform/tests/interfaces/custom-state-pseudo-class.idl new file mode 100644 index 0000000000..342f1ede0b --- /dev/null +++ b/testing/web-platform/tests/interfaces/custom-state-pseudo-class.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Custom State Pseudo Class (https://wicg.github.io/custom-state-pseudo-class/) + +partial interface ElementInternals { + readonly attribute CustomStateSet states; +}; + +[Exposed=Window] +interface CustomStateSet { + setlike<DOMString>; + undefined add(DOMString value); +}; diff --git a/testing/web-platform/tests/interfaces/datacue.idl b/testing/web-platform/tests/interfaces/datacue.idl new file mode 100644 index 0000000000..f84d6e9b5f --- /dev/null +++ b/testing/web-platform/tests/interfaces/datacue.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: DataCue API (https://wicg.github.io/datacue/) + +[Exposed=Window] +interface DataCue : TextTrackCue { + constructor(double startTime, unrestricted double endTime, + any value, optional DOMString type); + attribute any value; + readonly attribute DOMString type; +}; diff --git a/testing/web-platform/tests/interfaces/deprecation-reporting.idl b/testing/web-platform/tests/interfaces/deprecation-reporting.idl new file mode 100644 index 0000000000..4cf76ba811 --- /dev/null +++ b/testing/web-platform/tests/interfaces/deprecation-reporting.idl @@ -0,0 +1,15 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Deprecation Reporting (https://wicg.github.io/deprecation-reporting/) + +[Exposed=(Window,Worker)] +interface DeprecationReportBody : ReportBody { + [Default] object toJSON(); + readonly attribute DOMString id; + readonly attribute object? anticipatedRemoval; + readonly attribute DOMString message; + readonly attribute DOMString? sourceFile; + readonly attribute unsigned long? lineNumber; + readonly attribute unsigned long? columnNumber; +}; diff --git a/testing/web-platform/tests/interfaces/device-memory.idl b/testing/web-platform/tests/interfaces/device-memory.idl new file mode 100644 index 0000000000..e8197e8497 --- /dev/null +++ b/testing/web-platform/tests/interfaces/device-memory.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Device Memory (https://www.w3.org/TR/device-memory/) + +[ + SecureContext, + Exposed=(Window,Worker) +] interface mixin NavigatorDeviceMemory { + readonly attribute double deviceMemory; +}; + +Navigator includes NavigatorDeviceMemory; +WorkerNavigator includes NavigatorDeviceMemory; diff --git a/testing/web-platform/tests/interfaces/device-posture.idl b/testing/web-platform/tests/interfaces/device-posture.idl new file mode 100644 index 0000000000..ba8f9f51f0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/device-posture.idl @@ -0,0 +1,21 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Device Posture API (https://w3c.github.io/device-posture/) + +[SecureContext, Exposed=(Window)] +partial interface Navigator { + [SameObject] readonly attribute DevicePosture devicePosture; +}; + +[SecureContext, Exposed=(Window)] +interface DevicePosture : EventTarget { + readonly attribute DevicePostureType type; + attribute EventHandler onchange; +}; + +enum DevicePostureType { + "continuous", + "folded", + "folded-over" +}; diff --git a/testing/web-platform/tests/interfaces/digital-goods.idl b/testing/web-platform/tests/interfaces/digital-goods.idl new file mode 100644 index 0000000000..38cedac40c --- /dev/null +++ b/testing/web-platform/tests/interfaces/digital-goods.idl @@ -0,0 +1,44 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Digital Goods API (https://wicg.github.io/digital-goods/) + +partial interface Window { + [SecureContext] Promise<DigitalGoodsService> getDigitalGoodsService( + DOMString serviceProvider); +}; + +[Exposed=Window, SecureContext] interface DigitalGoodsService { + + Promise<sequence<ItemDetails>> getDetails(sequence<DOMString> itemIds); + + Promise<sequence<PurchaseDetails>> listPurchases(); + + Promise<sequence<PurchaseDetails>> listPurchaseHistory(); + + Promise<undefined> consume(DOMString purchaseToken); +}; + +dictionary ItemDetails { + required DOMString itemId; + required DOMString title; + required PaymentCurrencyAmount price; + ItemType type; + DOMString description; + sequence<DOMString> iconURLs; + DOMString subscriptionPeriod; + DOMString freeTrialPeriod; + PaymentCurrencyAmount introductoryPrice; + DOMString introductoryPricePeriod; + [EnforceRange] unsigned long long introductoryPriceCycles; +}; + +enum ItemType { + "product", + "subscription", +}; + +dictionary PurchaseDetails { + required DOMString itemId; + required DOMString purchaseToken; +}; diff --git a/testing/web-platform/tests/interfaces/dom.idl b/testing/web-platform/tests/interfaces/dom.idl new file mode 100644 index 0000000000..96acfc6a71 --- /dev/null +++ b/testing/web-platform/tests/interfaces/dom.idl @@ -0,0 +1,645 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: DOM Standard (https://dom.spec.whatwg.org/) + +[Exposed=*] +interface Event { + constructor(DOMString type, optional EventInit eventInitDict = {}); + + readonly attribute DOMString type; + readonly attribute EventTarget? target; + readonly attribute EventTarget? srcElement; // legacy + readonly attribute EventTarget? currentTarget; + sequence<EventTarget> composedPath(); + + const unsigned short NONE = 0; + const unsigned short CAPTURING_PHASE = 1; + const unsigned short AT_TARGET = 2; + const unsigned short BUBBLING_PHASE = 3; + readonly attribute unsigned short eventPhase; + + undefined stopPropagation(); + attribute boolean cancelBubble; // legacy alias of .stopPropagation() + undefined stopImmediatePropagation(); + + readonly attribute boolean bubbles; + readonly attribute boolean cancelable; + attribute boolean returnValue; // legacy + undefined preventDefault(); + readonly attribute boolean defaultPrevented; + readonly attribute boolean composed; + + [LegacyUnforgeable] readonly attribute boolean isTrusted; + readonly attribute DOMHighResTimeStamp timeStamp; + + undefined initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); // legacy +}; + +dictionary EventInit { + boolean bubbles = false; + boolean cancelable = false; + boolean composed = false; +}; + +partial interface Window { + [Replaceable] readonly attribute (Event or undefined) event; // legacy +}; + +[Exposed=*] +interface CustomEvent : Event { + constructor(DOMString type, optional CustomEventInit eventInitDict = {}); + + readonly attribute any detail; + + undefined initCustomEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any detail = null); // legacy +}; + +dictionary CustomEventInit : EventInit { + any detail = null; +}; + +[Exposed=*] +interface EventTarget { + constructor(); + + undefined addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options = {}); + undefined removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options = {}); + boolean dispatchEvent(Event event); +}; + +callback interface EventListener { + undefined handleEvent(Event event); +}; + +dictionary EventListenerOptions { + boolean capture = false; +}; + +dictionary AddEventListenerOptions : EventListenerOptions { + boolean passive; + boolean once = false; + AbortSignal signal; +}; + +[Exposed=*] +interface AbortController { + constructor(); + + [SameObject] readonly attribute AbortSignal signal; + + undefined abort(optional any reason); +}; + +[Exposed=*] +interface AbortSignal : EventTarget { + [NewObject] static AbortSignal abort(optional any reason); + [Exposed=(Window,Worker), NewObject] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds); + + readonly attribute boolean aborted; + readonly attribute any reason; + undefined throwIfAborted(); + + attribute EventHandler onabort; +}; +interface mixin NonElementParentNode { + Element? getElementById(DOMString elementId); +}; +Document includes NonElementParentNode; +DocumentFragment includes NonElementParentNode; + +interface mixin DocumentOrShadowRoot { +}; +Document includes DocumentOrShadowRoot; +ShadowRoot includes DocumentOrShadowRoot; + +interface mixin ParentNode { + [SameObject] readonly attribute HTMLCollection children; + readonly attribute Element? firstElementChild; + readonly attribute Element? lastElementChild; + readonly attribute unsigned long childElementCount; + + [CEReactions, Unscopable] undefined prepend((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined append((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined replaceChildren((Node or DOMString)... nodes); + + Element? querySelector(DOMString selectors); + [NewObject] NodeList querySelectorAll(DOMString selectors); +}; +Document includes ParentNode; +DocumentFragment includes ParentNode; +Element includes ParentNode; + +interface mixin NonDocumentTypeChildNode { + readonly attribute Element? previousElementSibling; + readonly attribute Element? nextElementSibling; +}; +Element includes NonDocumentTypeChildNode; +CharacterData includes NonDocumentTypeChildNode; + +interface mixin ChildNode { + [CEReactions, Unscopable] undefined before((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined after((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined replaceWith((Node or DOMString)... nodes); + [CEReactions, Unscopable] undefined remove(); +}; +DocumentType includes ChildNode; +Element includes ChildNode; +CharacterData includes ChildNode; + +interface mixin Slottable { + readonly attribute HTMLSlotElement? assignedSlot; +}; +Element includes Slottable; +Text includes Slottable; + +[Exposed=Window] +interface NodeList { + getter Node? item(unsigned long index); + readonly attribute unsigned long length; + iterable<Node>; +}; + +[Exposed=Window, LegacyUnenumerableNamedProperties] +interface HTMLCollection { + readonly attribute unsigned long length; + getter Element? item(unsigned long index); + getter Element? namedItem(DOMString name); +}; + +[Exposed=Window] +interface MutationObserver { + constructor(MutationCallback callback); + + undefined observe(Node target, optional MutationObserverInit options = {}); + undefined disconnect(); + sequence<MutationRecord> takeRecords(); +}; + +callback MutationCallback = undefined (sequence<MutationRecord> mutations, MutationObserver observer); + +dictionary MutationObserverInit { + boolean childList = false; + boolean attributes; + boolean characterData; + boolean subtree = false; + boolean attributeOldValue; + boolean characterDataOldValue; + sequence<DOMString> attributeFilter; +}; + +[Exposed=Window] +interface MutationRecord { + readonly attribute DOMString type; + [SameObject] readonly attribute Node target; + [SameObject] readonly attribute NodeList addedNodes; + [SameObject] readonly attribute NodeList removedNodes; + readonly attribute Node? previousSibling; + readonly attribute Node? nextSibling; + readonly attribute DOMString? attributeName; + readonly attribute DOMString? attributeNamespace; + readonly attribute DOMString? oldValue; +}; + +[Exposed=Window] +interface Node : EventTarget { + const unsigned short ELEMENT_NODE = 1; + const unsigned short ATTRIBUTE_NODE = 2; + const unsigned short TEXT_NODE = 3; + const unsigned short CDATA_SECTION_NODE = 4; + const unsigned short ENTITY_REFERENCE_NODE = 5; // legacy + const unsigned short ENTITY_NODE = 6; // legacy + const unsigned short PROCESSING_INSTRUCTION_NODE = 7; + const unsigned short COMMENT_NODE = 8; + const unsigned short DOCUMENT_NODE = 9; + const unsigned short DOCUMENT_TYPE_NODE = 10; + const unsigned short DOCUMENT_FRAGMENT_NODE = 11; + const unsigned short NOTATION_NODE = 12; // legacy + readonly attribute unsigned short nodeType; + readonly attribute DOMString nodeName; + + readonly attribute USVString baseURI; + + readonly attribute boolean isConnected; + readonly attribute Document? ownerDocument; + Node getRootNode(optional GetRootNodeOptions options = {}); + readonly attribute Node? parentNode; + readonly attribute Element? parentElement; + boolean hasChildNodes(); + [SameObject] readonly attribute NodeList childNodes; + readonly attribute Node? firstChild; + readonly attribute Node? lastChild; + readonly attribute Node? previousSibling; + readonly attribute Node? nextSibling; + + [CEReactions] attribute DOMString? nodeValue; + [CEReactions] attribute DOMString? textContent; + [CEReactions] undefined normalize(); + + [CEReactions, NewObject] Node cloneNode(optional boolean deep = false); + boolean isEqualNode(Node? otherNode); + boolean isSameNode(Node? otherNode); // legacy alias of === + + const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01; + const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02; + const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04; + const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08; + const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10; + const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; + unsigned short compareDocumentPosition(Node other); + boolean contains(Node? other); + + DOMString? lookupPrefix(DOMString? namespace); + DOMString? lookupNamespaceURI(DOMString? prefix); + boolean isDefaultNamespace(DOMString? namespace); + + [CEReactions] Node insertBefore(Node node, Node? child); + [CEReactions] Node appendChild(Node node); + [CEReactions] Node replaceChild(Node node, Node child); + [CEReactions] Node removeChild(Node child); +}; + +dictionary GetRootNodeOptions { + boolean composed = false; +}; + +[Exposed=Window] +interface Document : Node { + constructor(); + + [SameObject] readonly attribute DOMImplementation implementation; + readonly attribute USVString URL; + readonly attribute USVString documentURI; + readonly attribute DOMString compatMode; + readonly attribute DOMString characterSet; + readonly attribute DOMString charset; // legacy alias of .characterSet + readonly attribute DOMString inputEncoding; // legacy alias of .characterSet + readonly attribute DOMString contentType; + + readonly attribute DocumentType? doctype; + readonly attribute Element? documentElement; + HTMLCollection getElementsByTagName(DOMString qualifiedName); + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + HTMLCollection getElementsByClassName(DOMString classNames); + + [CEReactions, NewObject] Element createElement(DOMString localName, optional (DOMString or ElementCreationOptions) options = {}); + [CEReactions, NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional (DOMString or ElementCreationOptions) options = {}); + [NewObject] DocumentFragment createDocumentFragment(); + [NewObject] Text createTextNode(DOMString data); + [NewObject] CDATASection createCDATASection(DOMString data); + [NewObject] Comment createComment(DOMString data); + [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); + + [CEReactions, NewObject] Node importNode(Node node, optional boolean deep = false); + [CEReactions] Node adoptNode(Node node); + + [NewObject] Attr createAttribute(DOMString localName); + [NewObject] Attr createAttributeNS(DOMString? namespace, DOMString qualifiedName); + + [NewObject] Event createEvent(DOMString interface); // legacy + + [NewObject] Range createRange(); + + // NodeFilter.SHOW_ALL = 0xFFFFFFFF + [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); + [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null); +}; + +[Exposed=Window] +interface XMLDocument : Document {}; + +dictionary ElementCreationOptions { + DOMString is; +}; + +[Exposed=Window] +interface DOMImplementation { + [NewObject] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId); + [NewObject] XMLDocument createDocument(DOMString? namespace, [LegacyNullToEmptyString] DOMString qualifiedName, optional DocumentType? doctype = null); + [NewObject] Document createHTMLDocument(optional DOMString title); + + boolean hasFeature(); // useless; always returns true +}; + +[Exposed=Window] +interface DocumentType : Node { + readonly attribute DOMString name; + readonly attribute DOMString publicId; + readonly attribute DOMString systemId; +}; + +[Exposed=Window] +interface DocumentFragment : Node { + constructor(); +}; + +[Exposed=Window] +interface ShadowRoot : DocumentFragment { + readonly attribute ShadowRootMode mode; + readonly attribute boolean delegatesFocus; + readonly attribute SlotAssignmentMode slotAssignment; + readonly attribute Element host; + attribute EventHandler onslotchange; +}; + +enum ShadowRootMode { "open", "closed" }; +enum SlotAssignmentMode { "manual", "named" }; + +[Exposed=Window] +interface Element : Node { + readonly attribute DOMString? namespaceURI; + readonly attribute DOMString? prefix; + readonly attribute DOMString localName; + readonly attribute DOMString tagName; + + [CEReactions] attribute DOMString id; + [CEReactions] attribute DOMString className; + [SameObject, PutForwards=value] readonly attribute DOMTokenList classList; + [CEReactions, Unscopable] attribute DOMString slot; + + boolean hasAttributes(); + [SameObject] readonly attribute NamedNodeMap attributes; + sequence<DOMString> getAttributeNames(); + DOMString? getAttribute(DOMString qualifiedName); + DOMString? getAttributeNS(DOMString? namespace, DOMString localName); + [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value); + [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value); + [CEReactions] undefined removeAttribute(DOMString qualifiedName); + [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName); + [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force); + boolean hasAttribute(DOMString qualifiedName); + boolean hasAttributeNS(DOMString? namespace, DOMString localName); + + Attr? getAttributeNode(DOMString qualifiedName); + Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName); + [CEReactions] Attr? setAttributeNode(Attr attr); + [CEReactions] Attr? setAttributeNodeNS(Attr attr); + [CEReactions] Attr removeAttributeNode(Attr attr); + + ShadowRoot attachShadow(ShadowRootInit init); + readonly attribute ShadowRoot? shadowRoot; + + Element? closest(DOMString selectors); + boolean matches(DOMString selectors); + boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches + + HTMLCollection getElementsByTagName(DOMString qualifiedName); + HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName); + HTMLCollection getElementsByClassName(DOMString classNames); + + [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy + undefined insertAdjacentText(DOMString where, DOMString data); // legacy +}; + +dictionary ShadowRootInit { + required ShadowRootMode mode; + boolean delegatesFocus = false; + SlotAssignmentMode slotAssignment = "named"; +}; + +[Exposed=Window, + LegacyUnenumerableNamedProperties] +interface NamedNodeMap { + readonly attribute unsigned long length; + getter Attr? item(unsigned long index); + getter Attr? getNamedItem(DOMString qualifiedName); + Attr? getNamedItemNS(DOMString? namespace, DOMString localName); + [CEReactions] Attr? setNamedItem(Attr attr); + [CEReactions] Attr? setNamedItemNS(Attr attr); + [CEReactions] Attr removeNamedItem(DOMString qualifiedName); + [CEReactions] Attr removeNamedItemNS(DOMString? namespace, DOMString localName); +}; + +[Exposed=Window] +interface Attr : Node { + readonly attribute DOMString? namespaceURI; + readonly attribute DOMString? prefix; + readonly attribute DOMString localName; + readonly attribute DOMString name; + [CEReactions] attribute DOMString value; + + readonly attribute Element? ownerElement; + + readonly attribute boolean specified; // useless; always returns true +}; +[Exposed=Window] +interface CharacterData : Node { + attribute [LegacyNullToEmptyString] DOMString data; + readonly attribute unsigned long length; + DOMString substringData(unsigned long offset, unsigned long count); + undefined appendData(DOMString data); + undefined insertData(unsigned long offset, DOMString data); + undefined deleteData(unsigned long offset, unsigned long count); + undefined replaceData(unsigned long offset, unsigned long count, DOMString data); +}; + +[Exposed=Window] +interface Text : CharacterData { + constructor(optional DOMString data = ""); + + [NewObject] Text splitText(unsigned long offset); + readonly attribute DOMString wholeText; +}; + +[Exposed=Window] +interface CDATASection : Text { +}; +[Exposed=Window] +interface ProcessingInstruction : CharacterData { + readonly attribute DOMString target; +}; +[Exposed=Window] +interface Comment : CharacterData { + constructor(optional DOMString data = ""); +}; + +[Exposed=Window] +interface AbstractRange { + readonly attribute Node startContainer; + readonly attribute unsigned long startOffset; + readonly attribute Node endContainer; + readonly attribute unsigned long endOffset; + readonly attribute boolean collapsed; +}; + +dictionary StaticRangeInit { + required Node startContainer; + required unsigned long startOffset; + required Node endContainer; + required unsigned long endOffset; +}; + +[Exposed=Window] +interface StaticRange : AbstractRange { + constructor(StaticRangeInit init); +}; + +[Exposed=Window] +interface Range : AbstractRange { + constructor(); + + readonly attribute Node commonAncestorContainer; + + undefined setStart(Node node, unsigned long offset); + undefined setEnd(Node node, unsigned long offset); + undefined setStartBefore(Node node); + undefined setStartAfter(Node node); + undefined setEndBefore(Node node); + undefined setEndAfter(Node node); + undefined collapse(optional boolean toStart = false); + undefined selectNode(Node node); + undefined selectNodeContents(Node node); + + const unsigned short START_TO_START = 0; + const unsigned short START_TO_END = 1; + const unsigned short END_TO_END = 2; + const unsigned short END_TO_START = 3; + short compareBoundaryPoints(unsigned short how, Range sourceRange); + + [CEReactions] undefined deleteContents(); + [CEReactions, NewObject] DocumentFragment extractContents(); + [CEReactions, NewObject] DocumentFragment cloneContents(); + [CEReactions] undefined insertNode(Node node); + [CEReactions] undefined surroundContents(Node newParent); + + [NewObject] Range cloneRange(); + undefined detach(); + + boolean isPointInRange(Node node, unsigned long offset); + short comparePoint(Node node, unsigned long offset); + + boolean intersectsNode(Node node); + + stringifier; +}; + +[Exposed=Window] +interface NodeIterator { + [SameObject] readonly attribute Node root; + readonly attribute Node referenceNode; + readonly attribute boolean pointerBeforeReferenceNode; + readonly attribute unsigned long whatToShow; + readonly attribute NodeFilter? filter; + + Node? nextNode(); + Node? previousNode(); + + undefined detach(); +}; + +[Exposed=Window] +interface TreeWalker { + [SameObject] readonly attribute Node root; + readonly attribute unsigned long whatToShow; + readonly attribute NodeFilter? filter; + attribute Node currentNode; + + Node? parentNode(); + Node? firstChild(); + Node? lastChild(); + Node? previousSibling(); + Node? nextSibling(); + Node? previousNode(); + Node? nextNode(); +}; +[Exposed=Window] +callback interface NodeFilter { + // Constants for acceptNode() + const unsigned short FILTER_ACCEPT = 1; + const unsigned short FILTER_REJECT = 2; + const unsigned short FILTER_SKIP = 3; + + // Constants for whatToShow + const unsigned long SHOW_ALL = 0xFFFFFFFF; + const unsigned long SHOW_ELEMENT = 0x1; + const unsigned long SHOW_ATTRIBUTE = 0x2; + const unsigned long SHOW_TEXT = 0x4; + const unsigned long SHOW_CDATA_SECTION = 0x8; + const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // legacy + const unsigned long SHOW_ENTITY = 0x20; // legacy + const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; + const unsigned long SHOW_COMMENT = 0x80; + const unsigned long SHOW_DOCUMENT = 0x100; + const unsigned long SHOW_DOCUMENT_TYPE = 0x200; + const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400; + const unsigned long SHOW_NOTATION = 0x800; // legacy + + unsigned short acceptNode(Node node); +}; + +[Exposed=Window] +interface DOMTokenList { + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + boolean contains(DOMString token); + [CEReactions] undefined add(DOMString... tokens); + [CEReactions] undefined remove(DOMString... tokens); + [CEReactions] boolean toggle(DOMString token, optional boolean force); + [CEReactions] boolean replace(DOMString token, DOMString newToken); + boolean supports(DOMString token); + [CEReactions] stringifier attribute DOMString value; + iterable<DOMString>; +}; + +[Exposed=Window] +interface XPathResult { + const unsigned short ANY_TYPE = 0; + const unsigned short NUMBER_TYPE = 1; + const unsigned short STRING_TYPE = 2; + const unsigned short BOOLEAN_TYPE = 3; + const unsigned short UNORDERED_NODE_ITERATOR_TYPE = 4; + const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5; + const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6; + const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7; + const unsigned short ANY_UNORDERED_NODE_TYPE = 8; + const unsigned short FIRST_ORDERED_NODE_TYPE = 9; + + readonly attribute unsigned short resultType; + readonly attribute unrestricted double numberValue; + readonly attribute DOMString stringValue; + readonly attribute boolean booleanValue; + readonly attribute Node? singleNodeValue; + readonly attribute boolean invalidIteratorState; + readonly attribute unsigned long snapshotLength; + + Node? iterateNext(); + Node? snapshotItem(unsigned long index); +}; + +[Exposed=Window] +interface XPathExpression { + // XPathResult.ANY_TYPE = 0 + XPathResult evaluate(Node contextNode, optional unsigned short type = 0, optional XPathResult? result = null); +}; + +callback interface XPathNSResolver { + DOMString? lookupNamespaceURI(DOMString? prefix); +}; + +interface mixin XPathEvaluatorBase { + [NewObject] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null); + XPathNSResolver createNSResolver(Node nodeResolver); + // XPathResult.ANY_TYPE = 0 + XPathResult evaluate(DOMString expression, Node contextNode, optional XPathNSResolver? resolver = null, optional unsigned short type = 0, optional XPathResult? result = null); +}; +Document includes XPathEvaluatorBase; + +[Exposed=Window] +interface XPathEvaluator { + constructor(); +}; + +XPathEvaluator includes XPathEvaluatorBase; + +[Exposed=Window] +interface XSLTProcessor { + constructor(); + undefined importStylesheet(Node style); + [CEReactions] DocumentFragment transformToFragment(Node source, Document output); + [CEReactions] Document transformToDocument(Node source); + undefined setParameter([LegacyNullToEmptyString] DOMString namespaceURI, DOMString localName, any value); + any getParameter([LegacyNullToEmptyString] DOMString namespaceURI, DOMString localName); + undefined removeParameter([LegacyNullToEmptyString] DOMString namespaceURI, DOMString localName); + undefined clearParameters(); + undefined reset(); +}; diff --git a/testing/web-platform/tests/interfaces/edit-context.idl b/testing/web-platform/tests/interfaces/edit-context.idl new file mode 100644 index 0000000000..f5e60bd0d0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/edit-context.idl @@ -0,0 +1,113 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: EditContext API (https://w3c.github.io/edit-context/) + +partial interface Element { + attribute EditContext? editContext; +}; + +dictionary EditContextInit { + DOMString text; + unsigned long selectionStart; + unsigned long selectionEnd; +}; + +[Exposed=Window] +interface EditContext : EventTarget { + constructor(optional EditContextInit options = {}); + + undefined updateText(unsigned long rangeStart, unsigned long rangeEnd, + DOMString text); + undefined updateSelection(unsigned long start, unsigned long end); + undefined updateControlBound(DOMRect controlBound); + undefined updateSelectionBound(DOMRect selectionBound); + undefined updateCharacterBounds(unsigned long rangeStart, sequence<DOMRect> characterBounds); + + sequence<Element> attachedElements(); + + readonly attribute DOMString text; + readonly attribute unsigned long selectionStart; + readonly attribute unsigned long selectionEnd; + readonly attribute unsigned long compositionRangeStart; + readonly attribute unsigned long compositionRangeEnd; + readonly attribute boolean isInComposition; + readonly attribute DOMRect controlBound; + readonly attribute DOMRect selectionBound; + readonly attribute unsigned long characterBoundsRangeStart; + sequence<DOMRect> characterBounds(); + + attribute EventHandler ontextupdate; + attribute EventHandler ontextformatupdate; + attribute EventHandler oncharacterboundsupdate; + attribute EventHandler oncompositionstart; + attribute EventHandler oncompositionend; +}; + +dictionary TextUpdateEventInit { + unsigned long updateRangeStart; + unsigned long updateRangeEnd; + DOMString text; + unsigned long selectionStart; + unsigned long selectionEnd; + unsigned long compositionStart; + unsigned long compositionEnd; +}; + +[Exposed=Window] +interface TextUpdateEvent : Event { + constructor(optional TextUpdateEventInit options = {}); + readonly attribute unsigned long updateRangeStart; + readonly attribute unsigned long updateRangeEnd; + readonly attribute DOMString text; + readonly attribute unsigned long selectionStart; + readonly attribute unsigned long selectionEnd; + readonly attribute unsigned long compositionStart; + readonly attribute unsigned long compositionEnd; +}; + +dictionary TextFormatInit { + unsigned long rangeStart; + unsigned long rangeEnd; + DOMString textColor; + DOMString backgroundColor; + DOMString underlineStyle; + DOMString underlineThickness; + DOMString underlineColor; +}; + +[Exposed=Window] +interface TextFormat { + constructor(optional TextFormatInit options = {}); + attribute unsigned long rangeStart; + attribute unsigned long rangeEnd; + attribute DOMString textColor; + attribute DOMString backgroundColor; + attribute DOMString underlineStyle; + attribute DOMString underlineThickness; + attribute DOMString underlineColor; +}; + +dictionary TextFormatUpdateEventInit { + sequence<TextFormat> textFormats; +}; + +[Exposed=Window] +interface TextFormatUpdateEvent : Event { + constructor(optional TextFormatUpdateEventInit options = {}); + + sequence<TextFormat> getTextFormats(); +}; + +dictionary CharacterBoundsUpdateEventInit { + unsigned long rangeStart; + unsigned long rangeEnd; +}; + +[Exposed=Window] +interface CharacterBoundsUpdateEvent : Event { + constructor(optional CharacterBoundsUpdateEventInit options = {}); + + readonly attribute unsigned long rangeStart; + readonly attribute unsigned long rangeEnd; +}; diff --git a/testing/web-platform/tests/interfaces/element-timing.idl b/testing/web-platform/tests/interfaces/element-timing.idl new file mode 100644 index 0000000000..70ca384894 --- /dev/null +++ b/testing/web-platform/tests/interfaces/element-timing.idl @@ -0,0 +1,22 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Element Timing API (https://wicg.github.io/element-timing/) + +[Exposed=Window] +interface PerformanceElementTiming : PerformanceEntry { + readonly attribute DOMHighResTimeStamp renderTime; + readonly attribute DOMHighResTimeStamp loadTime; + readonly attribute DOMRectReadOnly intersectionRect; + readonly attribute DOMString identifier; + readonly attribute unsigned long naturalWidth; + readonly attribute unsigned long naturalHeight; + readonly attribute DOMString id; + readonly attribute Element? element; + readonly attribute DOMString url; + [Default] object toJSON(); +}; + +partial interface Element { + [CEReactions] attribute DOMString elementTiming; +}; diff --git a/testing/web-platform/tests/interfaces/encoding.idl b/testing/web-platform/tests/interfaces/encoding.idl new file mode 100644 index 0000000000..a8cbe4431a --- /dev/null +++ b/testing/web-platform/tests/interfaces/encoding.idl @@ -0,0 +1,59 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Encoding Standard (https://encoding.spec.whatwg.org/) + +interface mixin TextDecoderCommon { + readonly attribute DOMString encoding; + readonly attribute boolean fatal; + readonly attribute boolean ignoreBOM; +}; + +dictionary TextDecoderOptions { + boolean fatal = false; + boolean ignoreBOM = false; +}; + +dictionary TextDecodeOptions { + boolean stream = false; +}; + +[Exposed=*] +interface TextDecoder { + constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {}); + + USVString decode(optional [AllowShared] BufferSource input, optional TextDecodeOptions options = {}); +}; +TextDecoder includes TextDecoderCommon; + +interface mixin TextEncoderCommon { + readonly attribute DOMString encoding; +}; + +dictionary TextEncoderEncodeIntoResult { + unsigned long long read; + unsigned long long written; +}; + +[Exposed=*] +interface TextEncoder { + constructor(); + + [NewObject] Uint8Array encode(optional USVString input = ""); + TextEncoderEncodeIntoResult encodeInto(USVString source, [AllowShared] Uint8Array destination); +}; +TextEncoder includes TextEncoderCommon; + +[Exposed=*] +interface TextDecoderStream { + constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {}); +}; +TextDecoderStream includes TextDecoderCommon; +TextDecoderStream includes GenericTransformStream; + +[Exposed=*] +interface TextEncoderStream { + constructor(); +}; +TextEncoderStream includes TextEncoderCommon; +TextEncoderStream includes GenericTransformStream; diff --git a/testing/web-platform/tests/interfaces/encrypted-media.idl b/testing/web-platform/tests/interfaces/encrypted-media.idl new file mode 100644 index 0000000000..24db48ecf9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/encrypted-media.idl @@ -0,0 +1,125 @@ +// 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<MediaKeySystemAccess> requestMediaKeySystemAccess (DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfigurations); +}; + +enum MediaKeysRequirement { + "required", + "optional", + "not-allowed" +}; + +dictionary MediaKeySystemConfiguration { + DOMString label = ""; + sequence<DOMString> initDataTypes = []; + sequence<MediaKeySystemMediaCapability> audioCapabilities = []; + sequence<MediaKeySystemMediaCapability> videoCapabilities = []; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence<DOMString> sessionTypes; +}; + +dictionary MediaKeySystemMediaCapability { + DOMString contentType = ""; + DOMString? encryptionScheme = null; + DOMString robustness = ""; +}; + +[Exposed=Window, SecureContext] interface MediaKeySystemAccess { + readonly attribute DOMString keySystem; + MediaKeySystemConfiguration getConfiguration (); + Promise<MediaKeys> createMediaKeys (); +}; + +enum MediaKeySessionType { + "temporary", + "persistent-license" +}; + +[Exposed=Window, SecureContext] interface MediaKeys { + MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); + Promise<boolean> setServerCertificate (BufferSource serverCertificate); +}; + +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<MediaKeySessionClosedReason> closed; + readonly attribute MediaKeyStatusMap keyStatuses; + attribute EventHandler onkeystatuseschange; + attribute EventHandler onmessage; + Promise<undefined> generateRequest (DOMString initDataType, BufferSource initData); + Promise<boolean> load (DOMString sessionId); + Promise<undefined> update (BufferSource response); + Promise<undefined> close (); + Promise<undefined> remove (); +}; + +[Exposed=Window, SecureContext] interface MediaKeyStatusMap { + iterable<BufferSource,MediaKeyStatus>; + 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<undefined> 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/testing/web-platform/tests/interfaces/entries-api.idl b/testing/web-platform/tests/interfaces/entries-api.idl new file mode 100644 index 0000000000..cd536bc698 --- /dev/null +++ b/testing/web-platform/tests/interfaces/entries-api.idl @@ -0,0 +1,71 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: File and Directory Entries API (https://wicg.github.io/entries-api/) + +partial interface File { + readonly attribute USVString webkitRelativePath; +}; + +partial interface HTMLInputElement { + attribute boolean webkitdirectory; + readonly attribute FrozenArray<FileSystemEntry> webkitEntries; +}; + +partial interface DataTransferItem { + FileSystemEntry? webkitGetAsEntry(); +}; + +callback ErrorCallback = undefined (DOMException err); + +[Exposed=Window] +interface FileSystemEntry { + readonly attribute boolean isFile; + readonly attribute boolean isDirectory; + readonly attribute USVString name; + readonly attribute USVString fullPath; + readonly attribute FileSystem filesystem; + + undefined getParent(optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); +}; + +[Exposed=Window] +interface FileSystemDirectoryEntry : FileSystemEntry { + FileSystemDirectoryReader createReader(); + undefined getFile(optional USVString? path, + optional FileSystemFlags options = {}, + optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); + undefined getDirectory(optional USVString? path, + optional FileSystemFlags options = {}, + optional FileSystemEntryCallback successCallback, + optional ErrorCallback errorCallback); +}; + +dictionary FileSystemFlags { + boolean create = false; + boolean exclusive = false; +}; + +callback FileSystemEntryCallback = undefined (FileSystemEntry entry); + +[Exposed=Window] +interface FileSystemDirectoryReader { + undefined readEntries(FileSystemEntriesCallback successCallback, + optional ErrorCallback errorCallback); +}; +callback FileSystemEntriesCallback = undefined (sequence<FileSystemEntry> entries); + +[Exposed=Window] +interface FileSystemFileEntry : FileSystemEntry { + undefined file(FileCallback successCallback, + optional ErrorCallback errorCallback); +}; +callback FileCallback = undefined (File file); + +[Exposed=Window] +interface FileSystem { + readonly attribute USVString name; + readonly attribute FileSystemDirectoryEntry root; +}; diff --git a/testing/web-platform/tests/interfaces/event-timing.idl b/testing/web-platform/tests/interfaces/event-timing.idl new file mode 100644 index 0000000000..741a05dc6b --- /dev/null +++ b/testing/web-platform/tests/interfaces/event-timing.idl @@ -0,0 +1,29 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Event Timing API (https://w3c.github.io/event-timing) + +[Exposed=Window] +interface PerformanceEventTiming : PerformanceEntry { + readonly attribute DOMHighResTimeStamp processingStart; + readonly attribute DOMHighResTimeStamp processingEnd; + readonly attribute boolean cancelable; + readonly attribute Node? target; + readonly attribute unsigned long long interactionId; + [Default] object toJSON(); +}; + +[Exposed=Window] +interface EventCounts { + readonly maplike<DOMString, unsigned long long>; +}; + +[Exposed=Window] +partial interface Performance { + [SameObject] readonly attribute EventCounts eventCounts; + readonly attribute unsigned long long interactionCount; +}; + +partial dictionary PerformanceObserverInit { + DOMHighResTimeStamp durationThreshold; +}; diff --git a/testing/web-platform/tests/interfaces/eyedropper-api.idl b/testing/web-platform/tests/interfaces/eyedropper-api.idl new file mode 100644 index 0000000000..62c8c4aea6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/eyedropper-api.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: EyeDropper API (https://wicg.github.io/eyedropper-api/) + +dictionary ColorSelectionResult { + DOMString sRGBHex; +}; + +dictionary ColorSelectionOptions { + AbortSignal signal; +}; + +[Exposed=Window, SecureContext] +interface EyeDropper { + constructor(); + Promise<ColorSelectionResult> open(optional ColorSelectionOptions options = {}); +}; diff --git a/testing/web-platform/tests/interfaces/fetch.idl b/testing/web-platform/tests/interfaces/fetch.idl new file mode 100644 index 0000000000..866d09d31b --- /dev/null +++ b/testing/web-platform/tests/interfaces/fetch.idl @@ -0,0 +1,116 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Fetch Standard (https://fetch.spec.whatwg.org/) + +typedef (sequence<sequence<ByteString>> or record<ByteString, ByteString>) HeadersInit; + +[Exposed=(Window,Worker)] +interface Headers { + constructor(optional HeadersInit init); + + undefined append(ByteString name, ByteString value); + undefined delete(ByteString name); + ByteString? get(ByteString name); + boolean has(ByteString name); + undefined set(ByteString name, ByteString value); + iterable<ByteString, ByteString>; +}; + +typedef (Blob or BufferSource or FormData or URLSearchParams or USVString) XMLHttpRequestBodyInit; + +typedef (ReadableStream or XMLHttpRequestBodyInit) BodyInit; +interface mixin Body { + readonly attribute ReadableStream? body; + readonly attribute boolean bodyUsed; + [NewObject] Promise<ArrayBuffer> arrayBuffer(); + [NewObject] Promise<Blob> blob(); + [NewObject] Promise<FormData> formData(); + [NewObject] Promise<any> json(); + [NewObject] Promise<USVString> text(); +}; +typedef (Request or USVString) RequestInfo; + +[Exposed=(Window,Worker)] +interface Request { + constructor(RequestInfo input, optional RequestInit init = {}); + + readonly attribute ByteString method; + readonly attribute USVString url; + [SameObject] readonly attribute Headers headers; + + readonly attribute RequestDestination destination; + readonly attribute USVString referrer; + readonly attribute ReferrerPolicy referrerPolicy; + readonly attribute RequestMode mode; + readonly attribute RequestCredentials credentials; + readonly attribute RequestCache cache; + readonly attribute RequestRedirect redirect; + readonly attribute DOMString integrity; + readonly attribute boolean keepalive; + readonly attribute boolean isReloadNavigation; + readonly attribute boolean isHistoryNavigation; + readonly attribute AbortSignal signal; + readonly attribute RequestDuplex duplex; + + [NewObject] Request clone(); +}; +Request includes Body; + +dictionary RequestInit { + ByteString method; + HeadersInit headers; + BodyInit? body; + USVString referrer; + ReferrerPolicy referrerPolicy; + RequestMode mode; + RequestCredentials credentials; + RequestCache cache; + RequestRedirect redirect; + DOMString integrity; + boolean keepalive; + AbortSignal? signal; + RequestDuplex duplex; + RequestPriority priority; + any window; // can only be set to null +}; + +enum RequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "frame", "iframe", "image", "manifest", "object", "paintworklet", "report", "script", "sharedworker", "style", "track", "video", "worker", "xslt" }; +enum RequestMode { "navigate", "same-origin", "no-cors", "cors" }; +enum RequestCredentials { "omit", "same-origin", "include" }; +enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" }; +enum RequestRedirect { "follow", "error", "manual" }; +enum RequestDuplex { "half" }; +enum RequestPriority { "high", "low", "auto" }; + +[Exposed=(Window,Worker)]interface Response { + constructor(optional BodyInit? body = null, optional ResponseInit init = {}); + + [NewObject] static Response error(); + [NewObject] static Response redirect(USVString url, optional unsigned short status = 302); + [NewObject] static Response json(any data, optional ResponseInit init = {}); + + readonly attribute ResponseType type; + + readonly attribute USVString url; + readonly attribute boolean redirected; + readonly attribute unsigned short status; + readonly attribute boolean ok; + readonly attribute ByteString statusText; + [SameObject] readonly attribute Headers headers; + + [NewObject] Response clone(); +}; +Response includes Body; + +dictionary ResponseInit { + unsigned short status = 200; + ByteString statusText = ""; + HeadersInit headers; +}; + +enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" }; + +partial interface mixin WindowOrWorkerGlobalScope { + [NewObject] Promise<Response> fetch(RequestInfo input, optional RequestInit init = {}); +}; diff --git a/testing/web-platform/tests/interfaces/fido.idl b/testing/web-platform/tests/interfaces/fido.idl new file mode 100644 index 0000000000..32b6c75abd --- /dev/null +++ b/testing/web-platform/tests/interfaces/fido.idl @@ -0,0 +1,47 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Client to Authenticator Protocol (CTAP) (https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html) + +partial dictionary AuthenticationExtensionsClientInputs { + USVString credentialProtectionPolicy; + boolean enforceCredentialProtectionPolicy = false; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + ArrayBuffer credBlob; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + boolean getCredBlob; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + boolean minPinLength; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + boolean hmacCreateSecret; +}; + +dictionary HMACGetSecretInput { + required ArrayBuffer salt1; // 32-byte random data + ArrayBuffer salt2; // Optional additional 32-byte random data +}; + +partial dictionary AuthenticationExtensionsClientInputs { + HMACGetSecretInput hmacGetSecret; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + boolean hmacCreateSecret; +}; + +dictionary HMACGetSecretOutput { + required ArrayBuffer output1; + ArrayBuffer output2; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + HMACGetSecretOutput hmacGetSecret; +}; diff --git a/testing/web-platform/tests/interfaces/file-system-access.idl b/testing/web-platform/tests/interfaces/file-system-access.idl new file mode 100644 index 0000000000..572f9342a4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/file-system-access.idl @@ -0,0 +1,72 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: File System Access (https://wicg.github.io/file-system-access/) + +enum FileSystemPermissionMode { + "read", + "readwrite" +}; + +dictionary FileSystemPermissionDescriptor : PermissionDescriptor { + required FileSystemHandle handle; + FileSystemPermissionMode mode = "read"; +}; + +dictionary FileSystemHandlePermissionDescriptor { + FileSystemPermissionMode mode = "read"; +}; + +[Exposed=(Window,Worker), SecureContext, Serializable] +partial interface FileSystemHandle { + Promise<PermissionState> queryPermission(optional FileSystemHandlePermissionDescriptor descriptor = {}); + Promise<PermissionState> requestPermission(optional FileSystemHandlePermissionDescriptor descriptor = {}); +}; + +enum WellKnownDirectory { + "desktop", + "documents", + "downloads", + "music", + "pictures", + "videos", +}; + +typedef (WellKnownDirectory or FileSystemHandle) StartInDirectory; + +dictionary FilePickerAcceptType { + USVString description; + record<USVString, (USVString or sequence<USVString>)> accept; +}; + +dictionary FilePickerOptions { + sequence<FilePickerAcceptType> types; + boolean excludeAcceptAllOption = false; + DOMString id; + StartInDirectory startIn; +}; + +dictionary OpenFilePickerOptions : FilePickerOptions { + boolean multiple = false; +}; + +dictionary SaveFilePickerOptions : FilePickerOptions { + USVString? suggestedName; +}; + +dictionary DirectoryPickerOptions { + DOMString id; + StartInDirectory startIn; + FileSystemPermissionMode mode = "read"; +}; + +[SecureContext] +partial interface Window { + Promise<sequence<FileSystemFileHandle>> showOpenFilePicker(optional OpenFilePickerOptions options = {}); + Promise<FileSystemFileHandle> showSaveFilePicker(optional SaveFilePickerOptions options = {}); + Promise<FileSystemDirectoryHandle> showDirectoryPicker(optional DirectoryPickerOptions options = {}); +}; + +partial interface DataTransferItem { + Promise<FileSystemHandle?> getAsFileSystemHandle(); +}; diff --git a/testing/web-platform/tests/interfaces/filter-effects.idl b/testing/web-platform/tests/interfaces/filter-effects.idl new file mode 100644 index 0000000000..ecbb6a94be --- /dev/null +++ b/testing/web-platform/tests/interfaces/filter-effects.idl @@ -0,0 +1,341 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Filter Effects Module Level 1 (https://drafts.fxtf.org/filter-effects-1/) + +[Exposed=Window] +interface SVGFilterElement : SVGElement { + readonly attribute SVGAnimatedEnumeration filterUnits; + readonly attribute SVGAnimatedEnumeration primitiveUnits; + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; +}; + +SVGFilterElement includes SVGURIReference; + +interface mixin SVGFilterPrimitiveStandardAttributes { + readonly attribute SVGAnimatedLength x; + readonly attribute SVGAnimatedLength y; + readonly attribute SVGAnimatedLength width; + readonly attribute SVGAnimatedLength height; + readonly attribute SVGAnimatedString result; +}; + +[Exposed=Window] +interface SVGFEBlendElement : SVGElement { + + // Blend Mode Types + const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; + const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; + const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; + const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; + const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; + const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; + const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; + const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; + const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; + const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; + const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; + const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; + const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; + const unsigned short SVG_FEBLEND_MODE_HUE = 13; + const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; + const unsigned short SVG_FEBLEND_MODE_COLOR = 15; + const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedEnumeration mode; +}; + +SVGFEBlendElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEColorMatrixElement : SVGElement { + + // Color Matrix Types + const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; + const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; + const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; + const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedEnumeration type; + readonly attribute SVGAnimatedNumberList values; +}; + +SVGFEColorMatrixElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEComponentTransferElement : SVGElement { + readonly attribute SVGAnimatedString in1; +}; + +SVGFEComponentTransferElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGComponentTransferFunctionElement : SVGElement { + + // Component Transfer Types + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; + const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; + + readonly attribute SVGAnimatedEnumeration type; + readonly attribute SVGAnimatedNumberList tableValues; + readonly attribute SVGAnimatedNumber slope; + readonly attribute SVGAnimatedNumber intercept; + readonly attribute SVGAnimatedNumber amplitude; + readonly attribute SVGAnimatedNumber exponent; + readonly attribute SVGAnimatedNumber offset; +}; + +[Exposed=Window] +interface SVGFEFuncRElement : SVGComponentTransferFunctionElement { +}; + +[Exposed=Window] +interface SVGFEFuncGElement : SVGComponentTransferFunctionElement { +}; + +[Exposed=Window] +interface SVGFEFuncBElement : SVGComponentTransferFunctionElement { +}; + +[Exposed=Window] +interface SVGFEFuncAElement : SVGComponentTransferFunctionElement { +}; + +[Exposed=Window] +interface SVGFECompositeElement : SVGElement { + + // Composite Operators + const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; + const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; + const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; + const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; + const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedEnumeration operator; + readonly attribute SVGAnimatedNumber k1; + readonly attribute SVGAnimatedNumber k2; + readonly attribute SVGAnimatedNumber k3; + readonly attribute SVGAnimatedNumber k4; +}; + +SVGFECompositeElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEConvolveMatrixElement : SVGElement { + + // Edge Mode Values + const unsigned short SVG_EDGEMODE_UNKNOWN = 0; + const unsigned short SVG_EDGEMODE_DUPLICATE = 1; + const unsigned short SVG_EDGEMODE_WRAP = 2; + const unsigned short SVG_EDGEMODE_NONE = 3; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedInteger orderX; + readonly attribute SVGAnimatedInteger orderY; + readonly attribute SVGAnimatedNumberList kernelMatrix; + readonly attribute SVGAnimatedNumber divisor; + readonly attribute SVGAnimatedNumber bias; + readonly attribute SVGAnimatedInteger targetX; + readonly attribute SVGAnimatedInteger targetY; + readonly attribute SVGAnimatedEnumeration edgeMode; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; + readonly attribute SVGAnimatedBoolean preserveAlpha; +}; + +SVGFEConvolveMatrixElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEDiffuseLightingElement : SVGElement { + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber surfaceScale; + readonly attribute SVGAnimatedNumber diffuseConstant; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; +}; + +SVGFEDiffuseLightingElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEDistantLightElement : SVGElement { + readonly attribute SVGAnimatedNumber azimuth; + readonly attribute SVGAnimatedNumber elevation; +}; + +[Exposed=Window] +interface SVGFEPointLightElement : SVGElement { + readonly attribute SVGAnimatedNumber x; + readonly attribute SVGAnimatedNumber y; + readonly attribute SVGAnimatedNumber z; +}; + +[Exposed=Window] +interface SVGFESpotLightElement : SVGElement { + readonly attribute SVGAnimatedNumber x; + readonly attribute SVGAnimatedNumber y; + readonly attribute SVGAnimatedNumber z; + readonly attribute SVGAnimatedNumber pointsAtX; + readonly attribute SVGAnimatedNumber pointsAtY; + readonly attribute SVGAnimatedNumber pointsAtZ; + readonly attribute SVGAnimatedNumber specularExponent; + readonly attribute SVGAnimatedNumber limitingConeAngle; +}; + +[Exposed=Window] +interface SVGFEDisplacementMapElement : SVGElement { + + // Channel Selectors + const unsigned short SVG_CHANNEL_UNKNOWN = 0; + const unsigned short SVG_CHANNEL_R = 1; + const unsigned short SVG_CHANNEL_G = 2; + const unsigned short SVG_CHANNEL_B = 3; + const unsigned short SVG_CHANNEL_A = 4; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedString in2; + readonly attribute SVGAnimatedNumber scale; + readonly attribute SVGAnimatedEnumeration xChannelSelector; + readonly attribute SVGAnimatedEnumeration yChannelSelector; +}; + +SVGFEDisplacementMapElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEDropShadowElement : SVGElement { + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber dx; + readonly attribute SVGAnimatedNumber dy; + readonly attribute SVGAnimatedNumber stdDeviationX; + readonly attribute SVGAnimatedNumber stdDeviationY; + + undefined setStdDeviation(float stdDeviationX, float stdDeviationY); +}; + +SVGFEDropShadowElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEFloodElement : SVGElement { +}; + +SVGFEFloodElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEGaussianBlurElement : SVGElement { + + // Edge Mode Values + const unsigned short SVG_EDGEMODE_UNKNOWN = 0; + const unsigned short SVG_EDGEMODE_DUPLICATE = 1; + const unsigned short SVG_EDGEMODE_WRAP = 2; + const unsigned short SVG_EDGEMODE_NONE = 3; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber stdDeviationX; + readonly attribute SVGAnimatedNumber stdDeviationY; + readonly attribute SVGAnimatedEnumeration edgeMode; + + undefined setStdDeviation(float stdDeviationX, float stdDeviationY); +}; + +SVGFEGaussianBlurElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEImageElement : SVGElement { + readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; + readonly attribute SVGAnimatedString crossOrigin; +}; + +SVGFEImageElement includes SVGFilterPrimitiveStandardAttributes; +SVGFEImageElement includes SVGURIReference; + +[Exposed=Window] +interface SVGFEMergeElement : SVGElement { +}; + +SVGFEMergeElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEMergeNodeElement : SVGElement { + readonly attribute SVGAnimatedString in1; +}; + +[Exposed=Window] +interface SVGFEMorphologyElement : SVGElement { + + // Morphology Operators + const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; + const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; + const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2; + + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedEnumeration operator; + readonly attribute SVGAnimatedNumber radiusX; + readonly attribute SVGAnimatedNumber radiusY; +}; + +SVGFEMorphologyElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFEOffsetElement : SVGElement { + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber dx; + readonly attribute SVGAnimatedNumber dy; +}; + +SVGFEOffsetElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFESpecularLightingElement : SVGElement { + readonly attribute SVGAnimatedString in1; + readonly attribute SVGAnimatedNumber surfaceScale; + readonly attribute SVGAnimatedNumber specularConstant; + readonly attribute SVGAnimatedNumber specularExponent; + readonly attribute SVGAnimatedNumber kernelUnitLengthX; + readonly attribute SVGAnimatedNumber kernelUnitLengthY; +}; + +SVGFESpecularLightingElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFETileElement : SVGElement { + readonly attribute SVGAnimatedString in1; +}; + +SVGFETileElement includes SVGFilterPrimitiveStandardAttributes; + +[Exposed=Window] +interface SVGFETurbulenceElement : SVGElement { + + // Turbulence Types + const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; + const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; + const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; + + // Stitch Options + const unsigned short SVG_STITCHTYPE_UNKNOWN = 0; + const unsigned short SVG_STITCHTYPE_STITCH = 1; + const unsigned short SVG_STITCHTYPE_NOSTITCH = 2; + + readonly attribute SVGAnimatedNumber baseFrequencyX; + readonly attribute SVGAnimatedNumber baseFrequencyY; + readonly attribute SVGAnimatedInteger numOctaves; + readonly attribute SVGAnimatedNumber seed; + readonly attribute SVGAnimatedEnumeration stitchTiles; + readonly attribute SVGAnimatedEnumeration type; +}; + +SVGFETurbulenceElement includes SVGFilterPrimitiveStandardAttributes; diff --git a/testing/web-platform/tests/interfaces/font-metrics-api.idl b/testing/web-platform/tests/interfaces/font-metrics-api.idl new file mode 100644 index 0000000000..9bb94bc3a6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/font-metrics-api.idl @@ -0,0 +1,42 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Font Metrics API Level 1 (https://drafts.css-houdini.org/font-metrics-api-1/) + +partial interface Document { + FontMetrics measureElement(Element element); + FontMetrics measureText(DOMString text, StylePropertyMapReadOnly styleMap); +}; + +[Exposed=Window] +interface FontMetrics { + readonly attribute double width; + readonly attribute FrozenArray<double> advances; + + readonly attribute double boundingBoxLeft; + readonly attribute double boundingBoxRight; + + readonly attribute double height; + readonly attribute double emHeightAscent; + readonly attribute double emHeightDescent; + readonly attribute double boundingBoxAscent; + readonly attribute double boundingBoxDescent; + readonly attribute double fontBoundingBoxAscent; + readonly attribute double fontBoundingBoxDescent; + + readonly attribute Baseline dominantBaseline; + readonly attribute FrozenArray<Baseline> baselines; + readonly attribute FrozenArray<Font> fonts; +}; + +[Exposed=Window] +interface Baseline { + readonly attribute DOMString name; + readonly attribute double value; +}; + +[Exposed=Window] +interface Font { + readonly attribute DOMString name; + readonly attribute unsigned long glyphsRendered; +}; diff --git a/testing/web-platform/tests/interfaces/fs.idl b/testing/web-platform/tests/interfaces/fs.idl new file mode 100644 index 0000000000..12dca90056 --- /dev/null +++ b/testing/web-platform/tests/interfaces/fs.idl @@ -0,0 +1,97 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: File System Standard (https://fs.spec.whatwg.org/) + +enum FileSystemHandleKind { + "file", + "directory", +}; + +[Exposed=(Window,Worker), SecureContext, Serializable] +interface FileSystemHandle { + readonly attribute FileSystemHandleKind kind; + readonly attribute USVString name; + + Promise<boolean> isSameEntry(FileSystemHandle other); +}; + +dictionary FileSystemCreateWritableOptions { + boolean keepExistingData = false; +}; + +[Exposed=(Window,Worker), SecureContext, Serializable] +interface FileSystemFileHandle : FileSystemHandle { + Promise<File> getFile(); + Promise<FileSystemWritableFileStream> createWritable(optional FileSystemCreateWritableOptions options = {}); + [Exposed=DedicatedWorker] + Promise<FileSystemSyncAccessHandle> createSyncAccessHandle(); +}; + +dictionary FileSystemGetFileOptions { + boolean create = false; +}; + +dictionary FileSystemGetDirectoryOptions { + boolean create = false; +}; + +dictionary FileSystemRemoveOptions { + boolean recursive = false; +}; + +[Exposed=(Window,Worker), SecureContext, Serializable] +interface FileSystemDirectoryHandle : FileSystemHandle { + async iterable<USVString, FileSystemHandle>; + + Promise<FileSystemFileHandle> getFileHandle(USVString name, optional FileSystemGetFileOptions options = {}); + Promise<FileSystemDirectoryHandle> getDirectoryHandle(USVString name, optional FileSystemGetDirectoryOptions options = {}); + + Promise<undefined> removeEntry(USVString name, optional FileSystemRemoveOptions options = {}); + + Promise<sequence<USVString>?> resolve(FileSystemHandle possibleDescendant); +}; + +enum WriteCommandType { + "write", + "seek", + "truncate", +}; + +dictionary WriteParams { + required WriteCommandType type; + unsigned long long? size; + unsigned long long? position; + (BufferSource or Blob or USVString)? data; +}; + +typedef (BufferSource or Blob or USVString or WriteParams) FileSystemWriteChunkType; + +[Exposed=(Window,Worker), SecureContext] +interface FileSystemWritableFileStream : WritableStream { + Promise<undefined> write(FileSystemWriteChunkType data); + Promise<undefined> seek(unsigned long long position); + Promise<undefined> truncate(unsigned long long size); +}; + +dictionary FileSystemReadWriteOptions { + [EnforceRange] unsigned long long at = 0; +}; + +[Exposed=DedicatedWorker, SecureContext] +interface FileSystemSyncAccessHandle { + unsigned long long read([AllowShared] BufferSource buffer, + optional FileSystemReadWriteOptions options = {}); + unsigned long long write([AllowShared] BufferSource buffer, + optional FileSystemReadWriteOptions options = {}); + + undefined truncate([EnforceRange] unsigned long long newSize); + unsigned long long getSize(); + undefined flush(); + undefined close(); +}; + +[SecureContext] +partial interface StorageManager { + Promise<FileSystemDirectoryHandle> getDirectory(); +}; diff --git a/testing/web-platform/tests/interfaces/fullscreen.idl b/testing/web-platform/tests/interfaces/fullscreen.idl new file mode 100644 index 0000000000..2f67f09a39 --- /dev/null +++ b/testing/web-platform/tests/interfaces/fullscreen.idl @@ -0,0 +1,35 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Fullscreen API Standard (https://fullscreen.spec.whatwg.org/) + +enum FullscreenNavigationUI { + "auto", + "show", + "hide" +}; + +dictionary FullscreenOptions { + FullscreenNavigationUI navigationUI = "auto"; +}; + +partial interface Element { + Promise<undefined> requestFullscreen(optional FullscreenOptions options = {}); + + attribute EventHandler onfullscreenchange; + attribute EventHandler onfullscreenerror; +}; + +partial interface Document { + [LegacyLenientSetter] readonly attribute boolean fullscreenEnabled; + [LegacyLenientSetter, Unscopable] readonly attribute boolean fullscreen; // historical + + Promise<undefined> exitFullscreen(); + + attribute EventHandler onfullscreenchange; + attribute EventHandler onfullscreenerror; +}; + +partial interface mixin DocumentOrShadowRoot { + [LegacyLenientSetter] readonly attribute Element? fullscreenElement; +}; diff --git a/testing/web-platform/tests/interfaces/gamepad-extensions.idl b/testing/web-platform/tests/interfaces/gamepad-extensions.idl new file mode 100644 index 0000000000..ddfc0d9c06 --- /dev/null +++ b/testing/web-platform/tests/interfaces/gamepad-extensions.idl @@ -0,0 +1,71 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Gamepad Extensions (https://w3c.github.io/gamepad/extensions.html) + +enum GamepadHand { + "", /* unknown, both hands, or not applicable */ + "left", + "right" +}; + +[Exposed=Window] +interface GamepadHapticActuator { + readonly attribute GamepadHapticActuatorType type; + boolean canPlayEffectType(GamepadHapticEffectType type); + Promise<GamepadHapticsResult> playEffect( + GamepadHapticEffectType type, + optional GamepadEffectParameters params = {}); + Promise<boolean> pulse(double value, double duration); + Promise<GamepadHapticsResult> reset(); +}; + +enum GamepadHapticsResult { + "complete", + "preempted" +}; + +enum GamepadHapticActuatorType { + "vibration", + "dual-rumble" +}; + +enum GamepadHapticEffectType { + "dual-rumble" +}; + +dictionary GamepadEffectParameters { + double duration = 0.0; + double startDelay = 0.0; + double strongMagnitude = 0.0; + double weakMagnitude = 0.0; +}; + +[Exposed=Window] +interface GamepadPose { + readonly attribute boolean hasOrientation; + readonly attribute boolean hasPosition; + + readonly attribute Float32Array? position; + readonly attribute Float32Array? linearVelocity; + readonly attribute Float32Array? linearAcceleration; + readonly attribute Float32Array? orientation; + readonly attribute Float32Array? angularVelocity; + readonly attribute Float32Array? angularAcceleration; +}; + +[Exposed=Window, SecureContext] +interface GamepadTouch { + readonly attribute unsigned long touchId; + readonly attribute octet surfaceId; + readonly attribute Float32Array position; + readonly attribute Uint32Array? surfaceDimensions; +}; + +partial interface Gamepad { + readonly attribute GamepadHand hand; + readonly attribute FrozenArray<GamepadHapticActuator> hapticActuators; + readonly attribute GamepadPose? pose; + readonly attribute FrozenArray<GamepadTouch>? touchEvents; + [SameObject] readonly attribute GamepadHapticActuator vibrationActuator; +}; diff --git a/testing/web-platform/tests/interfaces/gamepad.idl b/testing/web-platform/tests/interfaces/gamepad.idl new file mode 100644 index 0000000000..bbc62da3c4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/gamepad.idl @@ -0,0 +1,49 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Gamepad (https://w3c.github.io/gamepad/) + +[Exposed=Window, SecureContext] +interface Gamepad { + readonly attribute DOMString id; + readonly attribute long index; + readonly attribute boolean connected; + readonly attribute DOMHighResTimeStamp timestamp; + readonly attribute GamepadMappingType mapping; + readonly attribute FrozenArray<double> axes; + readonly attribute FrozenArray<GamepadButton> buttons; +}; + +[Exposed=Window, SecureContext] +interface GamepadButton { + readonly attribute boolean pressed; + readonly attribute boolean touched; + readonly attribute double value; +}; + +enum GamepadMappingType { + "", + "standard", + "xr-standard", +}; + +[Exposed=Window] +partial interface Navigator { + sequence<Gamepad?> getGamepads(); +}; + +[Exposed=Window, SecureContext] + +interface GamepadEvent: Event { + constructor(DOMString type, GamepadEventInit eventInitDict); + [SameObject] readonly attribute Gamepad gamepad; +}; + +dictionary GamepadEventInit : EventInit { + required Gamepad gamepad; +}; + +partial interface mixin WindowEventHandlers { + attribute EventHandler ongamepadconnected; + attribute EventHandler ongamepaddisconnected; +}; diff --git a/testing/web-platform/tests/interfaces/generic-sensor.idl b/testing/web-platform/tests/interfaces/generic-sensor.idl new file mode 100644 index 0000000000..157072f634 --- /dev/null +++ b/testing/web-platform/tests/interfaces/generic-sensor.idl @@ -0,0 +1,60 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Generic Sensor API (https://w3c.github.io/sensors/) + +[SecureContext, Exposed=(DedicatedWorker, Window)] +interface Sensor : EventTarget { + readonly attribute boolean activated; + readonly attribute boolean hasReading; + readonly attribute DOMHighResTimeStamp? timestamp; + undefined start(); + undefined stop(); + attribute EventHandler onreading; + attribute EventHandler onactivate; + attribute EventHandler onerror; +}; + +dictionary SensorOptions { + double frequency; +}; + +[SecureContext, Exposed=(DedicatedWorker, Window)] +interface SensorErrorEvent : Event { + constructor(DOMString type, SensorErrorEventInit errorEventInitDict); + readonly attribute DOMException error; +}; + +dictionary SensorErrorEventInit : EventInit { + required DOMException error; +}; + +dictionary MockSensorConfiguration { + required MockSensorType mockSensorType; + boolean connected = true; + double? maxSamplingFrequency; + double? minSamplingFrequency; +}; + +dictionary MockSensor { + double maxSamplingFrequency; + double minSamplingFrequency; + double requestedSamplingFrequency; +}; + +enum MockSensorType { + "ambient-light", + "accelerometer", + "linear-acceleration", + "gravity", + "gyroscope", + "magnetometer", + "uncalibrated-magnetometer", + "absolute-orientation", + "relative-orientation", + "geolocation", + "proximity", +}; + +dictionary MockSensorReadingValues { +}; diff --git a/testing/web-platform/tests/interfaces/geolocation-sensor.idl b/testing/web-platform/tests/interfaces/geolocation-sensor.idl new file mode 100644 index 0000000000..e1d676205f --- /dev/null +++ b/testing/web-platform/tests/interfaces/geolocation-sensor.idl @@ -0,0 +1,47 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Geolocation Sensor (https://w3c.github.io/geolocation-sensor/) + +[SecureContext, + Exposed=(DedicatedWorker, Window)] +interface GeolocationSensor : Sensor { + constructor(optional GeolocationSensorOptions options = {}); + static Promise<GeolocationSensorReading> read(optional ReadOptions readOptions = {}); + readonly attribute unrestricted double? latitude; + readonly attribute unrestricted double? longitude; + readonly attribute unrestricted double? altitude; + readonly attribute unrestricted double? accuracy; + readonly attribute unrestricted double? altitudeAccuracy; + readonly attribute unrestricted double? heading; + readonly attribute unrestricted double? speed; +}; + +dictionary GeolocationSensorOptions : SensorOptions { + // placeholder for GeolocationSensor-specific options +}; + +dictionary ReadOptions : GeolocationSensorOptions { + AbortSignal? signal; +}; + +dictionary GeolocationSensorReading { + DOMHighResTimeStamp? timestamp; + double? latitude; + double? longitude; + double? altitude; + double? accuracy; + double? altitudeAccuracy; + double? heading; + double? speed; +}; + +dictionary GeolocationReadingValues { + required double? latitude; + required double? longitude; + required double? altitude; + required double? accuracy; + required double? altitudeAccuracy; + required double? heading; + required double? speed; +}; diff --git a/testing/web-platform/tests/interfaces/geolocation.idl b/testing/web-platform/tests/interfaces/geolocation.idl new file mode 100644 index 0000000000..4b971f097b --- /dev/null +++ b/testing/web-platform/tests/interfaces/geolocation.idl @@ -0,0 +1,65 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Geolocation API (https://w3c.github.io/geolocation-api/) + +partial interface Navigator { + [SameObject] readonly attribute Geolocation geolocation; +}; + +[Exposed=Window] +interface Geolocation { + undefined getCurrentPosition ( + PositionCallback successCallback, + optional PositionErrorCallback? errorCallback = null, + optional PositionOptions options = {} + ); + + long watchPosition ( + PositionCallback successCallback, + optional PositionErrorCallback? errorCallback = null, + optional PositionOptions options = {} + ); + + undefined clearWatch (long watchId); +}; + +callback PositionCallback = undefined ( + GeolocationPosition position +); + +callback PositionErrorCallback = undefined ( + GeolocationPositionError positionError +); + +dictionary PositionOptions { + boolean enableHighAccuracy = false; + [Clamp] unsigned long timeout = 0xFFFFFFFF; + [Clamp] unsigned long maximumAge = 0; +}; + +[Exposed=Window, SecureContext] +interface GeolocationPosition { + readonly attribute GeolocationCoordinates coords; + readonly attribute EpochTimeStamp timestamp; +}; + +[Exposed=Window, SecureContext] +interface GeolocationCoordinates { + readonly attribute double accuracy; + readonly attribute double latitude; + readonly attribute double longitude; + readonly attribute double? altitude; + readonly attribute double? altitudeAccuracy; + readonly attribute double? heading; + readonly attribute double? speed; +}; + +[Exposed=Window] +interface GeolocationPositionError { + const unsigned short PERMISSION_DENIED = 1; + const unsigned short POSITION_UNAVAILABLE = 2; + const unsigned short TIMEOUT = 3; + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; diff --git a/testing/web-platform/tests/interfaces/geometry.idl b/testing/web-platform/tests/interfaces/geometry.idl new file mode 100644 index 0000000000..f7df4499b4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/geometry.idl @@ -0,0 +1,290 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Geometry Interfaces Module Level 1 (https://drafts.fxtf.org/geometry-1/) + +[Exposed=(Window,Worker), + Serializable] +interface DOMPointReadOnly { + constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, + optional unrestricted double z = 0, optional unrestricted double w = 1); + + [NewObject] static DOMPointReadOnly fromPoint(optional DOMPointInit other = {}); + + readonly attribute unrestricted double x; + readonly attribute unrestricted double y; + readonly attribute unrestricted double z; + readonly attribute unrestricted double w; + + [NewObject] DOMPoint matrixTransform(optional DOMMatrixInit matrix = {}); + + [Default] object toJSON(); +}; + +[Exposed=(Window,Worker), + Serializable, + LegacyWindowAlias=SVGPoint] +interface DOMPoint : DOMPointReadOnly { + constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, + optional unrestricted double z = 0, optional unrestricted double w = 1); + + [NewObject] static DOMPoint fromPoint(optional DOMPointInit other = {}); + + inherit attribute unrestricted double x; + inherit attribute unrestricted double y; + inherit attribute unrestricted double z; + inherit attribute unrestricted double w; +}; + +dictionary DOMPointInit { + unrestricted double x = 0; + unrestricted double y = 0; + unrestricted double z = 0; + unrestricted double w = 1; +}; + +[Exposed=(Window,Worker), + Serializable] +interface DOMRectReadOnly { + constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, + optional unrestricted double width = 0, optional unrestricted double height = 0); + + [NewObject] static DOMRectReadOnly fromRect(optional DOMRectInit other = {}); + + readonly attribute unrestricted double x; + readonly attribute unrestricted double y; + readonly attribute unrestricted double width; + readonly attribute unrestricted double height; + readonly attribute unrestricted double top; + readonly attribute unrestricted double right; + readonly attribute unrestricted double bottom; + readonly attribute unrestricted double left; + + [Default] object toJSON(); +}; + +[Exposed=(Window,Worker), + Serializable, + LegacyWindowAlias=SVGRect] +interface DOMRect : DOMRectReadOnly { + constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, + optional unrestricted double width = 0, optional unrestricted double height = 0); + + [NewObject] static DOMRect fromRect(optional DOMRectInit other = {}); + + inherit attribute unrestricted double x; + inherit attribute unrestricted double y; + inherit attribute unrestricted double width; + inherit attribute unrestricted double height; +}; + +dictionary DOMRectInit { + unrestricted double x = 0; + unrestricted double y = 0; + unrestricted double width = 0; + unrestricted double height = 0; +}; + +[Exposed=Window] +interface DOMRectList { + readonly attribute unsigned long length; + getter DOMRect? item(unsigned long index); +}; + +[Exposed=(Window,Worker), + Serializable] +interface DOMQuad { + constructor(optional DOMPointInit p1 = {}, optional DOMPointInit p2 = {}, + optional DOMPointInit p3 = {}, optional DOMPointInit p4 = {}); + + [NewObject] static DOMQuad fromRect(optional DOMRectInit other = {}); + [NewObject] static DOMQuad fromQuad(optional DOMQuadInit other = {}); + + [SameObject] readonly attribute DOMPoint p1; + [SameObject] readonly attribute DOMPoint p2; + [SameObject] readonly attribute DOMPoint p3; + [SameObject] readonly attribute DOMPoint p4; + [NewObject] DOMRect getBounds(); + + [Default] object toJSON(); +}; + +dictionary DOMQuadInit { + DOMPointInit p1; + DOMPointInit p2; + DOMPointInit p3; + DOMPointInit p4; +}; + +[Exposed=(Window,Worker), + Serializable] +interface DOMMatrixReadOnly { + constructor(optional (DOMString or sequence<unrestricted double>) init); + + [NewObject] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other = {}); + [NewObject] static DOMMatrixReadOnly fromFloat32Array(Float32Array array32); + [NewObject] static DOMMatrixReadOnly fromFloat64Array(Float64Array array64); + + // These attributes are simple aliases for certain elements of the 4x4 matrix + readonly attribute unrestricted double a; + readonly attribute unrestricted double b; + readonly attribute unrestricted double c; + readonly attribute unrestricted double d; + readonly attribute unrestricted double e; + readonly attribute unrestricted double f; + + readonly attribute unrestricted double m11; + readonly attribute unrestricted double m12; + readonly attribute unrestricted double m13; + readonly attribute unrestricted double m14; + readonly attribute unrestricted double m21; + readonly attribute unrestricted double m22; + readonly attribute unrestricted double m23; + readonly attribute unrestricted double m24; + readonly attribute unrestricted double m31; + readonly attribute unrestricted double m32; + readonly attribute unrestricted double m33; + readonly attribute unrestricted double m34; + readonly attribute unrestricted double m41; + readonly attribute unrestricted double m42; + readonly attribute unrestricted double m43; + readonly attribute unrestricted double m44; + + readonly attribute boolean is2D; + readonly attribute boolean isIdentity; + + // Immutable transform methods + [NewObject] DOMMatrix translate(optional unrestricted double tx = 0, + optional unrestricted double ty = 0, + optional unrestricted double tz = 0); + [NewObject] DOMMatrix scale(optional unrestricted double scaleX = 1, + optional unrestricted double scaleY, + optional unrestricted double scaleZ = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + [NewObject] DOMMatrix scaleNonUniform(optional unrestricted double scaleX = 1, + optional unrestricted double scaleY = 1); + [NewObject] DOMMatrix scale3d(optional unrestricted double scale = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + [NewObject] DOMMatrix rotate(optional unrestricted double rotX = 0, + optional unrestricted double rotY, + optional unrestricted double rotZ); + [NewObject] DOMMatrix rotateFromVector(optional unrestricted double x = 0, + optional unrestricted double y = 0); + [NewObject] DOMMatrix rotateAxisAngle(optional unrestricted double x = 0, + optional unrestricted double y = 0, + optional unrestricted double z = 0, + optional unrestricted double angle = 0); + [NewObject] DOMMatrix skewX(optional unrestricted double sx = 0); + [NewObject] DOMMatrix skewY(optional unrestricted double sy = 0); + [NewObject] DOMMatrix multiply(optional DOMMatrixInit other = {}); + [NewObject] DOMMatrix flipX(); + [NewObject] DOMMatrix flipY(); + [NewObject] DOMMatrix inverse(); + + [NewObject] DOMPoint transformPoint(optional DOMPointInit point = {}); + [NewObject] Float32Array toFloat32Array(); + [NewObject] Float64Array toFloat64Array(); + + [Exposed=Window] stringifier; + [Default] object toJSON(); +}; + +[Exposed=(Window,Worker), + Serializable, + LegacyWindowAlias=(SVGMatrix,WebKitCSSMatrix)] +interface DOMMatrix : DOMMatrixReadOnly { + constructor(optional (DOMString or sequence<unrestricted double>) init); + + [NewObject] static DOMMatrix fromMatrix(optional DOMMatrixInit other = {}); + [NewObject] static DOMMatrix fromFloat32Array(Float32Array array32); + [NewObject] static DOMMatrix fromFloat64Array(Float64Array array64); + + // These attributes are simple aliases for certain elements of the 4x4 matrix + inherit attribute unrestricted double a; + inherit attribute unrestricted double b; + inherit attribute unrestricted double c; + inherit attribute unrestricted double d; + inherit attribute unrestricted double e; + inherit attribute unrestricted double f; + + inherit attribute unrestricted double m11; + inherit attribute unrestricted double m12; + inherit attribute unrestricted double m13; + inherit attribute unrestricted double m14; + inherit attribute unrestricted double m21; + inherit attribute unrestricted double m22; + inherit attribute unrestricted double m23; + inherit attribute unrestricted double m24; + inherit attribute unrestricted double m31; + inherit attribute unrestricted double m32; + inherit attribute unrestricted double m33; + inherit attribute unrestricted double m34; + inherit attribute unrestricted double m41; + inherit attribute unrestricted double m42; + inherit attribute unrestricted double m43; + inherit attribute unrestricted double m44; + + // Mutable transform methods + DOMMatrix multiplySelf(optional DOMMatrixInit other = {}); + DOMMatrix preMultiplySelf(optional DOMMatrixInit other = {}); + DOMMatrix translateSelf(optional unrestricted double tx = 0, + optional unrestricted double ty = 0, + optional unrestricted double tz = 0); + DOMMatrix scaleSelf(optional unrestricted double scaleX = 1, + optional unrestricted double scaleY, + optional unrestricted double scaleZ = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix scale3dSelf(optional unrestricted double scale = 1, + optional unrestricted double originX = 0, + optional unrestricted double originY = 0, + optional unrestricted double originZ = 0); + DOMMatrix rotateSelf(optional unrestricted double rotX = 0, + optional unrestricted double rotY, + optional unrestricted double rotZ); + DOMMatrix rotateFromVectorSelf(optional unrestricted double x = 0, + optional unrestricted double y = 0); + DOMMatrix rotateAxisAngleSelf(optional unrestricted double x = 0, + optional unrestricted double y = 0, + optional unrestricted double z = 0, + optional unrestricted double angle = 0); + DOMMatrix skewXSelf(optional unrestricted double sx = 0); + DOMMatrix skewYSelf(optional unrestricted double sy = 0); + DOMMatrix invertSelf(); + + [Exposed=Window] DOMMatrix setMatrixValue(DOMString transformList); +}; + +dictionary DOMMatrix2DInit { + unrestricted double a; + unrestricted double b; + unrestricted double c; + unrestricted double d; + unrestricted double e; + unrestricted double f; + unrestricted double m11; + unrestricted double m12; + unrestricted double m21; + unrestricted double m22; + unrestricted double m41; + unrestricted double m42; +}; + +dictionary DOMMatrixInit : DOMMatrix2DInit { + unrestricted double m13 = 0; + unrestricted double m14 = 0; + unrestricted double m23 = 0; + unrestricted double m24 = 0; + unrestricted double m31 = 0; + unrestricted double m32 = 0; + unrestricted double m33 = 1; + unrestricted double m34 = 0; + unrestricted double m43 = 0; + unrestricted double m44 = 1; + boolean is2D; +}; diff --git a/testing/web-platform/tests/interfaces/get-installed-related-apps.idl b/testing/web-platform/tests/interfaces/get-installed-related-apps.idl new file mode 100644 index 0000000000..e096044c2b --- /dev/null +++ b/testing/web-platform/tests/interfaces/get-installed-related-apps.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Get Installed Related Apps API (https://wicg.github.io/get-installed-related-apps/spec/) + +dictionary RelatedApplication { + required USVString platform; + USVString url; + DOMString id; + USVString version; +}; + +[Exposed=Window] +partial interface Navigator { + [SecureContext] Promise<sequence<RelatedApplication>> getInstalledRelatedApps(); +}; diff --git a/testing/web-platform/tests/interfaces/gyroscope.idl b/testing/web-platform/tests/interfaces/gyroscope.idl new file mode 100644 index 0000000000..00fb0efcac --- /dev/null +++ b/testing/web-platform/tests/interfaces/gyroscope.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Gyroscope (https://w3c.github.io/gyroscope/) + +[SecureContext, Exposed=Window] +interface Gyroscope : Sensor { + constructor(optional GyroscopeSensorOptions sensorOptions = {}); + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; +}; + +enum GyroscopeLocalCoordinateSystem { "device", "screen" }; + +dictionary GyroscopeSensorOptions : SensorOptions { + GyroscopeLocalCoordinateSystem referenceFrame = "device"; +}; + +dictionary GyroscopeReadingValues { + required double? x; + required double? y; + required double? z; +}; diff --git a/testing/web-platform/tests/interfaces/hr-time.idl b/testing/web-platform/tests/interfaces/hr-time.idl new file mode 100644 index 0000000000..835ee8a65c --- /dev/null +++ b/testing/web-platform/tests/interfaces/hr-time.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: High Resolution Time (https://w3c.github.io/hr-time/) + +typedef double DOMHighResTimeStamp; + +typedef unsigned long long EpochTimeStamp; + +[Exposed=(Window,Worker)] +interface Performance : EventTarget { + DOMHighResTimeStamp now(); + readonly attribute DOMHighResTimeStamp timeOrigin; + [Default] object toJSON(); +}; + +partial interface mixin WindowOrWorkerGlobalScope { + [Replaceable] readonly attribute Performance performance; +}; diff --git a/testing/web-platform/tests/interfaces/html-media-capture.idl b/testing/web-platform/tests/interfaces/html-media-capture.idl new file mode 100644 index 0000000000..696dce6789 --- /dev/null +++ b/testing/web-platform/tests/interfaces/html-media-capture.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: HTML Media Capture (https://w3c.github.io/html-media-capture/) + +partial interface HTMLInputElement { + [CEReactions] attribute DOMString capture; +}; diff --git a/testing/web-platform/tests/interfaces/html.idl b/testing/web-platform/tests/interfaces/html.idl new file mode 100644 index 0000000000..70eb5eff76 --- /dev/null +++ b/testing/web-platform/tests/interfaces/html.idl @@ -0,0 +1,2687 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: HTML Standard (https://html.spec.whatwg.org/multipage/) + +[Exposed=Window, + LegacyUnenumerableNamedProperties] +interface HTMLAllCollection { + readonly attribute unsigned long length; + getter Element (unsigned long index); + getter (HTMLCollection or Element)? namedItem(DOMString name); + (HTMLCollection or Element)? item(optional DOMString nameOrIndex); + + // Note: HTMLAllCollection objects have a custom [[Call]] internal method and an [[IsHTMLDDA]] internal slot. +}; + +[Exposed=Window] +interface HTMLFormControlsCollection : HTMLCollection { + // inherits length and item() + getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem() +}; + +[Exposed=Window] +interface RadioNodeList : NodeList { + attribute DOMString value; +}; + +[Exposed=Window] +interface HTMLOptionsCollection : HTMLCollection { + // inherits item(), namedItem() + [CEReactions] attribute unsigned long length; // shadows inherited length + [CEReactions] setter undefined (unsigned long index, HTMLOptionElement? option); + [CEReactions] undefined add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [CEReactions] undefined remove(long index); + attribute long selectedIndex; +}; + +[Exposed=(Window,Worker)] +interface DOMStringList { + readonly attribute unsigned long length; + getter DOMString? item(unsigned long index); + boolean contains(DOMString string); +}; + +enum DocumentReadyState { "loading", "interactive", "complete" }; +enum DocumentVisibilityState { "visible", "hidden" }; +typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; + +[LegacyOverrideBuiltIns] +partial interface Document { + // resource metadata management + [PutForwards=href, LegacyUnforgeable] readonly attribute Location? location; + attribute USVString domain; + readonly attribute USVString referrer; + attribute USVString cookie; + readonly attribute DOMString lastModified; + readonly attribute DocumentReadyState readyState; + + // DOM tree accessors + getter object (DOMString name); + [CEReactions] attribute DOMString title; + [CEReactions] attribute DOMString dir; + [CEReactions] attribute HTMLElement? body; + readonly attribute HTMLHeadElement? head; + [SameObject] readonly attribute HTMLCollection images; + [SameObject] readonly attribute HTMLCollection embeds; + [SameObject] readonly attribute HTMLCollection plugins; + [SameObject] readonly attribute HTMLCollection links; + [SameObject] readonly attribute HTMLCollection forms; + [SameObject] readonly attribute HTMLCollection scripts; + NodeList getElementsByName(DOMString elementName); + readonly attribute HTMLOrSVGScriptElement? currentScript; // classic scripts in a document tree only + + // dynamic markup insertion + [CEReactions] Document open(optional DOMString unused1, optional DOMString unused2); // both arguments are ignored + WindowProxy? open(USVString url, DOMString name, DOMString features); + [CEReactions] undefined close(); + [CEReactions] undefined write(DOMString... text); + [CEReactions] undefined writeln(DOMString... text); + + // user interaction + readonly attribute WindowProxy? defaultView; + boolean hasFocus(); + [CEReactions] attribute DOMString designMode; + [CEReactions] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = ""); + boolean queryCommandEnabled(DOMString commandId); + boolean queryCommandIndeterm(DOMString commandId); + boolean queryCommandState(DOMString commandId); + boolean queryCommandSupported(DOMString commandId); + DOMString queryCommandValue(DOMString commandId); + readonly attribute boolean hidden; + readonly attribute DocumentVisibilityState visibilityState; + + // special event handler IDL attributes that only apply to Document objects + [LegacyLenientThis] attribute EventHandler onreadystatechange; + attribute EventHandler onvisibilitychange; + + // also has obsolete members +}; +Document includes GlobalEventHandlers; + +partial interface mixin DocumentOrShadowRoot { + readonly attribute Element? activeElement; +}; + +[Exposed=Window] +interface HTMLElement : Element { + [HTMLConstructor] constructor(); + + // metadata attributes + [CEReactions] attribute DOMString title; + [CEReactions] attribute DOMString lang; + [CEReactions] attribute boolean translate; + [CEReactions] attribute DOMString dir; + + // user interaction + [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden; + [CEReactions] attribute boolean inert; + undefined click(); + [CEReactions] attribute DOMString accessKey; + readonly attribute DOMString accessKeyLabel; + [CEReactions] attribute boolean draggable; + [CEReactions] attribute boolean spellcheck; + [CEReactions] attribute DOMString autocapitalize; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText; + + ElementInternals attachInternals(); +}; + +HTMLElement includes GlobalEventHandlers; +HTMLElement includes ElementContentEditable; +HTMLElement includes HTMLOrSVGElement; + +[Exposed=Window] +interface HTMLUnknownElement : HTMLElement { + // Note: intentionally no [HTMLConstructor] +}; + +interface mixin HTMLOrSVGElement { + [SameObject] readonly attribute DOMStringMap dataset; + attribute DOMString nonce; // intentionally no [CEReactions] + + [CEReactions] attribute boolean autofocus; + [CEReactions] attribute long tabIndex; + undefined focus(optional FocusOptions options = {}); + undefined blur(); +}; + +[Exposed=Window, + LegacyOverrideBuiltIns] +interface DOMStringMap { + getter DOMString (DOMString name); + [CEReactions] setter undefined (DOMString name, DOMString value); + [CEReactions] deleter undefined (DOMString name); +}; + +[Exposed=Window] +interface HTMLHtmlElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLHeadElement : HTMLElement { + [HTMLConstructor] constructor(); +}; + +[Exposed=Window] +interface HTMLTitleElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString text; +}; + +[Exposed=Window] +interface HTMLBaseElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString href; + [CEReactions] attribute DOMString target; +}; + +[Exposed=Window] +interface HTMLLinkElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString href; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString rel; + [CEReactions] attribute DOMString as; + [SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString media; + [CEReactions] attribute DOMString integrity; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; + [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes; + [CEReactions] attribute USVString imageSrcset; + [CEReactions] attribute DOMString imageSizes; + [CEReactions] attribute DOMString referrerPolicy; + [SameObject, PutForwards=value] readonly attribute DOMTokenList blocking; + [CEReactions] attribute boolean disabled; + + // also has obsolete members +}; +HTMLLinkElement includes LinkStyle; + +[Exposed=Window] +interface HTMLMetaElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString httpEquiv; + [CEReactions] attribute DOMString content; + [CEReactions] attribute DOMString media; + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLStyleElement : HTMLElement { + [HTMLConstructor] constructor(); + + attribute boolean disabled; + [CEReactions] attribute DOMString media; + [SameObject, PutForwards=value] readonly attribute DOMTokenList blocking; + + // also has obsolete members +}; +HTMLStyleElement includes LinkStyle; + +[Exposed=Window] +interface HTMLBodyElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +HTMLBodyElement includes WindowEventHandlers; + +[Exposed=Window] +interface HTMLHeadingElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLParagraphElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLHRElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLPreElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLQuoteElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString cite; +}; + +[Exposed=Window] +interface HTMLOListElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean reversed; + [CEReactions] attribute long start; + [CEReactions] attribute DOMString type; + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLUListElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLMenuElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLLIElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute long value; + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLDListElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLDivElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLAnchorElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; + [CEReactions] attribute USVString ping; + [CEReactions] attribute DOMString rel; + [SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString hreflang; + [CEReactions] attribute DOMString type; + + [CEReactions] attribute DOMString text; + + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; +HTMLAnchorElement includes HTMLHyperlinkElementUtils; + +[Exposed=Window] +interface HTMLDataElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString value; +}; + +[Exposed=Window] +interface HTMLTimeElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString dateTime; +}; + +[Exposed=Window] +interface HTMLSpanElement : HTMLElement { + [HTMLConstructor] constructor(); +}; + +[Exposed=Window] +interface HTMLBRElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +interface mixin HTMLHyperlinkElementUtils { + [CEReactions] stringifier attribute USVString href; + readonly attribute USVString origin; + [CEReactions] attribute USVString protocol; + [CEReactions] attribute USVString username; + [CEReactions] attribute USVString password; + [CEReactions] attribute USVString host; + [CEReactions] attribute USVString hostname; + [CEReactions] attribute USVString port; + [CEReactions] attribute USVString pathname; + [CEReactions] attribute USVString search; + [CEReactions] attribute USVString hash; +}; + +[Exposed=Window] +interface HTMLModElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString cite; + [CEReactions] attribute DOMString dateTime; +}; + +[Exposed=Window] +interface HTMLPictureElement : HTMLElement { + [HTMLConstructor] constructor(); +}; + +[Exposed=Window] +interface HTMLSourceElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString type; + [CEReactions] attribute USVString srcset; + [CEReactions] attribute DOMString sizes; + [CEReactions] attribute DOMString media; + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; +}; + +[Exposed=Window, + LegacyFactoryFunction=Image(optional unsigned long width, optional unsigned long height)] +interface HTMLImageElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString alt; + [CEReactions] attribute USVString src; + [CEReactions] attribute USVString srcset; + [CEReactions] attribute DOMString sizes; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString useMap; + [CEReactions] attribute boolean isMap; + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; + readonly attribute unsigned long naturalWidth; + readonly attribute unsigned long naturalHeight; + readonly attribute boolean complete; + readonly attribute USVString currentSrc; + [CEReactions] attribute DOMString referrerPolicy; + [CEReactions] attribute DOMString decoding; + [CEReactions] attribute DOMString loading; + + Promise<undefined> decode(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLIFrameElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString srcdoc; + [CEReactions] attribute DOMString name; + [SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox; + [CEReactions] attribute DOMString allow; + [CEReactions] attribute boolean allowFullscreen; + [CEReactions] attribute DOMString width; + [CEReactions] attribute DOMString height; + [CEReactions] attribute DOMString referrerPolicy; + [CEReactions] attribute DOMString loading; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + Document? getSVGDocument(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLEmbedElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString width; + [CEReactions] attribute DOMString height; + Document? getSVGDocument(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLObjectElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString data; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString name; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString width; + [CEReactions] attribute DOMString height; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + Document? getSVGDocument(); + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLVideoElement : HTMLMediaElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; + readonly attribute unsigned long videoWidth; + readonly attribute unsigned long videoHeight; + [CEReactions] attribute USVString poster; + [CEReactions] attribute boolean playsInline; +}; + +[Exposed=Window, + LegacyFactoryFunction=Audio(optional DOMString src)] +interface HTMLAudioElement : HTMLMediaElement { + [HTMLConstructor] constructor(); +}; + +[Exposed=Window] +interface HTMLTrackElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString kind; + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString srclang; + [CEReactions] attribute DOMString label; + [CEReactions] attribute boolean default; + + const unsigned short NONE = 0; + const unsigned short LOADING = 1; + const unsigned short LOADED = 2; + const unsigned short ERROR = 3; + readonly attribute unsigned short readyState; + + readonly attribute TextTrack track; +}; + +enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; +typedef (MediaStream or MediaSource or Blob) MediaProvider; + +[Exposed=Window] +interface HTMLMediaElement : HTMLElement { + + // error state + readonly attribute MediaError? error; + + // network state + [CEReactions] attribute USVString src; + attribute MediaProvider? srcObject; + readonly attribute USVString currentSrc; + [CEReactions] attribute DOMString? crossOrigin; + const unsigned short NETWORK_EMPTY = 0; + const unsigned short NETWORK_IDLE = 1; + const unsigned short NETWORK_LOADING = 2; + const unsigned short NETWORK_NO_SOURCE = 3; + readonly attribute unsigned short networkState; + [CEReactions] attribute DOMString preload; + readonly attribute TimeRanges buffered; + undefined load(); + CanPlayTypeResult canPlayType(DOMString type); + + // ready state + const unsigned short HAVE_NOTHING = 0; + const unsigned short HAVE_METADATA = 1; + const unsigned short HAVE_CURRENT_DATA = 2; + const unsigned short HAVE_FUTURE_DATA = 3; + const unsigned short HAVE_ENOUGH_DATA = 4; + readonly attribute unsigned short readyState; + readonly attribute boolean seeking; + + // playback state + attribute double currentTime; + undefined fastSeek(double time); + readonly attribute unrestricted double duration; + object getStartDate(); + readonly attribute boolean paused; + attribute double defaultPlaybackRate; + attribute double playbackRate; + attribute boolean preservesPitch; + readonly attribute TimeRanges played; + readonly attribute TimeRanges seekable; + readonly attribute boolean ended; + [CEReactions] attribute boolean autoplay; + [CEReactions] attribute boolean loop; + Promise<undefined> play(); + undefined pause(); + + // controls + [CEReactions] attribute boolean controls; + attribute double volume; + attribute boolean muted; + [CEReactions] attribute boolean defaultMuted; + + // tracks + [SameObject] readonly attribute AudioTrackList audioTracks; + [SameObject] readonly attribute VideoTrackList videoTracks; + [SameObject] readonly attribute TextTrackList textTracks; + TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = ""); +}; + +[Exposed=Window] +interface MediaError { + const unsigned short MEDIA_ERR_ABORTED = 1; + const unsigned short MEDIA_ERR_NETWORK = 2; + const unsigned short MEDIA_ERR_DECODE = 3; + const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4; + + readonly attribute unsigned short code; + readonly attribute DOMString message; +}; + +[Exposed=Window] +interface AudioTrackList : EventTarget { + readonly attribute unsigned long length; + getter AudioTrack (unsigned long index); + AudioTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +[Exposed=Window] +interface AudioTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean enabled; +}; + +[Exposed=Window] +interface VideoTrackList : EventTarget { + readonly attribute unsigned long length; + getter VideoTrack (unsigned long index); + VideoTrack? getTrackById(DOMString id); + readonly attribute long selectedIndex; + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +[Exposed=Window] +interface VideoTrack { + readonly attribute DOMString id; + readonly attribute DOMString kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + attribute boolean selected; +}; + +[Exposed=Window] +interface TextTrackList : EventTarget { + readonly attribute unsigned long length; + getter TextTrack (unsigned long index); + TextTrack? getTrackById(DOMString id); + + attribute EventHandler onchange; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +enum TextTrackMode { "disabled", "hidden", "showing" }; +enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; + +[Exposed=Window] +interface TextTrack : EventTarget { + readonly attribute TextTrackKind kind; + readonly attribute DOMString label; + readonly attribute DOMString language; + + readonly attribute DOMString id; + readonly attribute DOMString inBandMetadataTrackDispatchType; + + attribute TextTrackMode mode; + + readonly attribute TextTrackCueList? cues; + readonly attribute TextTrackCueList? activeCues; + + undefined addCue(TextTrackCue cue); + undefined removeCue(TextTrackCue cue); + + attribute EventHandler oncuechange; +}; + +[Exposed=Window] +interface TextTrackCueList { + readonly attribute unsigned long length; + getter TextTrackCue (unsigned long index); + TextTrackCue? getCueById(DOMString id); +}; + +[Exposed=Window] +interface TextTrackCue : EventTarget { + readonly attribute TextTrack? track; + + attribute DOMString id; + attribute double startTime; + attribute unrestricted double endTime; + attribute boolean pauseOnExit; + + attribute EventHandler onenter; + attribute EventHandler onexit; +}; + +[Exposed=Window] +interface TimeRanges { + readonly attribute unsigned long length; + double start(unsigned long index); + double end(unsigned long index); +}; + +[Exposed=Window] +interface TrackEvent : Event { + constructor(DOMString type, optional TrackEventInit eventInitDict = {}); + + readonly attribute (VideoTrack or AudioTrack or TextTrack)? track; +}; + +dictionary TrackEventInit : EventInit { + (VideoTrack or AudioTrack or TextTrack)? track = null; +}; + +[Exposed=Window] +interface HTMLMapElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString name; + [SameObject] readonly attribute HTMLCollection areas; +}; + +[Exposed=Window] +interface HTMLAreaElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString alt; + [CEReactions] attribute DOMString coords; + [CEReactions] attribute DOMString shape; + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString download; + [CEReactions] attribute USVString ping; + [CEReactions] attribute DOMString rel; + [SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + [CEReactions] attribute DOMString referrerPolicy; + + // also has obsolete members +}; +HTMLAreaElement includes HTMLHyperlinkElementUtils; + +[Exposed=Window] +interface HTMLTableElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute HTMLTableCaptionElement? caption; + HTMLTableCaptionElement createCaption(); + [CEReactions] undefined deleteCaption(); + + [CEReactions] attribute HTMLTableSectionElement? tHead; + HTMLTableSectionElement createTHead(); + [CEReactions] undefined deleteTHead(); + + [CEReactions] attribute HTMLTableSectionElement? tFoot; + HTMLTableSectionElement createTFoot(); + [CEReactions] undefined deleteTFoot(); + + [SameObject] readonly attribute HTMLCollection tBodies; + HTMLTableSectionElement createTBody(); + + [SameObject] readonly attribute HTMLCollection rows; + HTMLTableRowElement insertRow(optional long index = -1); + [CEReactions] undefined deleteRow(long index); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTableCaptionElement : HTMLElement { + [HTMLConstructor] constructor(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTableColElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute unsigned long span; + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTableSectionElement : HTMLElement { + [HTMLConstructor] constructor(); + + [SameObject] readonly attribute HTMLCollection rows; + HTMLTableRowElement insertRow(optional long index = -1); + [CEReactions] undefined deleteRow(long index); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTableRowElement : HTMLElement { + [HTMLConstructor] constructor(); + + readonly attribute long rowIndex; + readonly attribute long sectionRowIndex; + [SameObject] readonly attribute HTMLCollection cells; + HTMLTableCellElement insertCell(optional long index = -1); + [CEReactions] undefined deleteCell(long index); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTableCellElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute unsigned long colSpan; + [CEReactions] attribute unsigned long rowSpan; + [CEReactions] attribute DOMString headers; + readonly attribute long cellIndex; + + [CEReactions] attribute DOMString scope; // only conforming for th elements + [CEReactions] attribute DOMString abbr; // only conforming for th elements + + // also has obsolete members +}; + +[Exposed=Window, + LegacyOverrideBuiltIns, + LegacyUnenumerableNamedProperties] +interface HTMLFormElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString acceptCharset; + [CEReactions] attribute USVString action; + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute DOMString enctype; + [CEReactions] attribute DOMString encoding; + [CEReactions] attribute DOMString method; + [CEReactions] attribute DOMString name; + [CEReactions] attribute boolean noValidate; + [CEReactions] attribute DOMString target; + [CEReactions] attribute DOMString rel; + [SameObject, PutForwards=value] readonly attribute DOMTokenList relList; + + [SameObject] readonly attribute HTMLFormControlsCollection elements; + readonly attribute unsigned long length; + getter Element (unsigned long index); + getter (RadioNodeList or Element) (DOMString name); + + undefined submit(); + undefined requestSubmit(optional HTMLElement? submitter = null); + [CEReactions] undefined reset(); + boolean checkValidity(); + boolean reportValidity(); +}; + +[Exposed=Window] +interface HTMLLabelElement : HTMLElement { + [HTMLConstructor] constructor(); + + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString htmlFor; + readonly attribute HTMLElement? control; +}; + +[Exposed=Window] +interface HTMLInputElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString accept; + [CEReactions] attribute DOMString alt; + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute boolean defaultChecked; + attribute boolean checked; + [CEReactions] attribute DOMString dirName; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + attribute FileList? files; + [CEReactions] attribute USVString formAction; + [CEReactions] attribute DOMString formEnctype; + [CEReactions] attribute DOMString formMethod; + [CEReactions] attribute boolean formNoValidate; + [CEReactions] attribute DOMString formTarget; + [CEReactions] attribute unsigned long height; + attribute boolean indeterminate; + readonly attribute HTMLDataListElement? list; + [CEReactions] attribute DOMString max; + [CEReactions] attribute long maxLength; + [CEReactions] attribute DOMString min; + [CEReactions] attribute long minLength; + [CEReactions] attribute boolean multiple; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString pattern; + [CEReactions] attribute DOMString placeholder; + [CEReactions] attribute boolean readOnly; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long size; + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString step; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString value; + attribute object? valueAsDate; + attribute unrestricted double valueAsNumber; + [CEReactions] attribute unsigned long width; + + undefined stepUp(optional long n = 1); + undefined stepDown(optional long n = 1); + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + readonly attribute NodeList? labels; + + undefined select(); + attribute unsigned long? selectionStart; + attribute unsigned long? selectionEnd; + attribute DOMString? selectionDirection; + undefined setRangeText(DOMString replacement); + undefined setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve"); + undefined setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); + + undefined showPicker(); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLButtonElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute USVString formAction; + [CEReactions] attribute DOMString formEnctype; + [CEReactions] attribute DOMString formMethod; + [CEReactions] attribute boolean formNoValidate; + [CEReactions] attribute DOMString formTarget; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +[Exposed=Window] +interface HTMLSelectElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute boolean multiple; + [CEReactions] attribute DOMString name; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long size; + + readonly attribute DOMString type; + + [SameObject] readonly attribute HTMLOptionsCollection options; + [CEReactions] attribute unsigned long length; + getter HTMLOptionElement? item(unsigned long index); + HTMLOptionElement? namedItem(DOMString name); + [CEReactions] undefined add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null); + [CEReactions] undefined remove(); // ChildNode overload + [CEReactions] undefined remove(long index); + [CEReactions] setter undefined (unsigned long index, HTMLOptionElement? option); + + [SameObject] readonly attribute HTMLCollection selectedOptions; + attribute long selectedIndex; + attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +[Exposed=Window] +interface HTMLDataListElement : HTMLElement { + [HTMLConstructor] constructor(); + + [SameObject] readonly attribute HTMLCollection options; +}; + +[Exposed=Window] +interface HTMLOptGroupElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean disabled; + [CEReactions] attribute DOMString label; +}; + +[Exposed=Window, + LegacyFactoryFunction=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] +interface HTMLOptionElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString label; + [CEReactions] attribute boolean defaultSelected; + attribute boolean selected; + [CEReactions] attribute DOMString value; + + [CEReactions] attribute DOMString text; + readonly attribute long index; +}; + +[Exposed=Window] +interface HTMLTextAreaElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString autocomplete; + [CEReactions] attribute unsigned long cols; + [CEReactions] attribute DOMString dirName; + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute long maxLength; + [CEReactions] attribute long minLength; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString placeholder; + [CEReactions] attribute boolean readOnly; + [CEReactions] attribute boolean required; + [CEReactions] attribute unsigned long rows; + [CEReactions] attribute DOMString wrap; + + readonly attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + attribute [LegacyNullToEmptyString] DOMString value; + readonly attribute unsigned long textLength; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + readonly attribute NodeList labels; + + undefined select(); + attribute unsigned long selectionStart; + attribute unsigned long selectionEnd; + attribute DOMString selectionDirection; + undefined setRangeText(DOMString replacement); + undefined setRangeText(DOMString replacement, unsigned long start, unsigned long end, optional SelectionMode selectionMode = "preserve"); + undefined setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); +}; + +[Exposed=Window] +interface HTMLOutputElement : HTMLElement { + [HTMLConstructor] constructor(); + + [SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString name; + + readonly attribute DOMString type; + [CEReactions] attribute DOMString defaultValue; + [CEReactions] attribute DOMString value; + + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); + + readonly attribute NodeList labels; +}; + +[Exposed=Window] +interface HTMLProgressElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute double value; + [CEReactions] attribute double max; + readonly attribute double position; + readonly attribute NodeList labels; +}; + +[Exposed=Window] +interface HTMLMeterElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute double value; + [CEReactions] attribute double min; + [CEReactions] attribute double max; + [CEReactions] attribute double low; + [CEReactions] attribute double high; + [CEReactions] attribute double optimum; + readonly attribute NodeList labels; +}; + +[Exposed=Window] +interface HTMLFieldSetElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean disabled; + readonly attribute HTMLFormElement? form; + [CEReactions] attribute DOMString name; + + readonly attribute DOMString type; + + [SameObject] readonly attribute HTMLCollection elements; + + readonly attribute boolean willValidate; + [SameObject] readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + undefined setCustomValidity(DOMString error); +}; + +[Exposed=Window] +interface HTMLLegendElement : HTMLElement { + [HTMLConstructor] constructor(); + + readonly attribute HTMLFormElement? form; + + // also has obsolete members +}; + +enum SelectionMode { + "select", + "start", + "end", + "preserve" // default +}; + +[Exposed=Window] +interface ValidityState { + readonly attribute boolean valueMissing; + readonly attribute boolean typeMismatch; + readonly attribute boolean patternMismatch; + readonly attribute boolean tooLong; + readonly attribute boolean tooShort; + readonly attribute boolean rangeUnderflow; + readonly attribute boolean rangeOverflow; + readonly attribute boolean stepMismatch; + readonly attribute boolean badInput; + readonly attribute boolean customError; + readonly attribute boolean valid; +}; + +[Exposed=Window] +interface SubmitEvent : Event { + constructor(DOMString type, optional SubmitEventInit eventInitDict = {}); + + readonly attribute HTMLElement? submitter; +}; + +dictionary SubmitEventInit : EventInit { + HTMLElement? submitter = null; +}; + +[Exposed=Window] +interface FormDataEvent : Event { + constructor(DOMString type, FormDataEventInit eventInitDict); + + readonly attribute FormData formData; +}; + +dictionary FormDataEventInit : EventInit { + required FormData formData; +}; + +[Exposed=Window] +interface HTMLDetailsElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean open; +}; + +[Exposed=Window] +interface HTMLDialogElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean open; + attribute DOMString returnValue; + [CEReactions] undefined show(); + [CEReactions] undefined showModal(); + [CEReactions] undefined close(optional DOMString returnValue); +}; + +[Exposed=Window] +interface HTMLScriptElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString type; + [CEReactions] attribute boolean noModule; + [CEReactions] attribute boolean async; + [CEReactions] attribute boolean defer; + [CEReactions] attribute DOMString? crossOrigin; + [CEReactions] attribute DOMString text; + [CEReactions] attribute DOMString integrity; + [CEReactions] attribute DOMString referrerPolicy; + [SameObject, PutForwards=value] readonly attribute DOMTokenList blocking; + + static boolean supports(DOMString type); + + // also has obsolete members +}; + +[Exposed=Window] +interface HTMLTemplateElement : HTMLElement { + [HTMLConstructor] constructor(); + + readonly attribute DocumentFragment content; +}; + +[Exposed=Window] +interface HTMLSlotElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString name; + sequence<Node> assignedNodes(optional AssignedNodesOptions options = {}); + sequence<Element> assignedElements(optional AssignedNodesOptions options = {}); + undefined assign((Element or Text)... nodes); +}; + +dictionary AssignedNodesOptions { + boolean flatten = false; +}; + +typedef (CanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext or GPUCanvasContext) RenderingContext; + +[Exposed=Window] +interface HTMLCanvasElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute unsigned long width; + [CEReactions] attribute unsigned long height; + + RenderingContext? getContext(DOMString contextId, optional any options = null); + + USVString toDataURL(optional DOMString type = "image/png", optional any quality); + undefined toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality); + OffscreenCanvas transferControlToOffscreen(); +}; + +callback BlobCallback = undefined (Blob? blob); + +typedef (HTMLImageElement or + SVGImageElement) HTMLOrSVGImageElement; + +typedef (HTMLOrSVGImageElement or + HTMLVideoElement or + HTMLCanvasElement or + ImageBitmap or + OffscreenCanvas or + VideoFrame) CanvasImageSource; + +enum PredefinedColorSpace { "srgb", "display-p3" }; + +enum CanvasFillRule { "nonzero", "evenodd" }; + +dictionary CanvasRenderingContext2DSettings { + boolean alpha = true; + boolean desynchronized = false; + PredefinedColorSpace colorSpace = "srgb"; + boolean willReadFrequently = false; +}; + +enum ImageSmoothingQuality { "low", "medium", "high" }; + +[Exposed=Window] +interface CanvasRenderingContext2D { + // back-reference to the canvas + readonly attribute HTMLCanvasElement canvas; + + CanvasRenderingContext2DSettings getContextAttributes(); +}; +CanvasRenderingContext2D includes CanvasState; +CanvasRenderingContext2D includes CanvasTransform; +CanvasRenderingContext2D includes CanvasCompositing; +CanvasRenderingContext2D includes CanvasImageSmoothing; +CanvasRenderingContext2D includes CanvasFillStrokeStyles; +CanvasRenderingContext2D includes CanvasShadowStyles; +CanvasRenderingContext2D includes CanvasFilters; +CanvasRenderingContext2D includes CanvasRect; +CanvasRenderingContext2D includes CanvasDrawPath; +CanvasRenderingContext2D includes CanvasUserInterface; +CanvasRenderingContext2D includes CanvasText; +CanvasRenderingContext2D includes CanvasDrawImage; +CanvasRenderingContext2D includes CanvasImageData; +CanvasRenderingContext2D includes CanvasPathDrawingStyles; +CanvasRenderingContext2D includes CanvasTextDrawingStyles; +CanvasRenderingContext2D includes CanvasPath; + +interface mixin CanvasState { + // state + undefined save(); // push state on state stack + undefined restore(); // pop state stack and restore state + undefined reset(); // reset the rendering context to its default state + boolean isContextLost(); // return whether context is lost +}; + +interface mixin CanvasTransform { + // transformations (default transform is the identity matrix) + undefined scale(unrestricted double x, unrestricted double y); + undefined rotate(unrestricted double angle); + undefined translate(unrestricted double x, unrestricted double y); + undefined transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + + [NewObject] DOMMatrix getTransform(); + undefined setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f); + undefined setTransform(optional DOMMatrix2DInit transform = {}); + undefined resetTransform(); + +}; + +interface mixin CanvasCompositing { + // compositing + attribute unrestricted double globalAlpha; // (default 1.0) + attribute DOMString globalCompositeOperation; // (default "source-over") +}; + +interface mixin CanvasImageSmoothing { + // image smoothing + attribute boolean imageSmoothingEnabled; // (default true) + attribute ImageSmoothingQuality imageSmoothingQuality; // (default low) + +}; + +interface mixin CanvasFillStrokeStyles { + // colors and styles (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) + attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) + attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) + CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); + CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); + CanvasGradient createConicGradient(double startAngle, double x, double y); + CanvasPattern? createPattern(CanvasImageSource image, [LegacyNullToEmptyString] DOMString repetition); + +}; + +interface mixin CanvasShadowStyles { + // shadows + attribute unrestricted double shadowOffsetX; // (default 0) + attribute unrestricted double shadowOffsetY; // (default 0) + attribute unrestricted double shadowBlur; // (default 0) + attribute DOMString shadowColor; // (default transparent black) +}; + +interface mixin CanvasFilters { + // filters + attribute DOMString filter; // (default "none") +}; + +interface mixin CanvasRect { + // rects + undefined clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + undefined fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + undefined strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); +}; + +interface mixin CanvasDrawPath { + // path API (see also CanvasPath) + undefined beginPath(); + undefined fill(optional CanvasFillRule fillRule = "nonzero"); + undefined fill(Path2D path, optional CanvasFillRule fillRule = "nonzero"); + undefined stroke(); + undefined stroke(Path2D path); + undefined clip(optional CanvasFillRule fillRule = "nonzero"); + undefined clip(Path2D path, optional CanvasFillRule fillRule = "nonzero"); + boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero"); + boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero"); + boolean isPointInStroke(unrestricted double x, unrestricted double y); + boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); +}; + +interface mixin CanvasUserInterface { + undefined drawFocusIfNeeded(Element element); + undefined drawFocusIfNeeded(Path2D path, Element element); + undefined scrollPathIntoView(); + undefined scrollPathIntoView(Path2D path); +}; + +interface mixin CanvasText { + // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) + undefined fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + undefined strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); + TextMetrics measureText(DOMString text); +}; + +interface mixin CanvasDrawImage { + // drawing images + undefined drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy); + undefined drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh); + undefined drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh); +}; + +interface mixin CanvasImageData { + // pixel manipulation + ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {}); + ImageData createImageData(ImageData imagedata); + ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh, optional ImageDataSettings settings = {}); + undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy); + undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight); +}; + +enum CanvasLineCap { "butt", "round", "square" }; +enum CanvasLineJoin { "round", "bevel", "miter" }; +enum CanvasTextAlign { "start", "end", "left", "right", "center" }; +enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" }; +enum CanvasDirection { "ltr", "rtl", "inherit" }; +enum CanvasFontKerning { "auto", "normal", "none" }; +enum CanvasFontStretch { "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" }; +enum CanvasFontVariantCaps { "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps" }; +enum CanvasTextRendering { "auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision" }; + +interface mixin CanvasPathDrawingStyles { + // line caps/joins + attribute unrestricted double lineWidth; // (default 1) + attribute CanvasLineCap lineCap; // (default "butt") + attribute CanvasLineJoin lineJoin; // (default "miter") + attribute unrestricted double miterLimit; // (default 10) + + // dashed lines + undefined setLineDash(sequence<unrestricted double> segments); // default empty + sequence<unrestricted double> getLineDash(); + attribute unrestricted double lineDashOffset; +}; + +interface mixin CanvasTextDrawingStyles { + // text + attribute DOMString font; // (default 10px sans-serif) + attribute CanvasTextAlign textAlign; // (default: "start") + attribute CanvasTextBaseline textBaseline; // (default: "alphabetic") + attribute CanvasDirection direction; // (default: "inherit") + attribute DOMString letterSpacing; // (default: "0px") + attribute CanvasFontKerning fontKerning; // (default: "auto") + attribute CanvasFontStretch fontStretch; // (default: "normal") + attribute CanvasFontVariantCaps fontVariantCaps; // (default: "normal") + attribute CanvasTextRendering textRendering; // (default: "auto") + attribute DOMString wordSpacing; // (default: "0px") +}; + +interface mixin CanvasPath { + // shared path API methods + undefined closePath(); + undefined moveTo(unrestricted double x, unrestricted double y); + undefined lineTo(unrestricted double x, unrestricted double y); + undefined quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y); + undefined bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y); + undefined arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); + undefined rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); + undefined roundRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h, optional (unrestricted double or DOMPointInit or sequence<(unrestricted double or DOMPointInit)>) radii = 0); + undefined arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean counterclockwise = false); + undefined ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean counterclockwise = false); +}; + +[Exposed=(Window,Worker)] +interface CanvasGradient { + // opaque object + undefined addColorStop(double offset, DOMString color); +}; + +[Exposed=(Window,Worker)] +interface CanvasPattern { + // opaque object + undefined setTransform(optional DOMMatrix2DInit transform = {}); +}; + +[Exposed=(Window,Worker)] +interface TextMetrics { + // x-direction + readonly attribute double width; // advance width + readonly attribute double actualBoundingBoxLeft; + readonly attribute double actualBoundingBoxRight; + + // y-direction + readonly attribute double fontBoundingBoxAscent; + readonly attribute double fontBoundingBoxDescent; + readonly attribute double actualBoundingBoxAscent; + readonly attribute double actualBoundingBoxDescent; + readonly attribute double emHeightAscent; + readonly attribute double emHeightDescent; + readonly attribute double hangingBaseline; + readonly attribute double alphabeticBaseline; + readonly attribute double ideographicBaseline; +}; + +dictionary ImageDataSettings { + PredefinedColorSpace colorSpace; +}; + +[Exposed=(Window,Worker), + Serializable] +interface ImageData { + constructor(unsigned long sw, unsigned long sh, optional ImageDataSettings settings = {}); + constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh, optional ImageDataSettings settings = {}); + + readonly attribute unsigned long width; + readonly attribute unsigned long height; + readonly attribute Uint8ClampedArray data; + readonly attribute PredefinedColorSpace colorSpace; +}; + +[Exposed=(Window,Worker)] +interface Path2D { + constructor(optional (Path2D or DOMString) path); + + undefined addPath(Path2D path, optional DOMMatrix2DInit transform = {}); +}; +Path2D includes CanvasPath; + +[Exposed=(Window,Worker)] +interface ImageBitmapRenderingContext { + readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas; + undefined transferFromImageBitmap(ImageBitmap? bitmap); +}; + +dictionary ImageBitmapRenderingContextSettings { + boolean alpha = true; +}; + +typedef (OffscreenCanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext or GPUCanvasContext) OffscreenRenderingContext; + +dictionary ImageEncodeOptions { + DOMString type = "image/png"; + unrestricted double quality; +}; + +enum OffscreenRenderingContextId { "2d", "bitmaprenderer", "webgl", "webgl2", "webgpu" }; + +[Exposed=(Window,Worker), Transferable] +interface OffscreenCanvas : EventTarget { + constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height); + + attribute [EnforceRange] unsigned long long width; + attribute [EnforceRange] unsigned long long height; + + OffscreenRenderingContext? getContext(OffscreenRenderingContextId contextId, optional any options = null); + ImageBitmap transferToImageBitmap(); + Promise<Blob> convertToBlob(optional ImageEncodeOptions options = {}); + + attribute EventHandler oncontextlost; + attribute EventHandler oncontextrestored; +}; + +[Exposed=(Window,Worker)] +interface OffscreenCanvasRenderingContext2D { + undefined commit(); + readonly attribute OffscreenCanvas canvas; +}; + +OffscreenCanvasRenderingContext2D includes CanvasState; +OffscreenCanvasRenderingContext2D includes CanvasTransform; +OffscreenCanvasRenderingContext2D includes CanvasCompositing; +OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing; +OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles; +OffscreenCanvasRenderingContext2D includes CanvasShadowStyles; +OffscreenCanvasRenderingContext2D includes CanvasFilters; +OffscreenCanvasRenderingContext2D includes CanvasRect; +OffscreenCanvasRenderingContext2D includes CanvasDrawPath; +OffscreenCanvasRenderingContext2D includes CanvasText; +OffscreenCanvasRenderingContext2D includes CanvasDrawImage; +OffscreenCanvasRenderingContext2D includes CanvasImageData; +OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles; +OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles; +OffscreenCanvasRenderingContext2D includes CanvasPath; + +[Exposed=Window] +interface CustomElementRegistry { + [CEReactions] undefined define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {}); + (CustomElementConstructor or undefined) get(DOMString name); + Promise<CustomElementConstructor> whenDefined(DOMString name); + [CEReactions] undefined upgrade(Node root); +}; + +callback CustomElementConstructor = HTMLElement (); + +dictionary ElementDefinitionOptions { + DOMString extends; +}; + +[Exposed=Window] +interface ElementInternals { + // Shadow root access + readonly attribute ShadowRoot? shadowRoot; + + // Form-associated custom elements + undefined setFormValue((File or USVString or FormData)? value, + optional (File or USVString or FormData)? state); + + readonly attribute HTMLFormElement? form; + + undefined setValidity(optional ValidityStateFlags flags = {}, + optional DOMString message, + optional HTMLElement anchor); + readonly attribute boolean willValidate; + readonly attribute ValidityState validity; + readonly attribute DOMString validationMessage; + boolean checkValidity(); + boolean reportValidity(); + + readonly attribute NodeList labels; +}; + +// Accessibility semantics +ElementInternals includes ARIAMixin; + +dictionary ValidityStateFlags { + boolean valueMissing = false; + boolean typeMismatch = false; + boolean patternMismatch = false; + boolean tooLong = false; + boolean tooShort = false; + boolean rangeUnderflow = false; + boolean rangeOverflow = false; + boolean stepMismatch = false; + boolean badInput = false; + boolean customError = false; +}; + +[Exposed=Window] +interface UserActivation { + readonly attribute boolean hasBeenActive; + readonly attribute boolean isActive; +}; + +partial interface Navigator { + [SameObject] readonly attribute UserActivation userActivation; +}; + +dictionary FocusOptions { + boolean preventScroll = false; + boolean focusVisible; +}; + +interface mixin ElementContentEditable { + [CEReactions] attribute DOMString contentEditable; + [CEReactions] attribute DOMString enterKeyHint; + readonly attribute boolean isContentEditable; + [CEReactions] attribute DOMString inputMode; +}; + +[Exposed=Window] +interface DataTransfer { + constructor(); + + attribute DOMString dropEffect; + attribute DOMString effectAllowed; + + [SameObject] readonly attribute DataTransferItemList items; + + undefined setDragImage(Element image, long x, long y); + + /* old interface */ + readonly attribute FrozenArray<DOMString> types; + DOMString getData(DOMString format); + undefined setData(DOMString format, DOMString data); + undefined clearData(optional DOMString format); + [SameObject] readonly attribute FileList files; +}; + +[Exposed=Window] +interface DataTransferItemList { + readonly attribute unsigned long length; + getter DataTransferItem (unsigned long index); + DataTransferItem? add(DOMString data, DOMString type); + DataTransferItem? add(File data); + undefined remove(unsigned long index); + undefined clear(); +}; + +[Exposed=Window] +interface DataTransferItem { + readonly attribute DOMString kind; + readonly attribute DOMString type; + undefined getAsString(FunctionStringCallback? _callback); + File? getAsFile(); +}; + +callback FunctionStringCallback = undefined (DOMString data); + +[Exposed=Window] +interface DragEvent : MouseEvent { + constructor(DOMString type, optional DragEventInit eventInitDict = {}); + + readonly attribute DataTransfer? dataTransfer; +}; + +dictionary DragEventInit : MouseEventInit { + DataTransfer? dataTransfer = null; +}; + +[Global=Window, + Exposed=Window, + LegacyUnenumerableNamedProperties] +interface Window : EventTarget { + // the current browsing context + [LegacyUnforgeable] readonly attribute WindowProxy window; + [Replaceable] readonly attribute WindowProxy self; + [LegacyUnforgeable] readonly attribute Document document; + attribute DOMString name; + [PutForwards=href, LegacyUnforgeable] readonly attribute Location location; + readonly attribute History history; + readonly attribute CustomElementRegistry customElements; + [Replaceable] readonly attribute BarProp locationbar; + [Replaceable] readonly attribute BarProp menubar; + [Replaceable] readonly attribute BarProp personalbar; + [Replaceable] readonly attribute BarProp scrollbars; + [Replaceable] readonly attribute BarProp statusbar; + [Replaceable] readonly attribute BarProp toolbar; + attribute DOMString status; + undefined close(); + readonly attribute boolean closed; + undefined stop(); + undefined focus(); + undefined blur(); + + // other browsing contexts + [Replaceable] readonly attribute WindowProxy frames; + [Replaceable] readonly attribute unsigned long length; + [LegacyUnforgeable] readonly attribute WindowProxy? top; + attribute any opener; + [Replaceable] readonly attribute WindowProxy? parent; + readonly attribute Element? frameElement; + WindowProxy? open(optional USVString url = "", optional DOMString target = "_blank", optional [LegacyNullToEmptyString] DOMString features = ""); + getter object (DOMString name); + // Since this is the global object, the IDL named getter adds a NamedPropertiesObject exotic + // object on the prototype chain. Indeed, this does not make the global object an exotic object. + // Indexed access is taken care of by the WindowProxy exotic object. + + // the user agent + readonly attribute Navigator navigator; + readonly attribute Navigator clientInformation; // legacy alias of .navigator + readonly attribute boolean originAgentCluster; + + // user prompts + undefined alert(); + undefined alert(DOMString message); + boolean confirm(optional DOMString message = ""); + DOMString? prompt(optional DOMString message = "", optional DOMString default = ""); + undefined print(); + + undefined postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []); + undefined postMessage(any message, optional WindowPostMessageOptions options = {}); + + // also has obsolete members +}; +Window includes GlobalEventHandlers; +Window includes WindowEventHandlers; + +dictionary WindowPostMessageOptions : StructuredSerializeOptions { + USVString targetOrigin = "/"; +}; + +[Exposed=Window] +interface BarProp { + readonly attribute boolean visible; +}; + +[Exposed=Window] +interface Location { // but see also additional creation steps and overridden internal methods + [LegacyUnforgeable] stringifier attribute USVString href; + [LegacyUnforgeable] readonly attribute USVString origin; + [LegacyUnforgeable] attribute USVString protocol; + [LegacyUnforgeable] attribute USVString host; + [LegacyUnforgeable] attribute USVString hostname; + [LegacyUnforgeable] attribute USVString port; + [LegacyUnforgeable] attribute USVString pathname; + [LegacyUnforgeable] attribute USVString search; + [LegacyUnforgeable] attribute USVString hash; + + [LegacyUnforgeable] undefined assign(USVString url); + [LegacyUnforgeable] undefined replace(USVString url); + [LegacyUnforgeable] undefined reload(); + + [LegacyUnforgeable, SameObject] readonly attribute DOMStringList ancestorOrigins; +}; + +enum ScrollRestoration { "auto", "manual" }; + +[Exposed=Window] +interface History { + readonly attribute unsigned long length; + attribute ScrollRestoration scrollRestoration; + readonly attribute any state; + undefined go(optional long delta = 0); + undefined back(); + undefined forward(); + undefined pushState(any data, DOMString unused, optional USVString? url = null); + undefined replaceState(any data, DOMString unused, optional USVString? url = null); +}; + +[Exposed=Window] +interface PopStateEvent : Event { + constructor(DOMString type, optional PopStateEventInit eventInitDict = {}); + + readonly attribute any state; +}; + +dictionary PopStateEventInit : EventInit { + any state = null; +}; + +[Exposed=Window] +interface HashChangeEvent : Event { + constructor(DOMString type, optional HashChangeEventInit eventInitDict = {}); + + readonly attribute USVString oldURL; + readonly attribute USVString newURL; +}; + +dictionary HashChangeEventInit : EventInit { + USVString oldURL = ""; + USVString newURL = ""; +}; + +[Exposed=Window] +interface PageTransitionEvent : Event { + constructor(DOMString type, optional PageTransitionEventInit eventInitDict = {}); + + readonly attribute boolean persisted; +}; + +dictionary PageTransitionEventInit : EventInit { + boolean persisted = false; +}; + +[Exposed=Window] +interface BeforeUnloadEvent : Event { + attribute DOMString returnValue; +}; + +[Exposed=*] +interface ErrorEvent : Event { + constructor(DOMString type, optional ErrorEventInit eventInitDict = {}); + + readonly attribute DOMString message; + readonly attribute USVString filename; + readonly attribute unsigned long lineno; + readonly attribute unsigned long colno; + readonly attribute any error; +}; + +dictionary ErrorEventInit : EventInit { + DOMString message = ""; + USVString filename = ""; + unsigned long lineno = 0; + unsigned long colno = 0; + any error; +}; + +[Exposed=*] +interface PromiseRejectionEvent : Event { + constructor(DOMString type, PromiseRejectionEventInit eventInitDict); + + readonly attribute Promise<any> promise; + readonly attribute any reason; +}; + +dictionary PromiseRejectionEventInit : EventInit { + required Promise<any> promise; + any reason; +}; + +[LegacyTreatNonObjectAsNull] +callback EventHandlerNonNull = any (Event event); +typedef EventHandlerNonNull? EventHandler; + +[LegacyTreatNonObjectAsNull] +callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long colno, optional any error); +typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; + +[LegacyTreatNonObjectAsNull] +callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event); +typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; + +interface mixin GlobalEventHandlers { + attribute EventHandler onabort; + attribute EventHandler onauxclick; + attribute EventHandler onbeforeinput; + attribute EventHandler onbeforematch; + attribute EventHandler onblur; + attribute EventHandler oncancel; + attribute EventHandler oncanplay; + attribute EventHandler oncanplaythrough; + attribute EventHandler onchange; + attribute EventHandler onclick; + attribute EventHandler onclose; + attribute EventHandler oncontextlost; + attribute EventHandler oncontextmenu; + attribute EventHandler oncontextrestored; + attribute EventHandler oncopy; + attribute EventHandler oncuechange; + attribute EventHandler oncut; + attribute EventHandler ondblclick; + attribute EventHandler ondrag; + attribute EventHandler ondragend; + attribute EventHandler ondragenter; + attribute EventHandler ondragleave; + attribute EventHandler ondragover; + attribute EventHandler ondragstart; + attribute EventHandler ondrop; + attribute EventHandler ondurationchange; + attribute EventHandler onemptied; + attribute EventHandler onended; + attribute OnErrorEventHandler onerror; + attribute EventHandler onfocus; + attribute EventHandler onformdata; + attribute EventHandler oninput; + attribute EventHandler oninvalid; + attribute EventHandler onkeydown; + attribute EventHandler onkeypress; + attribute EventHandler onkeyup; + attribute EventHandler onload; + attribute EventHandler onloadeddata; + attribute EventHandler onloadedmetadata; + attribute EventHandler onloadstart; + attribute EventHandler onmousedown; + [LegacyLenientThis] attribute EventHandler onmouseenter; + [LegacyLenientThis] attribute EventHandler onmouseleave; + attribute EventHandler onmousemove; + attribute EventHandler onmouseout; + attribute EventHandler onmouseover; + attribute EventHandler onmouseup; + attribute EventHandler onpaste; + attribute EventHandler onpause; + attribute EventHandler onplay; + attribute EventHandler onplaying; + attribute EventHandler onprogress; + attribute EventHandler onratechange; + attribute EventHandler onreset; + attribute EventHandler onresize; + attribute EventHandler onscroll; + attribute EventHandler onscrollend; + attribute EventHandler onsecuritypolicyviolation; + attribute EventHandler onseeked; + attribute EventHandler onseeking; + attribute EventHandler onselect; + attribute EventHandler onslotchange; + attribute EventHandler onstalled; + attribute EventHandler onsubmit; + attribute EventHandler onsuspend; + attribute EventHandler ontimeupdate; + attribute EventHandler ontoggle; + attribute EventHandler onvolumechange; + attribute EventHandler onwaiting; + attribute EventHandler onwebkitanimationend; + attribute EventHandler onwebkitanimationiteration; + attribute EventHandler onwebkitanimationstart; + attribute EventHandler onwebkittransitionend; + attribute EventHandler onwheel; +}; + +interface mixin WindowEventHandlers { + attribute EventHandler onafterprint; + attribute EventHandler onbeforeprint; + attribute OnBeforeUnloadEventHandler onbeforeunload; + attribute EventHandler onhashchange; + attribute EventHandler onlanguagechange; + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; + attribute EventHandler onoffline; + attribute EventHandler ononline; + attribute EventHandler onpagehide; + attribute EventHandler onpageshow; + attribute EventHandler onpopstate; + attribute EventHandler onrejectionhandled; + attribute EventHandler onstorage; + attribute EventHandler onunhandledrejection; + attribute EventHandler onunload; +}; + +typedef (DOMString or Function) TimerHandler; + +interface mixin WindowOrWorkerGlobalScope { + [Replaceable] readonly attribute USVString origin; + readonly attribute boolean isSecureContext; + readonly attribute boolean crossOriginIsolated; + + undefined reportError(any e); + + // base64 utility methods + DOMString btoa(DOMString data); + ByteString atob(DOMString data); + + // timers + long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments); + undefined clearTimeout(optional long id = 0); + long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments); + undefined clearInterval(optional long id = 0); + + // microtask queuing + undefined queueMicrotask(VoidFunction callback); + + // ImageBitmap + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options = {}); + Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {}); + + // structured cloning + any structuredClone(any value, optional StructuredSerializeOptions options = {}); +}; +Window includes WindowOrWorkerGlobalScope; +WorkerGlobalScope includes WindowOrWorkerGlobalScope; + +[Exposed=Window] +interface DOMParser { + constructor(); + + [NewObject] Document parseFromString(DOMString string, DOMParserSupportedType type); +}; + +enum DOMParserSupportedType { + "text/html", + "text/xml", + "application/xml", + "application/xhtml+xml", + "image/svg+xml" +}; + +[Exposed=Window] +interface Navigator { + // objects implementing this interface also implement the interfaces given below +}; +Navigator includes NavigatorID; +Navigator includes NavigatorLanguage; +Navigator includes NavigatorOnLine; +Navigator includes NavigatorContentUtils; +Navigator includes NavigatorCookies; +Navigator includes NavigatorPlugins; +Navigator includes NavigatorConcurrentHardware; + +interface mixin NavigatorID { + readonly attribute DOMString appCodeName; // constant "Mozilla" + readonly attribute DOMString appName; // constant "Netscape" + readonly attribute DOMString appVersion; + readonly attribute DOMString platform; + readonly attribute DOMString product; // constant "Gecko" + [Exposed=Window] readonly attribute DOMString productSub; + readonly attribute DOMString userAgent; + [Exposed=Window] readonly attribute DOMString vendor; + [Exposed=Window] readonly attribute DOMString vendorSub; // constant "" +}; + +partial interface mixin NavigatorID { + [Exposed=Window] boolean taintEnabled(); // constant false + [Exposed=Window] readonly attribute DOMString oscpu; +}; + +interface mixin NavigatorLanguage { + readonly attribute DOMString language; + readonly attribute FrozenArray<DOMString> languages; +}; + +interface mixin NavigatorOnLine { + readonly attribute boolean onLine; +}; + +interface mixin NavigatorContentUtils { + [SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url); + [SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url); +}; + +interface mixin NavigatorCookies { + readonly attribute boolean cookieEnabled; +}; + +interface mixin NavigatorPlugins { + [SameObject] readonly attribute PluginArray plugins; + [SameObject] readonly attribute MimeTypeArray mimeTypes; + boolean javaEnabled(); + readonly attribute boolean pdfViewerEnabled; +}; + +[Exposed=Window, + LegacyUnenumerableNamedProperties] +interface PluginArray { + undefined refresh(); + readonly attribute unsigned long length; + getter Plugin? item(unsigned long index); + getter Plugin? namedItem(DOMString name); +}; + +[Exposed=Window, + LegacyUnenumerableNamedProperties] +interface MimeTypeArray { + readonly attribute unsigned long length; + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; + +[Exposed=Window, + LegacyUnenumerableNamedProperties] +interface Plugin { + readonly attribute DOMString name; + readonly attribute DOMString description; + readonly attribute DOMString filename; + readonly attribute unsigned long length; + getter MimeType? item(unsigned long index); + getter MimeType? namedItem(DOMString name); +}; + +[Exposed=Window] +interface MimeType { + readonly attribute DOMString type; + readonly attribute DOMString description; + readonly attribute DOMString suffixes; + readonly attribute Plugin enabledPlugin; +}; + +[Exposed=(Window,Worker), Serializable, Transferable] +interface ImageBitmap { + readonly attribute unsigned long width; + readonly attribute unsigned long height; + undefined close(); +}; + +typedef (CanvasImageSource or + Blob or + ImageData) ImageBitmapSource; + +enum ImageOrientation { "none", "flipY" }; +enum PremultiplyAlpha { "none", "premultiply", "default" }; +enum ColorSpaceConversion { "none", "default" }; +enum ResizeQuality { "pixelated", "low", "medium", "high" }; + +dictionary ImageBitmapOptions { + ImageOrientation imageOrientation = "none"; + PremultiplyAlpha premultiplyAlpha = "default"; + ColorSpaceConversion colorSpaceConversion = "default"; + [EnforceRange] unsigned long resizeWidth; + [EnforceRange] unsigned long resizeHeight; + ResizeQuality resizeQuality = "low"; +}; + +callback FrameRequestCallback = undefined (DOMHighResTimeStamp time); + +interface mixin AnimationFrameProvider { + unsigned long requestAnimationFrame(FrameRequestCallback callback); + undefined cancelAnimationFrame(unsigned long handle); +}; +Window includes AnimationFrameProvider; +DedicatedWorkerGlobalScope includes AnimationFrameProvider; + +[Exposed=(Window,Worker,AudioWorklet)] +interface MessageEvent : Event { + constructor(DOMString type, optional MessageEventInit eventInitDict = {}); + + readonly attribute any data; + readonly attribute USVString origin; + readonly attribute DOMString lastEventId; + readonly attribute MessageEventSource? source; + readonly attribute FrozenArray<MessagePort> ports; + + undefined initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any data = null, optional USVString origin = "", optional DOMString lastEventId = "", optional MessageEventSource? source = null, optional sequence<MessagePort> ports = []); +}; + +dictionary MessageEventInit : EventInit { + any data = null; + USVString origin = ""; + DOMString lastEventId = ""; + MessageEventSource? source = null; + sequence<MessagePort> ports = []; +}; + +typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource; + +[Exposed=(Window,Worker)] +interface EventSource : EventTarget { + constructor(USVString url, optional EventSourceInit eventSourceInitDict = {}); + + readonly attribute USVString url; + readonly attribute boolean withCredentials; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSED = 2; + readonly attribute unsigned short readyState; + + // networking + attribute EventHandler onopen; + attribute EventHandler onmessage; + attribute EventHandler onerror; + undefined close(); +}; + +dictionary EventSourceInit { + boolean withCredentials = false; +}; + +[Exposed=(Window,Worker)] +interface MessageChannel { + constructor(); + + readonly attribute MessagePort port1; + readonly attribute MessagePort port2; +}; + +[Exposed=(Window,Worker,AudioWorklet), Transferable] +interface MessagePort : EventTarget { + undefined postMessage(any message, sequence<object> transfer); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + undefined start(); + undefined close(); + + // event handlers + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +dictionary StructuredSerializeOptions { + sequence<object> transfer = []; +}; + +[Exposed=(Window,Worker)] +interface BroadcastChannel : EventTarget { + constructor(DOMString name); + + readonly attribute DOMString name; + undefined postMessage(any message); + undefined close(); + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +[Exposed=Worker] +interface WorkerGlobalScope : EventTarget { + readonly attribute WorkerGlobalScope self; + readonly attribute WorkerLocation location; + readonly attribute WorkerNavigator navigator; + undefined importScripts(USVString... urls); + + attribute OnErrorEventHandler onerror; + attribute EventHandler onlanguagechange; + attribute EventHandler onoffline; + attribute EventHandler ononline; + attribute EventHandler onrejectionhandled; + attribute EventHandler onunhandledrejection; +}; + +[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker] +interface DedicatedWorkerGlobalScope : WorkerGlobalScope { + [Replaceable] readonly attribute DOMString name; + + undefined postMessage(any message, sequence<object> transfer); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + + undefined close(); + + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +[Global=(Worker,SharedWorker),Exposed=SharedWorker] +interface SharedWorkerGlobalScope : WorkerGlobalScope { + [Replaceable] readonly attribute DOMString name; + + undefined close(); + + attribute EventHandler onconnect; +}; + +interface mixin AbstractWorker { + attribute EventHandler onerror; +}; + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface Worker : EventTarget { + constructor(USVString scriptURL, optional WorkerOptions options = {}); + + undefined terminate(); + + undefined postMessage(any message, sequence<object> transfer); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +dictionary WorkerOptions { + WorkerType type = "classic"; + RequestCredentials credentials = "same-origin"; // credentials is only used if type is "module" + DOMString name = ""; +}; + +enum WorkerType { "classic", "module" }; + +Worker includes AbstractWorker; + +[Exposed=Window] +interface SharedWorker : EventTarget { + constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options = {}); + + readonly attribute MessagePort port; +}; +SharedWorker includes AbstractWorker; + +interface mixin NavigatorConcurrentHardware { + readonly attribute unsigned long long hardwareConcurrency; +}; + +[Exposed=Worker] +interface WorkerNavigator {}; +WorkerNavigator includes NavigatorID; +WorkerNavigator includes NavigatorLanguage; +WorkerNavigator includes NavigatorOnLine; +WorkerNavigator includes NavigatorConcurrentHardware; + +[Exposed=Worker] +interface WorkerLocation { + stringifier readonly attribute USVString href; + readonly attribute USVString origin; + readonly attribute USVString protocol; + readonly attribute USVString host; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; +}; + +[Exposed=Worklet, SecureContext] +interface WorkletGlobalScope {}; + +[Exposed=Window, SecureContext] +interface Worklet { + [NewObject] Promise<undefined> addModule(USVString moduleURL, optional WorkletOptions options = {}); +}; + +dictionary WorkletOptions { + RequestCredentials credentials = "same-origin"; +}; + +[Exposed=Window] +interface Storage { + readonly attribute unsigned long length; + DOMString? key(unsigned long index); + getter DOMString? getItem(DOMString key); + setter undefined setItem(DOMString key, DOMString value); + deleter undefined removeItem(DOMString key); + undefined clear(); +}; + +interface mixin WindowSessionStorage { + readonly attribute Storage sessionStorage; +}; +Window includes WindowSessionStorage; + +interface mixin WindowLocalStorage { + readonly attribute Storage localStorage; +}; +Window includes WindowLocalStorage; + +[Exposed=Window] +interface StorageEvent : Event { + constructor(DOMString type, optional StorageEventInit eventInitDict = {}); + + readonly attribute DOMString? key; + readonly attribute DOMString? oldValue; + readonly attribute DOMString? newValue; + readonly attribute USVString url; + readonly attribute Storage? storageArea; + + undefined initStorageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional DOMString? key = null, optional DOMString? oldValue = null, optional DOMString? newValue = null, optional USVString url = "", optional Storage? storageArea = null); +}; + +dictionary StorageEventInit : EventInit { + DOMString? key = null; + DOMString? oldValue = null; + DOMString? newValue = null; + USVString url = ""; + Storage? storageArea = null; +}; + +[Exposed=Window] +interface HTMLMarqueeElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString behavior; + [CEReactions] attribute DOMString bgColor; + [CEReactions] attribute DOMString direction; + [CEReactions] attribute DOMString height; + [CEReactions] attribute unsigned long hspace; + [CEReactions] attribute long loop; + [CEReactions] attribute unsigned long scrollAmount; + [CEReactions] attribute unsigned long scrollDelay; + [CEReactions] attribute boolean trueSpeed; + [CEReactions] attribute unsigned long vspace; + [CEReactions] attribute DOMString width; + + undefined start(); + undefined stop(); +}; + +[Exposed=Window] +interface HTMLFrameSetElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString cols; + [CEReactions] attribute DOMString rows; +}; +HTMLFrameSetElement includes WindowEventHandlers; + +[Exposed=Window] +interface HTMLFrameElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString scrolling; + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString frameBorder; + [CEReactions] attribute USVString longDesc; + [CEReactions] attribute boolean noResize; + readonly attribute Document? contentDocument; + readonly attribute WindowProxy? contentWindow; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginHeight; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginWidth; +}; + +partial interface HTMLAnchorElement { + [CEReactions] attribute DOMString coords; + [CEReactions] attribute DOMString charset; + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString rev; + [CEReactions] attribute DOMString shape; +}; + +partial interface HTMLAreaElement { + [CEReactions] attribute boolean noHref; +}; + +partial interface HTMLBodyElement { + [CEReactions] attribute [LegacyNullToEmptyString] DOMString text; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString link; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString vLink; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString aLink; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor; + [CEReactions] attribute DOMString background; +}; + +partial interface HTMLBRElement { + [CEReactions] attribute DOMString clear; +}; + +partial interface HTMLTableCaptionElement { + [CEReactions] attribute DOMString align; +}; + +partial interface HTMLTableColElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString ch; + [CEReactions] attribute DOMString chOff; + [CEReactions] attribute DOMString vAlign; + [CEReactions] attribute DOMString width; +}; + +[Exposed=Window] +interface HTMLDirectoryElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute boolean compact; +}; + +partial interface HTMLDivElement { + [CEReactions] attribute DOMString align; +}; + +partial interface HTMLDListElement { + [CEReactions] attribute boolean compact; +}; + +partial interface HTMLEmbedElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString name; +}; + +[Exposed=Window] +interface HTMLFontElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString color; + [CEReactions] attribute DOMString face; + [CEReactions] attribute DOMString size; +}; + +partial interface HTMLHeadingElement { + [CEReactions] attribute DOMString align; +}; + +partial interface HTMLHRElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString color; + [CEReactions] attribute boolean noShade; + [CEReactions] attribute DOMString size; + [CEReactions] attribute DOMString width; +}; + +partial interface HTMLHtmlElement { + [CEReactions] attribute DOMString version; +}; + +partial interface HTMLIFrameElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString scrolling; + [CEReactions] attribute DOMString frameBorder; + [CEReactions] attribute USVString longDesc; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginHeight; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString marginWidth; +}; + +partial interface HTMLImageElement { + [CEReactions] attribute DOMString name; + [CEReactions] attribute USVString lowsrc; + [CEReactions] attribute DOMString align; + [CEReactions] attribute unsigned long hspace; + [CEReactions] attribute unsigned long vspace; + [CEReactions] attribute USVString longDesc; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString border; +}; + +partial interface HTMLInputElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString useMap; +}; + +partial interface HTMLLegendElement { + [CEReactions] attribute DOMString align; +}; + +partial interface HTMLLIElement { + [CEReactions] attribute DOMString type; +}; + +partial interface HTMLLinkElement { + [CEReactions] attribute DOMString charset; + [CEReactions] attribute DOMString rev; + [CEReactions] attribute DOMString target; +}; + +partial interface HTMLMenuElement { + [CEReactions] attribute boolean compact; +}; + +partial interface HTMLMetaElement { + [CEReactions] attribute DOMString scheme; +}; + +partial interface HTMLObjectElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString archive; + [CEReactions] attribute DOMString code; + [CEReactions] attribute boolean declare; + [CEReactions] attribute unsigned long hspace; + [CEReactions] attribute DOMString standby; + [CEReactions] attribute unsigned long vspace; + [CEReactions] attribute DOMString codeBase; + [CEReactions] attribute DOMString codeType; + [CEReactions] attribute DOMString useMap; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString border; +}; + +partial interface HTMLOListElement { + [CEReactions] attribute boolean compact; +}; + +partial interface HTMLParagraphElement { + [CEReactions] attribute DOMString align; +}; + +[Exposed=Window] +interface HTMLParamElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute DOMString name; + [CEReactions] attribute DOMString value; + [CEReactions] attribute DOMString type; + [CEReactions] attribute DOMString valueType; +}; + +partial interface HTMLPreElement { + [CEReactions] attribute long width; +}; + +partial interface HTMLStyleElement { + [CEReactions] attribute DOMString type; +}; + +partial interface HTMLScriptElement { + [CEReactions] attribute DOMString charset; + [CEReactions] attribute DOMString event; + [CEReactions] attribute DOMString htmlFor; +}; + +partial interface HTMLTableElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString border; + [CEReactions] attribute DOMString frame; + [CEReactions] attribute DOMString rules; + [CEReactions] attribute DOMString summary; + [CEReactions] attribute DOMString width; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString cellPadding; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString cellSpacing; +}; + +partial interface HTMLTableSectionElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString ch; + [CEReactions] attribute DOMString chOff; + [CEReactions] attribute DOMString vAlign; +}; + +partial interface HTMLTableCellElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString axis; + [CEReactions] attribute DOMString height; + [CEReactions] attribute DOMString width; + + [CEReactions] attribute DOMString ch; + [CEReactions] attribute DOMString chOff; + [CEReactions] attribute boolean noWrap; + [CEReactions] attribute DOMString vAlign; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor; +}; + +partial interface HTMLTableRowElement { + [CEReactions] attribute DOMString align; + [CEReactions] attribute DOMString ch; + [CEReactions] attribute DOMString chOff; + [CEReactions] attribute DOMString vAlign; + + [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor; +}; + +partial interface HTMLUListElement { + [CEReactions] attribute boolean compact; + [CEReactions] attribute DOMString type; +}; + +partial interface Document { + [CEReactions] attribute [LegacyNullToEmptyString] DOMString fgColor; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString linkColor; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString vlinkColor; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString alinkColor; + [CEReactions] attribute [LegacyNullToEmptyString] DOMString bgColor; + + [SameObject] readonly attribute HTMLCollection anchors; + [SameObject] readonly attribute HTMLCollection applets; + + undefined clear(); + undefined captureEvents(); + undefined releaseEvents(); + + [SameObject] readonly attribute HTMLAllCollection all; +}; + +partial interface Window { + undefined captureEvents(); + undefined releaseEvents(); + + [Replaceable, SameObject] readonly attribute External external; +}; + +[Exposed=Window] +interface External { + undefined AddSearchProvider(); + undefined IsSearchProviderInstalled(); +}; diff --git a/testing/web-platform/tests/interfaces/idle-detection.idl b/testing/web-platform/tests/interfaces/idle-detection.idl new file mode 100644 index 0000000000..54d42f3ca0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/idle-detection.idl @@ -0,0 +1,31 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Idle Detection API (https://wicg.github.io/idle-detection/) + +enum UserIdleState { + "active", + "idle" +}; + +enum ScreenIdleState { + "locked", + "unlocked" +}; + +dictionary IdleOptions { + [EnforceRange] unsigned long long threshold; + AbortSignal signal; +}; + +[ + SecureContext, + Exposed=(Window,DedicatedWorker) +] interface IdleDetector : EventTarget { + constructor(); + readonly attribute UserIdleState? userState; + readonly attribute ScreenIdleState? screenState; + attribute EventHandler onchange; + [Exposed=Window] static Promise<PermissionState> requestPermission(); + Promise<undefined> start(optional IdleOptions options = {}); +}; diff --git a/testing/web-platform/tests/interfaces/image-capture.idl b/testing/web-platform/tests/interfaces/image-capture.idl new file mode 100644 index 0000000000..f98912cb6a --- /dev/null +++ b/testing/web-platform/tests/interfaces/image-capture.idl @@ -0,0 +1,160 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: MediaStream Image Capture (https://w3c.github.io/mediacapture-image/) + +[Exposed=Window] +interface ImageCapture { + constructor(MediaStreamTrack videoTrack); + Promise<Blob> takePhoto(optional PhotoSettings photoSettings = {}); + Promise<PhotoCapabilities> getPhotoCapabilities(); + Promise<PhotoSettings> getPhotoSettings(); + + Promise<ImageBitmap> grabFrame(); + + readonly attribute MediaStreamTrack track; +}; + +dictionary PhotoCapabilities { + RedEyeReduction redEyeReduction; + MediaSettingsRange imageHeight; + MediaSettingsRange imageWidth; + sequence<FillLightMode> fillLightMode; +}; + +dictionary PhotoSettings { + FillLightMode fillLightMode; + double imageHeight; + double imageWidth; + boolean redEyeReduction; +}; + +dictionary MediaSettingsRange { + double max; + double min; + double step; +}; + +enum RedEyeReduction { + "never", + "always", + "controllable" +}; + +enum FillLightMode { + "auto", + "off", + "flash" +}; + +partial dictionary MediaTrackSupportedConstraints { + boolean whiteBalanceMode = true; + boolean exposureMode = true; + boolean focusMode = true; + boolean pointsOfInterest = true; + + boolean exposureCompensation = true; + boolean exposureTime = true; + boolean colorTemperature = true; + boolean iso = true; + + boolean brightness = true; + boolean contrast = true; + boolean pan = true; + boolean saturation = true; + boolean sharpness = true; + boolean focusDistance = true; + boolean tilt = true; + boolean zoom = true; + boolean torch = true; +}; + +partial dictionary MediaTrackCapabilities { + sequence<DOMString> whiteBalanceMode; + sequence<DOMString> exposureMode; + sequence<DOMString> focusMode; + + MediaSettingsRange exposureCompensation; + MediaSettingsRange exposureTime; + MediaSettingsRange colorTemperature; + MediaSettingsRange iso; + + MediaSettingsRange brightness; + MediaSettingsRange contrast; + MediaSettingsRange saturation; + MediaSettingsRange sharpness; + + MediaSettingsRange focusDistance; + MediaSettingsRange pan; + MediaSettingsRange tilt; + MediaSettingsRange zoom; + + boolean torch; +}; + +partial dictionary MediaTrackConstraintSet { + ConstrainDOMString whiteBalanceMode; + ConstrainDOMString exposureMode; + ConstrainDOMString focusMode; + ConstrainPoint2D pointsOfInterest; + + ConstrainDouble exposureCompensation; + ConstrainDouble exposureTime; + ConstrainDouble colorTemperature; + ConstrainDouble iso; + + ConstrainDouble brightness; + ConstrainDouble contrast; + ConstrainDouble saturation; + ConstrainDouble sharpness; + + ConstrainDouble focusDistance; + (boolean or ConstrainDouble) pan; + (boolean or ConstrainDouble) tilt; + (boolean or ConstrainDouble) zoom; + + ConstrainBoolean torch; +}; + +partial dictionary MediaTrackSettings { + DOMString whiteBalanceMode; + DOMString exposureMode; + DOMString focusMode; + sequence<Point2D> pointsOfInterest; + + double exposureCompensation; + double exposureTime; + double colorTemperature; + double iso; + + double brightness; + double contrast; + double saturation; + double sharpness; + + double focusDistance; + double pan; + double tilt; + double zoom; + + boolean torch; +}; + +dictionary ConstrainPoint2DParameters { + sequence<Point2D> exact; + sequence<Point2D> ideal; +}; + +typedef (sequence<Point2D> or ConstrainPoint2DParameters) ConstrainPoint2D; + +enum MeteringMode { + "none", + "manual", + "single-shot", + "continuous" +}; + +dictionary Point2D { + double x = 0.0; + double y = 0.0; +}; diff --git a/testing/web-platform/tests/interfaces/image-resource.idl b/testing/web-platform/tests/interfaces/image-resource.idl new file mode 100644 index 0000000000..d7f653e681 --- /dev/null +++ b/testing/web-platform/tests/interfaces/image-resource.idl @@ -0,0 +1,11 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Image Resource (https://w3c.github.io/image-resource/) + +dictionary ImageResource { + required USVString src; + DOMString sizes; + DOMString type; + DOMString label; +}; diff --git a/testing/web-platform/tests/interfaces/ink-enhancement.idl b/testing/web-platform/tests/interfaces/ink-enhancement.idl new file mode 100644 index 0000000000..660e2254c9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/ink-enhancement.idl @@ -0,0 +1,32 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Ink API (https://wicg.github.io/ink-enhancement/) + +[Exposed=Window] +interface Ink { + Promise<InkPresenter> requestPresenter( + optional InkPresenterParam param = {}); +}; + +dictionary InkPresenterParam { + Element? presentationArea = null; +}; + +[Exposed=Window] +interface InkPresenter { + readonly attribute Element? presentationArea; + readonly attribute unsigned long expectedImprovement; + + undefined updateInkTrailStartPoint(PointerEvent event, InkTrailStyle style); +}; + +dictionary InkTrailStyle { + required DOMString color; + required unrestricted double diameter; +}; + +[Exposed=Window] +partial interface Navigator { + [SameObject] readonly attribute Ink ink; +}; diff --git a/testing/web-platform/tests/interfaces/input-device-capabilities.idl b/testing/web-platform/tests/interfaces/input-device-capabilities.idl new file mode 100644 index 0000000000..72d91de2fc --- /dev/null +++ b/testing/web-platform/tests/interfaces/input-device-capabilities.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Input Device Capabilities (https://wicg.github.io/input-device-capabilities/) + +[Exposed=Window] +interface InputDeviceCapabilities { + constructor(optional InputDeviceCapabilitiesInit deviceInitDict = {}); + readonly attribute boolean firesTouchEvents; + readonly attribute boolean pointerMovementScrolls; +}; + +dictionary InputDeviceCapabilitiesInit { + boolean firesTouchEvents = false; + boolean pointerMovementScrolls = false; +}; + +partial interface UIEvent { + readonly attribute InputDeviceCapabilities? sourceCapabilities; +}; + +partial dictionary UIEventInit { + InputDeviceCapabilities? sourceCapabilities = null; +}; diff --git a/testing/web-platform/tests/interfaces/input-events.idl b/testing/web-platform/tests/interfaces/input-events.idl new file mode 100644 index 0000000000..6a2147b93e --- /dev/null +++ b/testing/web-platform/tests/interfaces/input-events.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Input Events Level 2 (https://w3c.github.io/input-events/) + +partial interface InputEvent { + readonly attribute DataTransfer? dataTransfer; + sequence<StaticRange> getTargetRanges(); +}; + +partial dictionary InputEventInit { + DataTransfer? dataTransfer = null; + sequence<StaticRange> targetRanges = []; +}; diff --git a/testing/web-platform/tests/interfaces/intersection-observer.idl b/testing/web-platform/tests/interfaces/intersection-observer.idl new file mode 100644 index 0000000000..52db1c4baa --- /dev/null +++ b/testing/web-platform/tests/interfaces/intersection-observer.idl @@ -0,0 +1,46 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Intersection Observer (https://w3c.github.io/IntersectionObserver/) + +callback IntersectionObserverCallback = undefined (sequence<IntersectionObserverEntry> entries, IntersectionObserver observer); + +[Exposed=Window] +interface IntersectionObserver { + constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options = {}); + readonly attribute (Element or Document)? root; + readonly attribute DOMString rootMargin; + readonly attribute FrozenArray<double> thresholds; + undefined observe(Element target); + undefined unobserve(Element target); + undefined disconnect(); + sequence<IntersectionObserverEntry> takeRecords(); +}; + +[Exposed=Window] +interface IntersectionObserverEntry { + constructor(IntersectionObserverEntryInit intersectionObserverEntryInit); + readonly attribute DOMHighResTimeStamp time; + readonly attribute DOMRectReadOnly? rootBounds; + readonly attribute DOMRectReadOnly boundingClientRect; + readonly attribute DOMRectReadOnly intersectionRect; + readonly attribute boolean isIntersecting; + readonly attribute double intersectionRatio; + readonly attribute Element target; +}; + +dictionary IntersectionObserverEntryInit { + required DOMHighResTimeStamp time; + required DOMRectInit? rootBounds; + required DOMRectInit boundingClientRect; + required DOMRectInit intersectionRect; + required boolean isIntersecting; + required double intersectionRatio; + required Element target; +}; + +dictionary IntersectionObserverInit { + (Element or Document)? root = null; + DOMString rootMargin = "0px"; + (double or sequence<double>) threshold = 0; +}; diff --git a/testing/web-platform/tests/interfaces/intervention-reporting.idl b/testing/web-platform/tests/interfaces/intervention-reporting.idl new file mode 100644 index 0000000000..3c3b8001e7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/intervention-reporting.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Intervention Reporting (https://wicg.github.io/intervention-reporting/) + +[Exposed=(Window,Worker)] +interface InterventionReportBody : ReportBody { + [Default] object toJSON(); + readonly attribute DOMString id; + readonly attribute DOMString message; + readonly attribute DOMString? sourceFile; + readonly attribute unsigned long? lineNumber; + readonly attribute unsigned long? columnNumber; +}; diff --git a/testing/web-platform/tests/interfaces/is-input-pending.idl b/testing/web-platform/tests/interfaces/is-input-pending.idl new file mode 100644 index 0000000000..735bdf02a1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/is-input-pending.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Early detection of input events (https://wicg.github.io/is-input-pending/) + +dictionary IsInputPendingOptions { + boolean includeContinuous = false; +}; + +[Exposed=Window] interface Scheduling { + boolean isInputPending(optional IsInputPendingOptions isInputPendingOptions = {}); +}; + +partial interface Navigator { + readonly attribute Scheduling scheduling; +}; diff --git a/testing/web-platform/tests/interfaces/js-self-profiling.idl b/testing/web-platform/tests/interfaces/js-self-profiling.idl new file mode 100644 index 0000000000..04cd1afc73 --- /dev/null +++ b/testing/web-platform/tests/interfaces/js-self-profiling.idl @@ -0,0 +1,44 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: JS Self-Profiling API (https://wicg.github.io/js-self-profiling/) + +[Exposed=Window] +interface Profiler : EventTarget { + readonly attribute DOMHighResTimeStamp sampleInterval; + readonly attribute boolean stopped; + + constructor(ProfilerInitOptions options); + Promise<ProfilerTrace> stop(); +}; + +typedef DOMString ProfilerResource; + +dictionary ProfilerTrace { + required sequence<ProfilerResource> resources; + required sequence<ProfilerFrame> frames; + required sequence<ProfilerStack> stacks; + required sequence<ProfilerSample> samples; +}; + +dictionary ProfilerSample { + required DOMHighResTimeStamp timestamp; + unsigned long long stackId; +}; + +dictionary ProfilerStack { + unsigned long long parentId; + required unsigned long long frameId; +}; + +dictionary ProfilerFrame { + required DOMString name; + unsigned long long resourceId; + unsigned long long line; + unsigned long long column; +}; + +dictionary ProfilerInitOptions { + required DOMHighResTimeStamp sampleInterval; + required unsigned long maxBufferSize; +}; diff --git a/testing/web-platform/tests/interfaces/keyboard-lock.idl b/testing/web-platform/tests/interfaces/keyboard-lock.idl new file mode 100644 index 0000000000..d81e9924a3 --- /dev/null +++ b/testing/web-platform/tests/interfaces/keyboard-lock.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Keyboard Lock (https://wicg.github.io/keyboard-lock/) + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute Keyboard keyboard; +}; + +[SecureContext, Exposed=Window] +interface Keyboard : EventTarget { + Promise<undefined> lock(optional sequence<DOMString> keyCodes = []); + undefined unlock(); +}; diff --git a/testing/web-platform/tests/interfaces/keyboard-map.idl b/testing/web-platform/tests/interfaces/keyboard-map.idl new file mode 100644 index 0000000000..51037348e5 --- /dev/null +++ b/testing/web-platform/tests/interfaces/keyboard-map.idl @@ -0,0 +1,15 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Keyboard Map (https://wicg.github.io/keyboard-map/) + +[Exposed=Window] +interface KeyboardLayoutMap { + readonly maplike<DOMString, DOMString>; +}; + +partial interface Keyboard { + Promise<KeyboardLayoutMap> getLayoutMap(); + + attribute EventHandler onlayoutchange; +}; diff --git a/testing/web-platform/tests/interfaces/largest-contentful-paint.idl b/testing/web-platform/tests/interfaces/largest-contentful-paint.idl new file mode 100644 index 0000000000..872ba552b0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/largest-contentful-paint.idl @@ -0,0 +1,15 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Largest Contentful Paint (https://w3c.github.io/largest-contentful-paint/) + +[Exposed=Window] +interface LargestContentfulPaint : PerformanceEntry { + readonly attribute DOMHighResTimeStamp renderTime; + readonly attribute DOMHighResTimeStamp loadTime; + readonly attribute unsigned long size; + readonly attribute DOMString id; + readonly attribute DOMString url; + readonly attribute Element? element; + [Default] object toJSON(); +}; diff --git a/testing/web-platform/tests/interfaces/layout-instability.idl b/testing/web-platform/tests/interfaces/layout-instability.idl new file mode 100644 index 0000000000..4fb1b70398 --- /dev/null +++ b/testing/web-platform/tests/interfaces/layout-instability.idl @@ -0,0 +1,20 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Layout Instability API (https://wicg.github.io/layout-instability/) + +[Exposed=Window] +interface LayoutShift : PerformanceEntry { + readonly attribute double value; + readonly attribute boolean hadRecentInput; + readonly attribute DOMHighResTimeStamp lastInputTime; + readonly attribute FrozenArray<LayoutShiftAttribution> sources; + [Default] object toJSON(); +}; + +[Exposed=Window] +interface LayoutShiftAttribution { + readonly attribute Node? node; + readonly attribute DOMRectReadOnly previousRect; + readonly attribute DOMRectReadOnly currentRect; +}; diff --git a/testing/web-platform/tests/interfaces/local-font-access.idl b/testing/web-platform/tests/interfaces/local-font-access.idl new file mode 100644 index 0000000000..10e2e1f012 --- /dev/null +++ b/testing/web-platform/tests/interfaces/local-font-access.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Local Font Access API (https://wicg.github.io/local-font-access/) + +[SecureContext] +partial interface Window { + Promise<sequence<FontData>> queryLocalFonts(optional QueryOptions options = {}); +}; + +dictionary QueryOptions { + sequence<DOMString> postscriptNames; +}; + +[Exposed=Window] +interface FontData { + Promise<Blob> blob(); + + // Names + readonly attribute USVString postscriptName; + readonly attribute USVString fullName; + readonly attribute USVString family; + readonly attribute USVString style; +}; diff --git a/testing/web-platform/tests/interfaces/longtasks.idl b/testing/web-platform/tests/interfaces/longtasks.idl new file mode 100644 index 0000000000..c0aaa7a297 --- /dev/null +++ b/testing/web-platform/tests/interfaces/longtasks.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Long Tasks API (https://w3c.github.io/longtasks/) + +[Exposed=Window] +interface PerformanceLongTaskTiming : PerformanceEntry { + readonly attribute FrozenArray<TaskAttributionTiming> attribution; + [Default] object toJSON(); +}; + +[Exposed=Window] +interface TaskAttributionTiming : PerformanceEntry { + readonly attribute DOMString containerType; + readonly attribute DOMString containerSrc; + readonly attribute DOMString containerId; + readonly attribute DOMString containerName; + [Default] object toJSON(); +}; diff --git a/testing/web-platform/tests/interfaces/magnetometer.idl b/testing/web-platform/tests/interfaces/magnetometer.idl new file mode 100644 index 0000000000..45ba9edcfe --- /dev/null +++ b/testing/web-platform/tests/interfaces/magnetometer.idl @@ -0,0 +1,46 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Magnetometer (https://w3c.github.io/magnetometer/) + +[SecureContext, + Exposed=Window] +interface Magnetometer : Sensor { + constructor(optional MagnetometerSensorOptions sensorOptions = {}); + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; +}; + +enum MagnetometerLocalCoordinateSystem { "device", "screen" }; + +dictionary MagnetometerSensorOptions : SensorOptions { + MagnetometerLocalCoordinateSystem referenceFrame = "device"; +}; + +[SecureContext, + Exposed=Window] +interface UncalibratedMagnetometer : Sensor { + constructor(optional MagnetometerSensorOptions sensorOptions = {}); + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; + readonly attribute double? xBias; + readonly attribute double? yBias; + readonly attribute double? zBias; +}; + +dictionary MagnetometerReadingValues { + required double? x; + required double? y; + required double? z; +}; + +dictionary UncalibratedMagnetometerReadingValues { + required double? x; + required double? y; + required double? z; + required double? xBias; + required double? yBias; + required double? zBias; +}; diff --git a/testing/web-platform/tests/interfaces/manifest-incubations.idl b/testing/web-platform/tests/interfaces/manifest-incubations.idl new file mode 100644 index 0000000000..bab3998ded --- /dev/null +++ b/testing/web-platform/tests/interfaces/manifest-incubations.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Manifest Incubations (https://wicg.github.io/manifest-incubations/) + +[Exposed=Window] +interface BeforeInstallPromptEvent : Event { + constructor(DOMString type, optional EventInit eventInitDict = {}); + Promise<PromptResponseObject> prompt(); +}; + +dictionary PromptResponseObject { + AppBannerPromptOutcome userChoice; +}; + +enum AppBannerPromptOutcome { + "accepted", + "dismissed" +}; + +partial interface Window { + attribute EventHandler onappinstalled; + attribute EventHandler onbeforeinstallprompt; +}; diff --git a/testing/web-platform/tests/interfaces/mathml-core.idl b/testing/web-platform/tests/interfaces/mathml-core.idl new file mode 100644 index 0000000000..fb5539ec75 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mathml-core.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: MathML Core (https://w3c.github.io/mathml-core/) + +[Exposed=Window] +interface MathMLElement : Element { }; +MathMLElement includes GlobalEventHandlers; +MathMLElement includes HTMLOrSVGElement; diff --git a/testing/web-platform/tests/interfaces/media-capabilities.idl b/testing/web-platform/tests/interfaces/media-capabilities.idl new file mode 100644 index 0000000000..94339b6d1d --- /dev/null +++ b/testing/web-platform/tests/interfaces/media-capabilities.idl @@ -0,0 +1,115 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Capabilities (https://w3c.github.io/media-capabilities/) + +dictionary MediaConfiguration { + VideoConfiguration video; + AudioConfiguration audio; +}; + +dictionary MediaDecodingConfiguration : MediaConfiguration { + required MediaDecodingType type; + MediaCapabilitiesKeySystemConfiguration keySystemConfiguration; +}; + +dictionary MediaEncodingConfiguration : MediaConfiguration { + required MediaEncodingType type; +}; + +enum MediaDecodingType { + "file", + "media-source", + "webrtc" +}; + +enum MediaEncodingType { + "record", + "webrtc" +}; + +dictionary VideoConfiguration { + required DOMString contentType; + required unsigned long width; + required unsigned long height; + required unsigned long long bitrate; + required double framerate; + boolean hasAlphaChannel; + HdrMetadataType hdrMetadataType; + ColorGamut colorGamut; + TransferFunction transferFunction; + DOMString scalabilityMode; + boolean spatialScalability; +}; + +enum HdrMetadataType { + "smpteSt2086", + "smpteSt2094-10", + "smpteSt2094-40" +}; + +enum ColorGamut { + "srgb", + "p3", + "rec2020" +}; + +enum TransferFunction { + "srgb", + "pq", + "hlg" +}; + +dictionary AudioConfiguration { + required DOMString contentType; + DOMString channels; + unsigned long long bitrate; + unsigned long samplerate; + boolean spatialRendering; +}; + +dictionary MediaCapabilitiesKeySystemConfiguration { + required DOMString keySystem; + DOMString initDataType = ""; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence<DOMString> sessionTypes; + KeySystemTrackConfiguration audio; + KeySystemTrackConfiguration video; +}; + +dictionary KeySystemTrackConfiguration { + DOMString robustness = ""; + DOMString? encryptionScheme = null; +}; + +dictionary MediaCapabilitiesInfo { + required boolean supported; + required boolean smooth; + required boolean powerEfficient; +}; + +dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo { + required MediaKeySystemAccess keySystemAccess; + MediaDecodingConfiguration configuration; +}; + +dictionary MediaCapabilitiesEncodingInfo : MediaCapabilitiesInfo { + MediaEncodingConfiguration configuration; +}; + +[Exposed=Window] +partial interface Navigator { + [SameObject] readonly attribute MediaCapabilities mediaCapabilities; +}; + +[Exposed=Worker] +partial interface WorkerNavigator { + [SameObject] readonly attribute MediaCapabilities mediaCapabilities; +}; + +[Exposed=(Window, Worker)] +interface MediaCapabilities { + [NewObject] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration); + [NewObject] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration); +}; diff --git a/testing/web-platform/tests/interfaces/media-playback-quality.idl b/testing/web-platform/tests/interfaces/media-playback-quality.idl new file mode 100644 index 0000000000..f73d8dbd59 --- /dev/null +++ b/testing/web-platform/tests/interfaces/media-playback-quality.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Playback Quality (https://w3c.github.io/media-playback-quality/) + +partial interface HTMLVideoElement { + VideoPlaybackQuality getVideoPlaybackQuality(); +}; + +[Exposed=Window] +interface VideoPlaybackQuality { + readonly attribute DOMHighResTimeStamp creationTime; + readonly attribute unsigned long droppedVideoFrames; + readonly attribute unsigned long totalVideoFrames; + + // Deprecated! + readonly attribute unsigned long corruptedVideoFrames; +}; diff --git a/testing/web-platform/tests/interfaces/media-source.idl b/testing/web-platform/tests/interfaces/media-source.idl new file mode 100644 index 0000000000..11059437f6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/media-source.idl @@ -0,0 +1,91 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Source Extensions™ (https://w3c.github.io/media-source/) + +enum ReadyState { + "closed", + "open", + "ended" +}; + +enum EndOfStreamError { + "network", + "decode" +}; + +[Exposed=(Window,DedicatedWorker)] +interface MediaSource : EventTarget { + constructor(); + + [ SameObject, Exposed=DedicatedWorker ] + readonly attribute MediaSourceHandle handle; + + readonly attribute SourceBufferList sourceBuffers; + readonly attribute SourceBufferList activeSourceBuffers; + readonly attribute ReadyState readyState; + attribute unrestricted double duration; + attribute EventHandler onsourceopen; + attribute EventHandler onsourceended; + attribute EventHandler onsourceclose; + static readonly attribute boolean canConstructInDedicatedWorker; + SourceBuffer addSourceBuffer (DOMString type); + undefined removeSourceBuffer (SourceBuffer sourceBuffer); + undefined endOfStream (optional EndOfStreamError error); + undefined setLiveSeekableRange (double start, double end); + undefined clearLiveSeekableRange (); + static boolean isTypeSupported (DOMString type); +}; + +[Transferable, Exposed=(Window,DedicatedWorker)] +interface MediaSourceHandle {}; + +enum AppendMode { + "segments", + "sequence" +}; + +[Exposed=(Window,DedicatedWorker)] +interface SourceBuffer : EventTarget { + attribute AppendMode mode; + readonly attribute boolean updating; + readonly attribute TimeRanges buffered; + attribute double timestampOffset; + readonly attribute AudioTrackList audioTracks; + readonly attribute VideoTrackList videoTracks; + readonly attribute TextTrackList textTracks; + attribute double appendWindowStart; + attribute unrestricted double appendWindowEnd; + attribute EventHandler onupdatestart; + attribute EventHandler onupdate; + attribute EventHandler onupdateend; + attribute EventHandler onerror; + attribute EventHandler onabort; + undefined appendBuffer (BufferSource data); + undefined abort (); + undefined changeType (DOMString type); + undefined remove (double start, unrestricted double end); +}; + +[Exposed=(Window,DedicatedWorker)] +interface SourceBufferList : EventTarget { + readonly attribute unsigned long length; + attribute EventHandler onaddsourcebuffer; + attribute EventHandler onremovesourcebuffer; + getter SourceBuffer (unsigned long index); +}; + +[Exposed=(Window,DedicatedWorker)] +partial interface AudioTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; + +[Exposed=(Window,DedicatedWorker)] +partial interface VideoTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; + +[Exposed=(Window,DedicatedWorker)] +partial interface TextTrack { + readonly attribute SourceBuffer? sourceBuffer; +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-automation.idl b/testing/web-platform/tests/interfaces/mediacapture-automation.idl new file mode 100644 index 0000000000..9fe2623d64 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-automation.idl @@ -0,0 +1,36 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Capture Automation (https://w3c.github.io/mediacapture-automation/) + +enum MockCapturePromptResult { + "granted", + "denied" +}; + +dictionary MockCapturePromptResultConfiguration { + MockCapturePromptResult getUserMedia; + MockCapturePromptResult getDisplayMedia; +}; + +dictionary MockCaptureDeviceConfiguration { + DOMString label; + DOMString deviceId; + DOMString groupId; +}; + +dictionary MockCameraConfiguration : MockCaptureDeviceConfiguration { + double defaultFrameRate = 30; + DOMString facingMode = "user"; + // TODO: Add more capabilities parameters like: + // ULongRange width; + // ULongRange height; + // DoubleRange frameRate; +}; + +dictionary MockMicrophoneConfiguration : MockCaptureDeviceConfiguration { + unsigned long defaultSampleRate = 44100; + // TODO: Add more capabilities parameters like: + // ULongRange sampleRate; + // sequence echoCancellation; +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-fromelement.idl b/testing/web-platform/tests/interfaces/mediacapture-fromelement.idl new file mode 100644 index 0000000000..b25f87018d --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-fromelement.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Capture from DOM Elements (https://w3c.github.io/mediacapture-fromelement/) + +partial interface HTMLMediaElement { + MediaStream captureStream (); +}; + +partial interface HTMLCanvasElement { + MediaStream captureStream (optional double frameRequestRate); +}; + +[Exposed=Window] interface CanvasCaptureMediaStreamTrack : MediaStreamTrack { + readonly attribute HTMLCanvasElement canvas; + undefined requestFrame (); +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-handle-actions.idl b/testing/web-platform/tests/interfaces/mediacapture-handle-actions.idl new file mode 100644 index 0000000000..408f8e83bb --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-handle-actions.idl @@ -0,0 +1,31 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: The Capture-Handle Actions Mechanism (https://w3c.github.io/mediacapture-handle/actions/) + +partial interface MediaDevices { + undefined setSupportedCaptureActions(sequence<DOMString> actions); + attribute EventHandler oncaptureaction; +}; + +enum CaptureAction { + "next", + "previous", + "first", + "last" +}; + +[Exposed=Window] +interface CaptureActionEvent : Event { + constructor(optional CaptureActionEventInit init = {}); + readonly attribute CaptureAction action; +}; + +dictionary CaptureActionEventInit : EventInit { + DOMString action; +}; + +partial interface MediaStreamTrack { + sequence<DOMString> getSupportedCaptureActions(); + Promise<undefined> sendCaptureAction(CaptureAction action); +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-region.idl b/testing/web-platform/tests/interfaces/mediacapture-region.idl new file mode 100644 index 0000000000..7a5fb7ffd2 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-region.idl @@ -0,0 +1,15 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Region Capture (https://w3c.github.io/mediacapture-region/) + +[Exposed=(Window,Worker), Serializable] +interface CropTarget { + [Exposed=Window, SecureContext] static Promise<CropTarget> fromElement(Element element); +}; + +[Exposed = Window] +interface BrowserCaptureMediaStreamTrack : MediaStreamTrack { + Promise<undefined> cropTo(CropTarget? cropTarget); + BrowserCaptureMediaStreamTrack clone(); +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-streams.idl b/testing/web-platform/tests/interfaces/mediacapture-streams.idl new file mode 100644 index 0000000000..5b41f3fa65 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-streams.idl @@ -0,0 +1,248 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/) + +[Exposed=Window] +interface MediaStream : EventTarget { + constructor(); + constructor(MediaStream stream); + constructor(sequence<MediaStreamTrack> tracks); + readonly attribute DOMString id; + sequence<MediaStreamTrack> getAudioTracks(); + sequence<MediaStreamTrack> getVideoTracks(); + sequence<MediaStreamTrack> getTracks(); + MediaStreamTrack? getTrackById(DOMString trackId); + undefined addTrack(MediaStreamTrack track); + undefined removeTrack(MediaStreamTrack track); + MediaStream clone(); + readonly attribute boolean active; + attribute EventHandler onaddtrack; + attribute EventHandler onremovetrack; +}; + +[Exposed=Window] +interface MediaStreamTrack : EventTarget { + readonly attribute DOMString kind; + readonly attribute DOMString id; + readonly attribute DOMString label; + attribute boolean enabled; + readonly attribute boolean muted; + attribute EventHandler onmute; + attribute EventHandler onunmute; + readonly attribute MediaStreamTrackState readyState; + attribute EventHandler onended; + MediaStreamTrack clone(); + undefined stop(); + MediaTrackCapabilities getCapabilities(); + MediaTrackConstraints getConstraints(); + MediaTrackSettings getSettings(); + Promise<undefined> applyConstraints(optional MediaTrackConstraints constraints = {}); +}; + +enum MediaStreamTrackState { + "live", + "ended" +}; + +dictionary MediaTrackSupportedConstraints { + boolean width = true; + boolean height = true; + boolean aspectRatio = true; + boolean frameRate = true; + boolean facingMode = true; + boolean resizeMode = true; + boolean sampleRate = true; + boolean sampleSize = true; + boolean echoCancellation = true; + boolean autoGainControl = true; + boolean noiseSuppression = true; + boolean latency = true; + boolean channelCount = true; + boolean deviceId = true; + boolean groupId = true; +}; + +dictionary MediaTrackCapabilities { + ULongRange width; + ULongRange height; + DoubleRange aspectRatio; + DoubleRange frameRate; + sequence<DOMString> facingMode; + sequence<DOMString> resizeMode; + ULongRange sampleRate; + ULongRange sampleSize; + sequence<boolean> echoCancellation; + sequence<boolean> autoGainControl; + sequence<boolean> noiseSuppression; + DoubleRange latency; + ULongRange channelCount; + DOMString deviceId; + DOMString groupId; +}; + +dictionary MediaTrackConstraints : MediaTrackConstraintSet { + sequence<MediaTrackConstraintSet> advanced; +}; + +dictionary MediaTrackConstraintSet { + ConstrainULong width; + ConstrainULong height; + ConstrainDouble aspectRatio; + ConstrainDouble frameRate; + ConstrainDOMString facingMode; + ConstrainDOMString resizeMode; + ConstrainULong sampleRate; + ConstrainULong sampleSize; + ConstrainBoolean echoCancellation; + ConstrainBoolean autoGainControl; + ConstrainBoolean noiseSuppression; + ConstrainDouble latency; + ConstrainULong channelCount; + ConstrainDOMString deviceId; + ConstrainDOMString groupId; +}; + +dictionary MediaTrackSettings { + long width; + long height; + double aspectRatio; + double frameRate; + DOMString facingMode; + DOMString resizeMode; + long sampleRate; + long sampleSize; + boolean echoCancellation; + boolean autoGainControl; + boolean noiseSuppression; + double latency; + long channelCount; + DOMString deviceId; + DOMString groupId; +}; + +enum VideoFacingModeEnum { + "user", + "environment", + "left", + "right" +}; + +enum VideoResizeModeEnum { + "none", + "crop-and-scale" +}; + +[Exposed=Window] +interface MediaStreamTrackEvent : Event { + constructor(DOMString type, MediaStreamTrackEventInit eventInitDict); + [SameObject] readonly attribute MediaStreamTrack track; +}; + +dictionary MediaStreamTrackEventInit : EventInit { + required MediaStreamTrack track; +}; + +[Exposed=Window] +interface OverconstrainedError : DOMException { + constructor(DOMString constraint, optional DOMString message = ""); + readonly attribute DOMString constraint; +}; + +partial interface Navigator { + [SameObject, SecureContext] readonly attribute MediaDevices mediaDevices; +}; + +[Exposed=Window, SecureContext] +interface MediaDevices : EventTarget { + attribute EventHandler ondevicechange; + Promise<sequence<MediaDeviceInfo>> enumerateDevices(); +}; + +[Exposed=Window, SecureContext] +interface MediaDeviceInfo { + readonly attribute DOMString deviceId; + readonly attribute MediaDeviceKind kind; + readonly attribute DOMString label; + readonly attribute DOMString groupId; + [Default] object toJSON(); +}; + +enum MediaDeviceKind { + "audioinput", + "audiooutput", + "videoinput" +}; + +[Exposed=Window, SecureContext] +interface InputDeviceInfo : MediaDeviceInfo { + MediaTrackCapabilities getCapabilities(); +}; + +partial interface MediaDevices { + MediaTrackSupportedConstraints getSupportedConstraints(); + Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints = {}); +}; + +dictionary MediaStreamConstraints { + (boolean or MediaTrackConstraints) video = false; + (boolean or MediaTrackConstraints) audio = false; +}; + +partial interface Navigator { + [SecureContext] undefined getUserMedia(MediaStreamConstraints constraints, + NavigatorUserMediaSuccessCallback successCallback, + NavigatorUserMediaErrorCallback errorCallback); +}; + +callback NavigatorUserMediaSuccessCallback = undefined (MediaStream stream); + +callback NavigatorUserMediaErrorCallback = undefined (DOMException error); + +dictionary DoubleRange { + double max; + double min; +}; + +dictionary ConstrainDoubleRange : DoubleRange { + double exact; + double ideal; +}; + +dictionary ULongRange { + [Clamp] unsigned long max; + [Clamp] unsigned long min; +}; + +dictionary ConstrainULongRange : ULongRange { + [Clamp] unsigned long exact; + [Clamp] unsigned long ideal; +}; + +dictionary ConstrainBooleanParameters { + boolean exact; + boolean ideal; +}; + +dictionary ConstrainDOMStringParameters { + (DOMString or sequence<DOMString>) exact; + (DOMString or sequence<DOMString>) ideal; +}; + +typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong; + +typedef (double or ConstrainDoubleRange) ConstrainDouble; + +typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean; + +typedef (DOMString or +sequence<DOMString> or +ConstrainDOMStringParameters) ConstrainDOMString; + +dictionary DevicePermissionDescriptor : PermissionDescriptor { + DOMString deviceId; +}; + +dictionary CameraDevicePermissionDescriptor : DevicePermissionDescriptor { + boolean panTiltZoom = false; +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-transform.idl b/testing/web-platform/tests/interfaces/mediacapture-transform.idl new file mode 100644 index 0000000000..5b2c8fa67a --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-transform.idl @@ -0,0 +1,23 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: MediaStreamTrack Insertable Media Processing using Streams (https://w3c.github.io/mediacapture-transform/) + +[Exposed=DedicatedWorker] +interface MediaStreamTrackProcessor { + constructor(MediaStreamTrackProcessorInit init); + attribute ReadableStream readable; +}; + +dictionary MediaStreamTrackProcessorInit { + required MediaStreamTrack track; + [EnforceRange] unsigned short maxBufferSize; +}; + +[Exposed=DedicatedWorker] +interface VideoTrackGenerator { + constructor(); + readonly attribute WritableStream writable; + attribute boolean muted; + readonly attribute MediaStreamTrack track; +}; diff --git a/testing/web-platform/tests/interfaces/mediacapture-viewport.idl b/testing/web-platform/tests/interfaces/mediacapture-viewport.idl new file mode 100644 index 0000000000..a9dcf74e17 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediacapture-viewport.idl @@ -0,0 +1,14 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Viewport Capture (https://w3c.github.io/mediacapture-viewport/) + +partial interface MediaDevices { + Promise<MediaStream> getViewportMedia( + optional ViewportMediaStreamConstraints constraints = {}); +}; + +dictionary ViewportMediaStreamConstraints { + (boolean or MediaTrackConstraints) video = true; + (boolean or MediaTrackConstraints) audio = false; +}; diff --git a/testing/web-platform/tests/interfaces/mediasession.idl b/testing/web-platform/tests/interfaces/mediasession.idl new file mode 100644 index 0000000000..cca46ac5a8 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediasession.idl @@ -0,0 +1,84 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Media Session Standard (https://w3c.github.io/mediasession/) + +[Exposed=Window] +partial interface Navigator { + [SameObject] readonly attribute MediaSession mediaSession; +}; + +enum MediaSessionPlaybackState { + "none", + "paused", + "playing" +}; + +enum MediaSessionAction { + "play", + "pause", + "seekbackward", + "seekforward", + "previoustrack", + "nexttrack", + "skipad", + "stop", + "seekto", + "togglemicrophone", + "togglecamera", + "hangup", + "previousslide", + "nextslide" +}; + +callback MediaSessionActionHandler = undefined(MediaSessionActionDetails details); + +[Exposed=Window] +interface MediaSession { + attribute MediaMetadata? metadata; + + attribute MediaSessionPlaybackState playbackState; + + undefined setActionHandler(MediaSessionAction action, MediaSessionActionHandler? handler); + + undefined setPositionState(optional MediaPositionState state = {}); + + undefined setMicrophoneActive(boolean active); + + undefined setCameraActive(boolean active); +}; + +[Exposed=Window] +interface MediaMetadata { + constructor(optional MediaMetadataInit init = {}); + attribute DOMString title; + attribute DOMString artist; + attribute DOMString album; + attribute FrozenArray<MediaImage> artwork; +}; + +dictionary MediaMetadataInit { + DOMString title = ""; + DOMString artist = ""; + DOMString album = ""; + sequence<MediaImage> artwork = []; +}; + +dictionary MediaImage { + required USVString src; + DOMString sizes = ""; + DOMString type = ""; +}; + +dictionary MediaPositionState { + double duration; + double playbackRate; + double position; +}; + +dictionary MediaSessionActionDetails { + required MediaSessionAction action; + double seekOffset; + double seekTime; + boolean fastSeek; +}; diff --git a/testing/web-platform/tests/interfaces/mediastream-recording.idl b/testing/web-platform/tests/interfaces/mediastream-recording.idl new file mode 100644 index 0000000000..99f3028233 --- /dev/null +++ b/testing/web-platform/tests/interfaces/mediastream-recording.idl @@ -0,0 +1,60 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: MediaStream Recording (https://w3c.github.io/mediacapture-record/) + +[Exposed=Window] +interface MediaRecorder : EventTarget { + constructor(MediaStream stream, optional MediaRecorderOptions options = {}); + readonly attribute MediaStream stream; + readonly attribute DOMString mimeType; + readonly attribute RecordingState state; + attribute EventHandler onstart; + attribute EventHandler onstop; + attribute EventHandler ondataavailable; + attribute EventHandler onpause; + attribute EventHandler onresume; + attribute EventHandler onerror; + readonly attribute unsigned long videoBitsPerSecond; + readonly attribute unsigned long audioBitsPerSecond; + readonly attribute BitrateMode audioBitrateMode; + + undefined start(optional unsigned long timeslice); + undefined stop(); + undefined pause(); + undefined resume(); + undefined requestData(); + + static boolean isTypeSupported(DOMString type); +}; + +dictionary MediaRecorderOptions { + DOMString mimeType = ""; + unsigned long audioBitsPerSecond; + unsigned long videoBitsPerSecond; + unsigned long bitsPerSecond; + BitrateMode audioBitrateMode = "variable"; +}; + +enum BitrateMode { + "constant", + "variable" +}; + +enum RecordingState { + "inactive", + "recording", + "paused" +}; + +[Exposed=Window] +interface BlobEvent : Event { + constructor(DOMString type, BlobEventInit eventInitDict); + [SameObject] readonly attribute Blob data; + readonly attribute DOMHighResTimeStamp timecode; +}; + +dictionary BlobEventInit { + required Blob data; + DOMHighResTimeStamp timecode; +}; diff --git a/testing/web-platform/tests/interfaces/model-element.idl b/testing/web-platform/tests/interfaces/model-element.idl new file mode 100644 index 0000000000..aa031a1690 --- /dev/null +++ b/testing/web-platform/tests/interfaces/model-element.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: The <model> element (https://immersive-web.github.io/model-element/) + +[Exposed=Window] +interface HTMLModelElement : HTMLElement { + +}; diff --git a/testing/web-platform/tests/interfaces/mst-content-hint.idl b/testing/web-platform/tests/interfaces/mst-content-hint.idl new file mode 100644 index 0000000000..a41abb55ea --- /dev/null +++ b/testing/web-platform/tests/interfaces/mst-content-hint.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: MediaStreamTrack Content Hints (https://w3c.github.io/mst-content-hint/) + +partial interface MediaStreamTrack { + attribute DOMString contentHint; +}; + +enum RTCDegradationPreference { + "maintain-framerate", + "maintain-resolution", + "balanced" +}; + +partial dictionary RTCRtpSendParameters { + RTCDegradationPreference degradationPreference; +}; diff --git a/testing/web-platform/tests/interfaces/navigation-api.idl b/testing/web-platform/tests/interfaces/navigation-api.idl new file mode 100644 index 0000000000..1117851829 --- /dev/null +++ b/testing/web-platform/tests/interfaces/navigation-api.idl @@ -0,0 +1,158 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Navigation API (https://wicg.github.io/navigation-api/) + +partial interface Window { + [Replaceable] readonly attribute Navigation navigation; +}; + +[Exposed=Window] +interface Navigation : EventTarget { + sequence<NavigationHistoryEntry> entries(); + readonly attribute NavigationHistoryEntry? currentEntry; + undefined updateCurrentEntry(NavigationUpdateCurrentEntryOptions options); + readonly attribute NavigationTransition? transition; + + readonly attribute boolean canGoBack; + readonly attribute boolean canGoForward; + + NavigationResult navigate(USVString url, optional NavigationNavigateOptions options = {}); + NavigationResult reload(optional NavigationReloadOptions options = {}); + + NavigationResult traverseTo(DOMString key, optional NavigationOptions options = {}); + NavigationResult back(optional NavigationOptions options = {}); + NavigationResult forward(optional NavigationOptions options = {}); + + attribute EventHandler onnavigate; + attribute EventHandler onnavigatesuccess; + attribute EventHandler onnavigateerror; + attribute EventHandler oncurrententrychange; +}; + +dictionary NavigationUpdateCurrentEntryOptions { + required any state; +}; + +dictionary NavigationOptions { + any info; +}; + +dictionary NavigationNavigateOptions : NavigationOptions { + any state; + NavigationHistoryBehavior history = "auto"; +}; + +dictionary NavigationReloadOptions : NavigationOptions { + any state; +}; + +dictionary NavigationResult { + Promise<NavigationHistoryEntry> committed; + Promise<NavigationHistoryEntry> finished; +}; + +enum NavigationHistoryBehavior { + "auto", + "push", + "replace" +}; + +[Exposed=Window] +interface NavigationCurrentEntryChangeEvent : Event { + constructor(DOMString type, NavigationCurrentEntryChangeEventInit eventInit); + + readonly attribute NavigationType? navigationType; + readonly attribute NavigationHistoryEntry from; +}; + +dictionary NavigationCurrentEntryChangeEventInit : EventInit { + NavigationType? navigationType = null; + required NavigationHistoryEntry destination; +}; + +[Exposed=Window] +interface NavigationTransition { + readonly attribute NavigationType navigationType; + readonly attribute NavigationHistoryEntry from; + readonly attribute Promise<undefined> finished; +}; + +[Exposed=Window] +interface NavigateEvent : Event { + constructor(DOMString type, NavigateEventInit eventInit); + + readonly attribute NavigationType navigationType; + readonly attribute NavigationDestination destination; + readonly attribute boolean canIntercept; + readonly attribute boolean userInitiated; + readonly attribute boolean hashChange; + readonly attribute AbortSignal signal; + readonly attribute FormData? formData; + readonly attribute DOMString? downloadRequest; + readonly attribute any info; + + undefined intercept(optional NavigationInterceptOptions options = {}); + undefined scroll(); +}; + +dictionary NavigateEventInit : EventInit { + NavigationType navigationType = "push"; + required NavigationDestination destination; + boolean canIntercept = false; + boolean userInitiated = false; + boolean hashChange = false; + required AbortSignal signal; + FormData? formData = null; + DOMString? downloadRequest = null; + any info; +}; + +dictionary NavigationInterceptOptions { + NavigationInterceptHandler handler; + NavigationFocusReset focusReset; + NavigationScrollBehavior scroll; +}; + +enum NavigationFocusReset { + "after-transition", + "manual" +}; + +enum NavigationScrollBehavior { + "after-transition", + "manual" +}; + +callback NavigationInterceptHandler = Promise<undefined> (); + +enum NavigationType { + "reload", + "push", + "replace", + "traverse" +}; + +[Exposed=Window] +interface NavigationDestination { + readonly attribute USVString url; + readonly attribute DOMString? key; + readonly attribute DOMString? id; + readonly attribute long long index; + readonly attribute boolean sameDocument; + + any getState(); +}; + +[Exposed=Window] +interface NavigationHistoryEntry : EventTarget { + readonly attribute USVString? url; + readonly attribute DOMString key; + readonly attribute DOMString id; + readonly attribute long long index; + readonly attribute boolean sameDocument; + + any getState(); + + attribute EventHandler ondispose; +}; diff --git a/testing/web-platform/tests/interfaces/navigation-timing.idl b/testing/web-platform/tests/interfaces/navigation-timing.idl new file mode 100644 index 0000000000..5a33964f07 --- /dev/null +++ b/testing/web-platform/tests/interfaces/navigation-timing.idl @@ -0,0 +1,71 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Navigation Timing Level 2 (https://w3c.github.io/navigation-timing/) + +[Exposed=Window] +interface PerformanceNavigationTiming : PerformanceResourceTiming { + readonly attribute DOMHighResTimeStamp unloadEventStart; + readonly attribute DOMHighResTimeStamp unloadEventEnd; + readonly attribute DOMHighResTimeStamp domInteractive; + readonly attribute DOMHighResTimeStamp domContentLoadedEventStart; + readonly attribute DOMHighResTimeStamp domContentLoadedEventEnd; + readonly attribute DOMHighResTimeStamp domComplete; + readonly attribute DOMHighResTimeStamp loadEventStart; + readonly attribute DOMHighResTimeStamp loadEventEnd; + readonly attribute NavigationTimingType type; + readonly attribute unsigned short redirectCount; + [Default] object toJSON(); +}; + +enum NavigationTimingType { + "navigate", + "reload", + "back_forward", + "prerender" +}; + +[Exposed=Window] +interface PerformanceTiming { + readonly attribute unsigned long long navigationStart; + readonly attribute unsigned long long unloadEventStart; + readonly attribute unsigned long long unloadEventEnd; + readonly attribute unsigned long long redirectStart; + readonly attribute unsigned long long redirectEnd; + readonly attribute unsigned long long fetchStart; + readonly attribute unsigned long long domainLookupStart; + readonly attribute unsigned long long domainLookupEnd; + readonly attribute unsigned long long connectStart; + readonly attribute unsigned long long connectEnd; + readonly attribute unsigned long long secureConnectionStart; + readonly attribute unsigned long long requestStart; + readonly attribute unsigned long long responseStart; + readonly attribute unsigned long long responseEnd; + readonly attribute unsigned long long domLoading; + readonly attribute unsigned long long domInteractive; + readonly attribute unsigned long long domContentLoadedEventStart; + readonly attribute unsigned long long domContentLoadedEventEnd; + readonly attribute unsigned long long domComplete; + readonly attribute unsigned long long loadEventStart; + readonly attribute unsigned long long loadEventEnd; + [Default] object toJSON(); +}; + +[Exposed=Window] +interface PerformanceNavigation { + const unsigned short TYPE_NAVIGATE = 0; + const unsigned short TYPE_RELOAD = 1; + const unsigned short TYPE_BACK_FORWARD = 2; + const unsigned short TYPE_RESERVED = 255; + readonly attribute unsigned short type; + readonly attribute unsigned short redirectCount; + [Default] object toJSON(); +}; + +[Exposed=Window] +partial interface Performance { + [SameObject] + readonly attribute PerformanceTiming timing; + [SameObject] + readonly attribute PerformanceNavigation navigation; +}; diff --git a/testing/web-platform/tests/interfaces/netinfo.idl b/testing/web-platform/tests/interfaces/netinfo.idl new file mode 100644 index 0000000000..ac5265dbeb --- /dev/null +++ b/testing/web-platform/tests/interfaces/netinfo.idl @@ -0,0 +1,43 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Network Information API (https://wicg.github.io/netinfo/) + +enum ConnectionType { + "bluetooth", + "cellular", + "ethernet", + "mixed", + "none", + "other", + "unknown", + "wifi", + "wimax" +}; + +enum EffectiveConnectionType { + "2g", + "3g", + "4g", + "slow-2g" +}; + +interface mixin NavigatorNetworkInformation { + [SameObject] readonly attribute NetworkInformation connection; +}; + +Navigator includes NavigatorNetworkInformation; +WorkerNavigator includes NavigatorNetworkInformation; + +[Exposed=(Window,Worker)] +interface NetworkInformation : EventTarget { + readonly attribute ConnectionType type; + readonly attribute EffectiveConnectionType effectiveType; + readonly attribute Megabit downlinkMax; + readonly attribute Megabit downlink; + readonly attribute Millisecond rtt; + attribute EventHandler onchange; +}; + +typedef unrestricted double Megabit; +typedef unsigned long long Millisecond; diff --git a/testing/web-platform/tests/interfaces/notifications.idl b/testing/web-platform/tests/interfaces/notifications.idl new file mode 100644 index 0000000000..2be22213d7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/notifications.idl @@ -0,0 +1,101 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Notifications API Standard (https://notifications.spec.whatwg.org/) + +[Exposed=(Window,Worker)] +interface Notification : EventTarget { + constructor(DOMString title, optional NotificationOptions options = {}); + + static readonly attribute NotificationPermission permission; + [Exposed=Window] static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback deprecatedCallback); + + static readonly attribute unsigned long maxActions; + + attribute EventHandler onclick; + attribute EventHandler onshow; + attribute EventHandler onerror; + attribute EventHandler onclose; + + readonly attribute DOMString title; + readonly attribute NotificationDirection dir; + readonly attribute DOMString lang; + readonly attribute DOMString body; + readonly attribute DOMString tag; + readonly attribute USVString image; + readonly attribute USVString icon; + readonly attribute USVString badge; + [SameObject] readonly attribute FrozenArray<unsigned long> vibrate; + readonly attribute EpochTimeStamp timestamp; + readonly attribute boolean renotify; + readonly attribute boolean silent; + readonly attribute boolean requireInteraction; + [SameObject] readonly attribute any data; + [SameObject] readonly attribute FrozenArray<NotificationAction> actions; + + undefined close(); +}; + +dictionary NotificationOptions { + NotificationDirection dir = "auto"; + DOMString lang = ""; + DOMString body = ""; + DOMString tag = ""; + USVString image; + USVString icon; + USVString badge; + VibratePattern vibrate; + EpochTimeStamp timestamp; + boolean renotify = false; + boolean silent = false; + boolean requireInteraction = false; + any data = null; + sequence<NotificationAction> actions = []; +}; + +enum NotificationPermission { + "default", + "denied", + "granted" +}; + +enum NotificationDirection { + "auto", + "ltr", + "rtl" +}; + +dictionary NotificationAction { + required DOMString action; + required DOMString title; + USVString icon; +}; + +callback NotificationPermissionCallback = undefined (NotificationPermission permission); + +dictionary GetNotificationOptions { + DOMString tag = ""; +}; + +partial interface ServiceWorkerRegistration { + Promise<undefined> showNotification(DOMString title, optional NotificationOptions options = {}); + Promise<sequence<Notification>> getNotifications(optional GetNotificationOptions filter = {}); +}; + +[Exposed=ServiceWorker] +interface NotificationEvent : ExtendableEvent { + constructor(DOMString type, NotificationEventInit eventInitDict); + + readonly attribute Notification notification; + readonly attribute DOMString action; +}; + +dictionary NotificationEventInit : ExtendableEventInit { + required Notification notification; + DOMString action = ""; +}; + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onnotificationclick; + attribute EventHandler onnotificationclose; +}; diff --git a/testing/web-platform/tests/interfaces/orientation-event.idl b/testing/web-platform/tests/interfaces/orientation-event.idl new file mode 100644 index 0000000000..f6ff96f0e0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/orientation-event.idl @@ -0,0 +1,82 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: DeviceOrientation Event Specification (https://w3c.github.io/deviceorientation/) + +partial interface Window { + [SecureContext] attribute EventHandler ondeviceorientation; +}; + +[Exposed=Window, SecureContext] +interface DeviceOrientationEvent : Event { + constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict = {}); + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; + readonly attribute boolean absolute; + + static Promise<PermissionState> requestPermission(); +}; + +dictionary DeviceOrientationEventInit : EventInit { + double? alpha = null; + double? beta = null; + double? gamma = null; + boolean absolute = false; +}; + +partial interface Window { + [SecureContext] attribute EventHandler ondeviceorientationabsolute; +}; + +partial interface Window { + attribute EventHandler oncompassneedscalibration; +}; + +partial interface Window { + [SecureContext] attribute EventHandler ondevicemotion; +}; + +[Exposed=Window, SecureContext] +interface DeviceMotionEventAcceleration { + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; +}; + +[Exposed=Window, SecureContext] +interface DeviceMotionEventRotationRate { + readonly attribute double? alpha; + readonly attribute double? beta; + readonly attribute double? gamma; +}; + +[Exposed=Window, SecureContext] +interface DeviceMotionEvent : Event { + constructor(DOMString type, optional DeviceMotionEventInit eventInitDict = {}); + readonly attribute DeviceMotionEventAcceleration? acceleration; + readonly attribute DeviceMotionEventAcceleration? accelerationIncludingGravity; + readonly attribute DeviceMotionEventRotationRate? rotationRate; + readonly attribute double interval; + + static Promise<PermissionState> requestPermission(); +}; + +dictionary DeviceMotionEventAccelerationInit { + double? x = null; + double? y = null; + double? z = null; +}; + +dictionary DeviceMotionEventRotationRateInit { + double? alpha = null; + double? beta = null; + double? gamma = null; +}; + +dictionary DeviceMotionEventInit : EventInit { + DeviceMotionEventAccelerationInit acceleration; + DeviceMotionEventAccelerationInit accelerationIncludingGravity; + DeviceMotionEventRotationRateInit rotationRate; + double interval = 0; +}; diff --git a/testing/web-platform/tests/interfaces/orientation-sensor.idl b/testing/web-platform/tests/interfaces/orientation-sensor.idl new file mode 100644 index 0000000000..5172c87cd4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/orientation-sensor.idl @@ -0,0 +1,35 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Orientation Sensor (https://w3c.github.io/orientation-sensor/) + +typedef (Float32Array or Float64Array or DOMMatrix) RotationMatrixType; + +[SecureContext, Exposed=Window] +interface OrientationSensor : Sensor { + readonly attribute FrozenArray<double>? quaternion; + undefined populateMatrix(RotationMatrixType targetMatrix); +}; + +enum OrientationSensorLocalCoordinateSystem { "device", "screen" }; + +dictionary OrientationSensorOptions : SensorOptions { + OrientationSensorLocalCoordinateSystem referenceFrame = "device"; +}; + +[SecureContext, Exposed=Window] +interface AbsoluteOrientationSensor : OrientationSensor { + constructor(optional OrientationSensorOptions sensorOptions = {}); +}; + +[SecureContext, Exposed=Window] +interface RelativeOrientationSensor : OrientationSensor { + constructor(optional OrientationSensorOptions sensorOptions = {}); +}; + +dictionary AbsoluteOrientationReadingValues { + required FrozenArray<double>? quaternion; +}; + +dictionary RelativeOrientationReadingValues : AbsoluteOrientationReadingValues { +}; diff --git a/testing/web-platform/tests/interfaces/page-lifecycle.idl b/testing/web-platform/tests/interfaces/page-lifecycle.idl new file mode 100644 index 0000000000..26de11c23d --- /dev/null +++ b/testing/web-platform/tests/interfaces/page-lifecycle.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Page Lifecycle (https://wicg.github.io/page-lifecycle/) + +partial interface Document { + attribute EventHandler onfreeze; + attribute EventHandler onresume; + readonly attribute boolean wasDiscarded; +}; + +partial interface Client { + readonly attribute ClientLifecycleState lifecycleState; +}; + +enum ClientLifecycleState { + "active", + "frozen" +}; diff --git a/testing/web-platform/tests/interfaces/paint-timing.idl b/testing/web-platform/tests/interfaces/paint-timing.idl new file mode 100644 index 0000000000..052b74ef6c --- /dev/null +++ b/testing/web-platform/tests/interfaces/paint-timing.idl @@ -0,0 +1,7 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Paint Timing 1 (https://w3c.github.io/paint-timing/) + +[Exposed=Window] +interface PerformancePaintTiming : PerformanceEntry {}; diff --git a/testing/web-platform/tests/interfaces/parakeet.tentative.idl b/testing/web-platform/tests/interfaces/parakeet.tentative.idl new file mode 100644 index 0000000000..a65cb1900c --- /dev/null +++ b/testing/web-platform/tests/interfaces/parakeet.tentative.idl @@ -0,0 +1,32 @@ +enum AdSignals { + "coarse-geolocation", + "coarse-ua", + "targeting", + "user-ad-interests" +}; +dictionary AdProperties{ + DOMString width; + DOMString height; + DOMString slot; + DOMString lang; + DOMString adtype; + double bidFloor; +}; +dictionary AdTargeting{ + sequence<DOMString> interests; + GeolocationCoordinates geolocation; +}; + +dictionary AdRequestConfig{ + required USVString adRequestUrl; + required(AdProperties or sequence<AdProperties>) adProperties; + DOMString publisherCode; + AdTargeting targeting; + sequence<AdSignals> anonymizedProxiedSignals; + USVString fallbackSource; +}; + +partial interface Navigator { + Promise<Ads> createAdRequest(AdRequestConfig config); + Promise<URL> finalizeAd(Ads ads, AuctionAdConfig config); +}; diff --git a/testing/web-platform/tests/interfaces/payment-handler.idl b/testing/web-platform/tests/interfaces/payment-handler.idl new file mode 100644 index 0000000000..c76ef0983f --- /dev/null +++ b/testing/web-platform/tests/interfaces/payment-handler.idl @@ -0,0 +1,85 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Payment Handler API (https://w3c.github.io/payment-handler/) + +partial interface ServiceWorkerRegistration { + [SameObject] readonly attribute PaymentManager paymentManager; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface PaymentManager { + [SameObject] readonly attribute PaymentInstruments instruments; + attribute DOMString userHint; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface PaymentInstruments { + Promise<boolean> delete(DOMString instrumentKey); + Promise<any> get(DOMString instrumentKey); + Promise<sequence<DOMString>> keys(); + Promise<boolean> has(DOMString instrumentKey); + Promise<undefined> set(DOMString instrumentKey, PaymentInstrument details); + Promise<undefined> clear(); +}; + +dictionary PaymentInstrument { + required DOMString name; + sequence<ImageObject> icons; + DOMString method; +}; + +dictionary ImageObject { + required USVString src; + DOMString sizes; + DOMString type; +}; + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler oncanmakepayment; +}; + +[Exposed=ServiceWorker] +interface CanMakePaymentEvent : ExtendableEvent { + constructor(DOMString type); + undefined respondWith(Promise<boolean> canMakePaymentResponse); +}; + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onpaymentrequest; +}; + +dictionary PaymentRequestDetailsUpdate { + DOMString error; + PaymentCurrencyAmount total; + sequence<PaymentDetailsModifier> modifiers; + object paymentMethodErrors; +}; + +[Exposed=ServiceWorker] +interface PaymentRequestEvent : ExtendableEvent { + constructor(DOMString type, optional PaymentRequestEventInit eventInitDict = {}); + readonly attribute USVString topOrigin; + readonly attribute USVString paymentRequestOrigin; + readonly attribute DOMString paymentRequestId; + readonly attribute FrozenArray<PaymentMethodData> methodData; + readonly attribute object total; + readonly attribute FrozenArray<PaymentDetailsModifier> modifiers; + Promise<WindowClient?> openWindow(USVString url); + Promise<PaymentRequestDetailsUpdate?> changePaymentMethod(DOMString methodName, optional object? methodDetails = null); + undefined respondWith(Promise<PaymentHandlerResponse> handlerResponsePromise); +}; + +dictionary PaymentRequestEventInit : ExtendableEventInit { + USVString topOrigin; + USVString paymentRequestOrigin; + DOMString paymentRequestId; + sequence<PaymentMethodData> methodData; + PaymentCurrencyAmount total; + sequence<PaymentDetailsModifier> modifiers; +}; + +dictionary PaymentHandlerResponse { +DOMString methodName; +object details; +}; diff --git a/testing/web-platform/tests/interfaces/payment-request.idl b/testing/web-platform/tests/interfaces/payment-request.idl new file mode 100644 index 0000000000..0a97d4d75c --- /dev/null +++ b/testing/web-platform/tests/interfaces/payment-request.idl @@ -0,0 +1,112 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Payment Request API 1.1 (https://w3c.github.io/payment-request/) + +[SecureContext, Exposed=Window] +interface PaymentRequest : EventTarget { + constructor( + sequence<PaymentMethodData> methodData, + PaymentDetailsInit details + ); + [NewObject] + Promise<PaymentResponse> show(optional Promise<PaymentDetailsUpdate> detailsPromise); + [NewObject] + Promise<undefined> abort(); + [NewObject] + Promise<boolean> canMakePayment(); + + readonly attribute DOMString id; + + attribute EventHandler onpaymentmethodchange; +}; + +dictionary PaymentMethodData { + required DOMString supportedMethods; + object data; +}; + +dictionary PaymentCurrencyAmount { + required DOMString currency; + required DOMString value; +}; + +dictionary PaymentDetailsBase { + sequence<PaymentItem> displayItems; + sequence<PaymentDetailsModifier> modifiers; +}; + +dictionary PaymentDetailsInit : PaymentDetailsBase { + DOMString id; + required PaymentItem total; +}; + +dictionary PaymentDetailsUpdate : PaymentDetailsBase { + PaymentItem total; + object paymentMethodErrors; +}; + +dictionary PaymentDetailsModifier { + required DOMString supportedMethods; + PaymentItem total; + sequence<PaymentItem> additionalDisplayItems; + object data; +}; + +dictionary PaymentItem { + required DOMString label; + required PaymentCurrencyAmount amount; + boolean pending = false; +}; + +dictionary PaymentCompleteDetails { + object? data = null; +}; + +enum PaymentComplete { + "fail", + "success", + "unknown" +}; + +[SecureContext, Exposed=Window] +interface PaymentResponse : EventTarget { + [Default] object toJSON(); + + readonly attribute DOMString requestId; + readonly attribute DOMString methodName; + readonly attribute object details; + + [NewObject] + Promise<undefined> complete( + optional PaymentComplete result = "unknown", + optional PaymentCompleteDetails details = {} + ); + [NewObject] + Promise<undefined> retry(optional PaymentValidationErrors errorFields = {}); +}; + +dictionary PaymentValidationErrors { + DOMString error; + object paymentMethod; +}; + +[SecureContext, Exposed=Window] +interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent { + constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict = {}); + readonly attribute DOMString methodName; + readonly attribute object? methodDetails; +}; + +dictionary PaymentMethodChangeEventInit : PaymentRequestUpdateEventInit { + DOMString methodName = ""; + object? methodDetails = null; +}; + +[SecureContext, Exposed=Window] +interface PaymentRequestUpdateEvent : Event { + constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict = {}); + undefined updateWith(Promise<PaymentDetailsUpdate> detailsPromise); +}; + +dictionary PaymentRequestUpdateEventInit : EventInit {}; diff --git a/testing/web-platform/tests/interfaces/performance-measure-memory.idl b/testing/web-platform/tests/interfaces/performance-measure-memory.idl new file mode 100644 index 0000000000..b60f2b688c --- /dev/null +++ b/testing/web-platform/tests/interfaces/performance-measure-memory.idl @@ -0,0 +1,30 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Measure Memory API (https://wicg.github.io/performance-measure-memory/) + +dictionary MemoryMeasurement { + unsigned long long bytes; + sequence<MemoryBreakdownEntry> breakdown; +}; + +dictionary MemoryBreakdownEntry { + unsigned long long bytes; + sequence<MemoryAttribution> attribution; + sequence<DOMString> types; +}; + +dictionary MemoryAttribution { + USVString url; + MemoryAttributionContainer container; + DOMString scope; +}; + +dictionary MemoryAttributionContainer { + DOMString id; + USVString src; +}; + +partial interface Performance { + [Exposed=(Window,ServiceWorker,SharedWorker), CrossOriginIsolated] Promise<MemoryMeasurement> measureUserAgentSpecificMemory(); +}; diff --git a/testing/web-platform/tests/interfaces/performance-timeline.idl b/testing/web-platform/tests/interfaces/performance-timeline.idl new file mode 100644 index 0000000000..cdd8fafd8c --- /dev/null +++ b/testing/web-platform/tests/interfaces/performance-timeline.idl @@ -0,0 +1,49 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Performance Timeline (https://w3c.github.io/performance-timeline/) + +partial interface Performance { + PerformanceEntryList getEntries (); + PerformanceEntryList getEntriesByType (DOMString type); + PerformanceEntryList getEntriesByName (DOMString name, optional DOMString type); +}; +typedef sequence<PerformanceEntry> PerformanceEntryList; + +[Exposed=(Window,Worker)] +interface PerformanceEntry { + readonly attribute DOMString name; + readonly attribute DOMString entryType; + readonly attribute DOMHighResTimeStamp startTime; + readonly attribute DOMHighResTimeStamp duration; + [Default] object toJSON(); +}; + +callback PerformanceObserverCallback = undefined (PerformanceObserverEntryList entries, + PerformanceObserver observer, + optional PerformanceObserverCallbackOptions options = {}); +[Exposed=(Window,Worker)] +interface PerformanceObserver { + constructor(PerformanceObserverCallback callback); + undefined observe (optional PerformanceObserverInit options = {}); + undefined disconnect (); + PerformanceEntryList takeRecords(); + [SameObject] static readonly attribute FrozenArray<DOMString> supportedEntryTypes; +}; + +dictionary PerformanceObserverCallbackOptions { + unsigned long long droppedEntriesCount; +}; + +dictionary PerformanceObserverInit { + sequence<DOMString> entryTypes; + DOMString type; + boolean buffered; +}; + +[Exposed=(Window,Worker)] +interface PerformanceObserverEntryList { + PerformanceEntryList getEntries(); + PerformanceEntryList getEntriesByType (DOMString type); + PerformanceEntryList getEntriesByName (DOMString name, optional DOMString type); +}; diff --git a/testing/web-platform/tests/interfaces/periodic-background-sync.idl b/testing/web-platform/tests/interfaces/periodic-background-sync.idl new file mode 100644 index 0000000000..d61ebe9b8c --- /dev/null +++ b/testing/web-platform/tests/interfaces/periodic-background-sync.idl @@ -0,0 +1,34 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Periodic Background Synchronization (https://wicg.github.io/periodic-background-sync/) + +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onperiodicsync; +}; + +[Exposed=(Window,Worker)] +partial interface ServiceWorkerRegistration { + readonly attribute PeriodicSyncManager periodicSync; +}; + +[Exposed=(Window,Worker)] +interface PeriodicSyncManager { + Promise<undefined> register(DOMString tag, optional BackgroundSyncOptions options = {}); + Promise<sequence<DOMString>> getTags(); + Promise<undefined> unregister(DOMString tag); +}; + +dictionary BackgroundSyncOptions { + [EnforceRange] unsigned long long minInterval = 0; +}; + +dictionary PeriodicSyncEventInit : ExtendableEventInit { + required DOMString tag; +}; + +[Exposed=ServiceWorker] +interface PeriodicSyncEvent : ExtendableEvent { + constructor(DOMString type, PeriodicSyncEventInit init); + readonly attribute DOMString tag; +}; diff --git a/testing/web-platform/tests/interfaces/permissions-policy.idl b/testing/web-platform/tests/interfaces/permissions-policy.idl new file mode 100644 index 0000000000..16945e3a9b --- /dev/null +++ b/testing/web-platform/tests/interfaces/permissions-policy.idl @@ -0,0 +1,29 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Permissions Policy (https://w3c.github.io/webappsec-permissions-policy/) + +[Exposed=Window] +interface PermissionsPolicy { + boolean allowsFeature(DOMString feature, optional DOMString origin); + sequence<DOMString> features(); + sequence<DOMString> allowedFeatures(); + sequence<DOMString> getAllowlistForFeature(DOMString feature); +}; + +partial interface Document { + [SameObject] readonly attribute PermissionsPolicy permissionsPolicy; +}; + +partial interface HTMLIFrameElement { + [SameObject] readonly attribute PermissionsPolicy permissionsPolicy; +}; + +[Exposed=Window] +interface PermissionsPolicyViolationReportBody : ReportBody { + readonly attribute DOMString featureId; + readonly attribute DOMString? sourceFile; + readonly attribute long? lineNumber; + readonly attribute long? columnNumber; + readonly attribute DOMString disposition; +}; diff --git a/testing/web-platform/tests/interfaces/permissions-request.idl b/testing/web-platform/tests/interfaces/permissions-request.idl new file mode 100644 index 0000000000..e189194dd0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/permissions-request.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Requesting Permissions (https://wicg.github.io/permissions-request/) + +partial interface Permissions { + Promise<PermissionStatus> request(object permissionDesc); +}; diff --git a/testing/web-platform/tests/interfaces/permissions-revoke.idl b/testing/web-platform/tests/interfaces/permissions-revoke.idl new file mode 100644 index 0000000000..5e8f386cfb --- /dev/null +++ b/testing/web-platform/tests/interfaces/permissions-revoke.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Relinquishing Permissions (https://wicg.github.io/permissions-revoke/) + +partial interface Permissions { + Promise<PermissionStatus> revoke(object permissionDesc); +}; diff --git a/testing/web-platform/tests/interfaces/permissions.idl b/testing/web-platform/tests/interfaces/permissions.idl new file mode 100644 index 0000000000..fbcb674e56 --- /dev/null +++ b/testing/web-platform/tests/interfaces/permissions.idl @@ -0,0 +1,41 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Permissions (https://w3c.github.io/permissions/) + +[Exposed=(Window)] +partial interface Navigator { + [SameObject] readonly attribute Permissions permissions; +}; + +[Exposed=(Worker)] +partial interface WorkerNavigator { + [SameObject] readonly attribute Permissions permissions; +}; + +[Exposed=(Window,Worker)] +interface Permissions { + Promise<PermissionStatus> query(object permissionDesc); +}; + +dictionary PermissionDescriptor { + required DOMString name; +}; + +[Exposed=(Window,Worker)] +interface PermissionStatus : EventTarget { + readonly attribute PermissionState state; + readonly attribute DOMString name; + attribute EventHandler onchange; +}; + +enum PermissionState { + "granted", + "denied", + "prompt", +}; + +dictionary PermissionSetParameters { + required PermissionDescriptor descriptor; + required PermissionState state; +}; diff --git a/testing/web-platform/tests/interfaces/picture-in-picture.idl b/testing/web-platform/tests/interfaces/picture-in-picture.idl new file mode 100644 index 0000000000..516fb59d8d --- /dev/null +++ b/testing/web-platform/tests/interfaces/picture-in-picture.idl @@ -0,0 +1,41 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Picture-in-Picture (https://w3c.github.io/picture-in-picture/) + +partial interface HTMLVideoElement { + [NewObject] Promise<PictureInPictureWindow> requestPictureInPicture(); + + attribute EventHandler onenterpictureinpicture; + attribute EventHandler onleavepictureinpicture; + + [CEReactions] attribute boolean disablePictureInPicture; +}; + +partial interface Document { + readonly attribute boolean pictureInPictureEnabled; + + [NewObject] Promise<undefined> exitPictureInPicture(); +}; + +partial interface mixin DocumentOrShadowRoot { + readonly attribute Element? pictureInPictureElement; +}; + +[Exposed=Window] +interface PictureInPictureWindow : EventTarget { + readonly attribute long width; + readonly attribute long height; + + attribute EventHandler onresize; +}; + +[Exposed=Window] +interface PictureInPictureEvent : Event { + constructor(DOMString type, PictureInPictureEventInit eventInitDict); + [SameObject] readonly attribute PictureInPictureWindow pictureInPictureWindow; +}; + +dictionary PictureInPictureEventInit : EventInit { + required PictureInPictureWindow pictureInPictureWindow; +}; diff --git a/testing/web-platform/tests/interfaces/pointerevents.idl b/testing/web-platform/tests/interfaces/pointerevents.idl new file mode 100644 index 0000000000..4ecb290ed4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/pointerevents.idl @@ -0,0 +1,64 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Pointer Events (https://w3c.github.io/pointerevents/) + +dictionary PointerEventInit : MouseEventInit { + long pointerId = 0; + double width = 1; + double height = 1; + float pressure = 0; + float tangentialPressure = 0; + long tiltX; + long tiltY; + long twist = 0; + double altitudeAngle; + double azimuthAngle; + DOMString pointerType = ""; + boolean isPrimary = false; + sequence<PointerEvent> coalescedEvents = []; + sequence<PointerEvent> predictedEvents = []; +}; + +[Exposed=Window] +interface PointerEvent : MouseEvent { + constructor(DOMString type, optional PointerEventInit eventInitDict = {}); + readonly attribute long pointerId; + readonly attribute double width; + readonly attribute double height; + readonly attribute float pressure; + readonly attribute float tangentialPressure; + readonly attribute long tiltX; + readonly attribute long tiltY; + readonly attribute long twist; + readonly attribute double altitudeAngle; + readonly attribute double azimuthAngle; + readonly attribute DOMString pointerType; + readonly attribute boolean isPrimary; + [SecureContext] sequence<PointerEvent> getCoalescedEvents(); + sequence<PointerEvent> getPredictedEvents(); +}; + +partial interface Element { + undefined setPointerCapture (long pointerId); + undefined releasePointerCapture (long pointerId); + boolean hasPointerCapture (long pointerId); +}; + +partial interface mixin GlobalEventHandlers { + attribute EventHandler onpointerover; + attribute EventHandler onpointerenter; + attribute EventHandler onpointerdown; + attribute EventHandler onpointermove; + [SecureContext] attribute EventHandler onpointerrawupdate; + attribute EventHandler onpointerup; + attribute EventHandler onpointercancel; + attribute EventHandler onpointerout; + attribute EventHandler onpointerleave; + attribute EventHandler ongotpointercapture; + attribute EventHandler onlostpointercapture; +}; + +partial interface Navigator { + readonly attribute long maxTouchPoints; +}; diff --git a/testing/web-platform/tests/interfaces/pointerlock.idl b/testing/web-platform/tests/interfaces/pointerlock.idl new file mode 100644 index 0000000000..0204bf5342 --- /dev/null +++ b/testing/web-platform/tests/interfaces/pointerlock.idl @@ -0,0 +1,28 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Pointer Lock 2.0 (https://w3c.github.io/pointerlock/) + +partial interface Element { + undefined requestPointerLock(); +}; + +partial interface Document { + attribute EventHandler onpointerlockchange; + attribute EventHandler onpointerlockerror; + undefined exitPointerLock(); +}; + +partial interface mixin DocumentOrShadowRoot { + readonly attribute Element ? pointerLockElement; +}; + +partial interface MouseEvent { + readonly attribute double movementX; + readonly attribute double movementY; +}; + +partial dictionary MouseEventInit { + double movementX = 0; + double movementY = 0; +}; diff --git a/testing/web-platform/tests/interfaces/portals.idl b/testing/web-platform/tests/interfaces/portals.idl new file mode 100644 index 0000000000..5d85cce667 --- /dev/null +++ b/testing/web-platform/tests/interfaces/portals.idl @@ -0,0 +1,50 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Portals (https://wicg.github.io/portals/) + +[Exposed=Window] +interface HTMLPortalElement : HTMLElement { + [HTMLConstructor] constructor(); + + [CEReactions] attribute USVString src; + [CEReactions] attribute DOMString referrerPolicy; + + [NewObject] Promise<undefined> activate(optional PortalActivateOptions options = {}); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +dictionary PortalActivateOptions : StructuredSerializeOptions { + any data; +}; + +partial interface Window { + readonly attribute PortalHost? portalHost; +}; + +[Exposed=Window] +interface PortalHost : EventTarget { + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +[Exposed=Window] +interface PortalActivateEvent : Event { + constructor(DOMString type, optional PortalActivateEventInit eventInitDict = {}); + + readonly attribute any data; + HTMLPortalElement adoptPredecessor(); +}; + +dictionary PortalActivateEventInit : EventInit { + any data = null; +}; + +partial interface mixin WindowEventHandlers { + attribute EventHandler onportalactivate; +}; diff --git a/testing/web-platform/tests/interfaces/prefer-current-tab.idl b/testing/web-platform/tests/interfaces/prefer-current-tab.idl new file mode 100644 index 0000000000..86445e539f --- /dev/null +++ b/testing/web-platform/tests/interfaces/prefer-current-tab.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: preferCurrentTab (https://wicg.github.io/prefer-current-tab/) + +partial dictionary MediaStreamConstraints { + boolean preferCurrentTab = false; +}; diff --git a/testing/web-platform/tests/interfaces/prerendering-revamped.idl b/testing/web-platform/tests/interfaces/prerendering-revamped.idl new file mode 100644 index 0000000000..8f01432618 --- /dev/null +++ b/testing/web-platform/tests/interfaces/prerendering-revamped.idl @@ -0,0 +1,15 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Prerendering Revamped (https://wicg.github.io/nav-speculation/prerendering.html) + +partial interface Document { + readonly attribute boolean prerendering; + + // Under "special event handler IDL attributes that only apply to Document objects" + attribute EventHandler onprerenderingchange; +}; + +partial interface PerformanceNavigationTiming { + readonly attribute DOMHighResTimeStamp activationStart; +}; diff --git a/testing/web-platform/tests/interfaces/presentation-api.idl b/testing/web-platform/tests/interfaces/presentation-api.idl new file mode 100644 index 0000000000..4f1e4bee83 --- /dev/null +++ b/testing/web-platform/tests/interfaces/presentation-api.idl @@ -0,0 +1,95 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Presentation API (https://w3c.github.io/presentation-api/) + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute Presentation presentation; +}; + +[SecureContext, Exposed=Window] +interface Presentation { +}; + +partial interface Presentation { + attribute PresentationRequest? defaultRequest; +}; + +partial interface Presentation { + readonly attribute PresentationReceiver? receiver; +}; + +[SecureContext, Exposed=Window] +interface PresentationRequest : EventTarget { + constructor(USVString url); + constructor(sequence<USVString> urls); + Promise<PresentationConnection> start(); + Promise<PresentationConnection> reconnect(USVString presentationId); + Promise<PresentationAvailability> getAvailability(); + + attribute EventHandler onconnectionavailable; +}; + +[SecureContext, Exposed=Window] +interface PresentationAvailability : EventTarget { + readonly attribute boolean value; + + attribute EventHandler onchange; +}; + +[SecureContext, Exposed=Window] +interface PresentationConnectionAvailableEvent : Event { + constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict); + [SameObject] readonly attribute PresentationConnection connection; +}; + +dictionary PresentationConnectionAvailableEventInit : EventInit { + required PresentationConnection connection; +}; + +enum PresentationConnectionState { "connecting", "connected", "closed", "terminated" }; + +[SecureContext, Exposed=Window] +interface PresentationConnection : EventTarget { + readonly attribute USVString id; + readonly attribute USVString url; + readonly attribute PresentationConnectionState state; + undefined close(); + undefined terminate(); + attribute EventHandler onconnect; + attribute EventHandler onclose; + attribute EventHandler onterminate; + + // Communication + attribute BinaryType binaryType; + attribute EventHandler onmessage; + undefined send (DOMString message); + undefined send (Blob data); + undefined send (ArrayBuffer data); + undefined send (ArrayBufferView data); +}; + +enum PresentationConnectionCloseReason { "error", "closed", "wentaway" }; + +[SecureContext, Exposed=Window] +interface PresentationConnectionCloseEvent : Event { + constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict); + readonly attribute PresentationConnectionCloseReason reason; + readonly attribute DOMString message; +}; + +dictionary PresentationConnectionCloseEventInit : EventInit { + required PresentationConnectionCloseReason reason; + DOMString message = ""; +}; + +[SecureContext, Exposed=Window] +interface PresentationReceiver { + readonly attribute Promise<PresentationConnectionList> connectionList; +}; + +[SecureContext, Exposed=Window] +interface PresentationConnectionList : EventTarget { + readonly attribute FrozenArray<PresentationConnection> connections; + attribute EventHandler onconnectionavailable; +}; diff --git a/testing/web-platform/tests/interfaces/priority-hints.idl b/testing/web-platform/tests/interfaces/priority-hints.idl new file mode 100644 index 0000000000..cbff6a5222 --- /dev/null +++ b/testing/web-platform/tests/interfaces/priority-hints.idl @@ -0,0 +1,20 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Priority Hints (https://wicg.github.io/priority-hints/) + +partial interface HTMLImageElement { + [CEReactions] attribute DOMString fetchPriority; +}; + +partial interface HTMLLinkElement { + [CEReactions] attribute DOMString fetchPriority; +}; + +partial interface HTMLScriptElement { + [CEReactions] attribute DOMString fetchPriority; +}; + +partial interface HTMLIFrameElement { + [CEReactions] attribute DOMString fetchPriority; +}; diff --git a/testing/web-platform/tests/interfaces/private-click-measurement.idl b/testing/web-platform/tests/interfaces/private-click-measurement.idl new file mode 100644 index 0000000000..3bed7ccf99 --- /dev/null +++ b/testing/web-platform/tests/interfaces/private-click-measurement.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Private Click Measurement (https://privacycg.github.io/private-click-measurement/) + +partial interface HTMLAnchorElement { + [CEReactions] attribute unsigned long attributionSourceId; +}; diff --git a/testing/web-platform/tests/interfaces/proximity.idl b/testing/web-platform/tests/interfaces/proximity.idl new file mode 100644 index 0000000000..3cbfbd5ad1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/proximity.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Proximity Sensor (https://w3c.github.io/proximity/) + +[SecureContext, Exposed=Window] +interface ProximitySensor : Sensor { + constructor(optional SensorOptions sensorOptions = {}); + readonly attribute double? distance; + readonly attribute double? max; + readonly attribute boolean? near; +}; + +dictionary ProximityReadingValues { + required double? distance; + required double? max; + required boolean? near; +}; diff --git a/testing/web-platform/tests/interfaces/push-api.idl b/testing/web-platform/tests/interfaces/push-api.idl new file mode 100644 index 0000000000..f582788806 --- /dev/null +++ b/testing/web-platform/tests/interfaces/push-api.idl @@ -0,0 +1,93 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Push API (https://w3c.github.io/push-api/) + +dictionary PushPermissionDescriptor : PermissionDescriptor { + boolean userVisibleOnly = false; +}; + +[SecureContext] +partial interface ServiceWorkerRegistration { + readonly attribute PushManager pushManager; +}; + +[Exposed=(Window,Worker), SecureContext] +interface PushManager { + [SameObject] static readonly attribute FrozenArray<DOMString> supportedContentEncodings; + + Promise<PushSubscription> subscribe(optional PushSubscriptionOptionsInit options = {}); + Promise<PushSubscription?> getSubscription(); + Promise<PermissionState> permissionState(optional PushSubscriptionOptionsInit options = {}); +}; + +[Exposed=(Window,Worker), SecureContext] +interface PushSubscriptionOptions { + readonly attribute boolean userVisibleOnly; + [SameObject] readonly attribute ArrayBuffer? applicationServerKey; +}; + +dictionary PushSubscriptionOptionsInit { + boolean userVisibleOnly = false; + (BufferSource or DOMString)? applicationServerKey = null; +}; + +[Exposed=(Window,Worker), SecureContext] +interface PushSubscription { + readonly attribute USVString endpoint; + readonly attribute EpochTimeStamp? expirationTime; + [SameObject] readonly attribute PushSubscriptionOptions options; + ArrayBuffer? getKey(PushEncryptionKeyName name); + Promise<boolean> unsubscribe(); + + PushSubscriptionJSON toJSON(); +}; + +dictionary PushSubscriptionJSON { + USVString endpoint; + EpochTimeStamp? expirationTime = null; + record<DOMString, USVString> keys; +}; + +enum PushEncryptionKeyName { + "p256dh", + "auth" +}; + +[Exposed=ServiceWorker, SecureContext] +interface PushMessageData { + ArrayBuffer arrayBuffer(); + Blob blob(); + any json(); + USVString text(); +}; + +[Exposed=ServiceWorker, SecureContext] +partial interface ServiceWorkerGlobalScope { + attribute EventHandler onpush; + attribute EventHandler onpushsubscriptionchange; +}; + +[Exposed=ServiceWorker, SecureContext] +interface PushEvent : ExtendableEvent { + constructor(DOMString type, optional PushEventInit eventInitDict = {}); + readonly attribute PushMessageData? data; +}; + +typedef (BufferSource or USVString) PushMessageDataInit; + +dictionary PushEventInit : ExtendableEventInit { + PushMessageDataInit data; +}; + +[Exposed=ServiceWorker, SecureContext] +interface PushSubscriptionChangeEvent : ExtendableEvent { + constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict = {}); + readonly attribute PushSubscription? newSubscription; + readonly attribute PushSubscription? oldSubscription; +}; + +dictionary PushSubscriptionChangeEventInit : ExtendableEventInit { + PushSubscription newSubscription = null; + PushSubscription oldSubscription = null; +}; diff --git a/testing/web-platform/tests/interfaces/raw-camera-access.idl b/testing/web-platform/tests/interfaces/raw-camera-access.idl new file mode 100644 index 0000000000..d8ee0bb3a4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/raw-camera-access.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Raw Camera Access Module (https://immersive-web.github.io/raw-camera-access/) + +partial interface XRView { + [SameObject] readonly attribute XRCamera? camera; +}; + +[SecureContext, Exposed=Window] +interface XRCamera { + readonly attribute unsigned long width; + readonly attribute unsigned long height; +}; + +partial interface XRWebGLBinding { + WebGLTexture? getCameraImage(XRCamera camera); +}; diff --git a/testing/web-platform/tests/interfaces/referrer-policy.idl b/testing/web-platform/tests/interfaces/referrer-policy.idl new file mode 100644 index 0000000000..0ef9a1fdec --- /dev/null +++ b/testing/web-platform/tests/interfaces/referrer-policy.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Referrer Policy (https://w3c.github.io/webappsec-referrer-policy/) + +enum ReferrerPolicy { + "", + "no-referrer", + "no-referrer-when-downgrade", + "same-origin", + "origin", + "strict-origin", + "origin-when-cross-origin", + "strict-origin-when-cross-origin", + "unsafe-url" +}; diff --git a/testing/web-platform/tests/interfaces/remote-playback.idl b/testing/web-platform/tests/interfaces/remote-playback.idl new file mode 100644 index 0000000000..2522410867 --- /dev/null +++ b/testing/web-platform/tests/interfaces/remote-playback.idl @@ -0,0 +1,32 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Remote Playback API (https://w3c.github.io/remote-playback/) + +[Exposed=Window] +interface RemotePlayback : EventTarget { + Promise<long> watchAvailability(RemotePlaybackAvailabilityCallback callback); + Promise<undefined> cancelWatchAvailability(optional long id); + + readonly attribute RemotePlaybackState state; + + attribute EventHandler onconnecting; + attribute EventHandler onconnect; + attribute EventHandler ondisconnect; + + Promise<undefined> prompt(); +}; + +enum RemotePlaybackState { + "connecting", + "connected", + "disconnected" +}; + +callback RemotePlaybackAvailabilityCallback = undefined(boolean available); + +partial interface HTMLMediaElement { + [SameObject] readonly attribute RemotePlayback remote; + + [CEReactions] attribute boolean disableRemotePlayback; +}; diff --git a/testing/web-platform/tests/interfaces/reporting.idl b/testing/web-platform/tests/interfaces/reporting.idl new file mode 100644 index 0000000000..c0a400a999 --- /dev/null +++ b/testing/web-platform/tests/interfaces/reporting.idl @@ -0,0 +1,39 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Reporting API (https://w3c.github.io/reporting/) + +[Exposed=(Window,Worker)] +interface ReportBody { + [Default] object toJSON(); +}; + +[Exposed=(Window,Worker)] +interface Report { + [Default] object toJSON(); + readonly attribute DOMString type; + readonly attribute DOMString url; + readonly attribute ReportBody? body; +}; + +[Exposed=(Window,Worker)] +interface ReportingObserver { + constructor(ReportingObserverCallback callback, optional ReportingObserverOptions options = {}); + undefined observe(); + undefined disconnect(); + ReportList takeRecords(); +}; + +callback ReportingObserverCallback = undefined (sequence<Report> reports, ReportingObserver observer); + +dictionary ReportingObserverOptions { + sequence<DOMString> types; + boolean buffered = false; +}; + +typedef sequence<Report> ReportList; + +dictionary GenerateTestReportParameters { + required DOMString message; + DOMString group = "default"; +}; diff --git a/testing/web-platform/tests/interfaces/requestidlecallback.idl b/testing/web-platform/tests/interfaces/requestidlecallback.idl new file mode 100644 index 0000000000..9c49aa1854 --- /dev/null +++ b/testing/web-platform/tests/interfaces/requestidlecallback.idl @@ -0,0 +1,20 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: requestIdleCallback() (https://w3c.github.io/requestidlecallback/) + +partial interface Window { + unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options = {}); + undefined cancelIdleCallback(unsigned long handle); +}; + +dictionary IdleRequestOptions { + unsigned long timeout; +}; + +[Exposed=Window] interface IdleDeadline { + DOMHighResTimeStamp timeRemaining(); + readonly attribute boolean didTimeout; +}; + +callback IdleRequestCallback = undefined (IdleDeadline deadline); diff --git a/testing/web-platform/tests/interfaces/resize-observer.idl b/testing/web-platform/tests/interfaces/resize-observer.idl new file mode 100644 index 0000000000..07f9703120 --- /dev/null +++ b/testing/web-platform/tests/interfaces/resize-observer.idl @@ -0,0 +1,37 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Resize Observer (https://drafts.csswg.org/resize-observer-1/) + +enum ResizeObserverBoxOptions { + "border-box", "content-box", "device-pixel-content-box" +}; + +dictionary ResizeObserverOptions { + ResizeObserverBoxOptions box = "content-box"; +}; + +[Exposed=(Window)] +interface ResizeObserver { + constructor(ResizeObserverCallback callback); + undefined observe(Element target, optional ResizeObserverOptions options = {}); + undefined unobserve(Element target); + undefined disconnect(); +}; + +callback ResizeObserverCallback = undefined (sequence<ResizeObserverEntry> entries, ResizeObserver observer); + +[Exposed=Window] +interface ResizeObserverEntry { + readonly attribute Element target; + readonly attribute DOMRectReadOnly contentRect; + readonly attribute FrozenArray<ResizeObserverSize> borderBoxSize; + readonly attribute FrozenArray<ResizeObserverSize> contentBoxSize; + readonly attribute FrozenArray<ResizeObserverSize> devicePixelContentBoxSize; +}; + +[Exposed=Window] +interface ResizeObserverSize { + readonly attribute unrestricted double inlineSize; + readonly attribute unrestricted double blockSize; +}; diff --git a/testing/web-platform/tests/interfaces/resource-timing.idl b/testing/web-platform/tests/interfaces/resource-timing.idl new file mode 100644 index 0000000000..242df0bd80 --- /dev/null +++ b/testing/web-platform/tests/interfaces/resource-timing.idl @@ -0,0 +1,39 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Resource Timing (https://w3c.github.io/resource-timing/) + +[Exposed=(Window,Worker)] +interface PerformanceResourceTiming : PerformanceEntry { + readonly attribute DOMString initiatorType; + readonly attribute ByteString nextHopProtocol; + readonly attribute DOMHighResTimeStamp workerStart; + readonly attribute DOMHighResTimeStamp redirectStart; + readonly attribute DOMHighResTimeStamp redirectEnd; + readonly attribute DOMHighResTimeStamp fetchStart; + readonly attribute DOMHighResTimeStamp domainLookupStart; + readonly attribute DOMHighResTimeStamp domainLookupEnd; + readonly attribute DOMHighResTimeStamp connectStart; + readonly attribute DOMHighResTimeStamp connectEnd; + readonly attribute DOMHighResTimeStamp secureConnectionStart; + readonly attribute DOMHighResTimeStamp requestStart; + readonly attribute DOMHighResTimeStamp responseStart; + readonly attribute DOMHighResTimeStamp responseEnd; + readonly attribute unsigned long long transferSize; + readonly attribute unsigned long long encodedBodySize; + readonly attribute unsigned long long decodedBodySize; + readonly attribute unsigned short responseStatus; + readonly attribute RenderBlockingStatusType renderBlockingStatus; + [Default] object toJSON(); +}; + +enum RenderBlockingStatusType { + "blocking", + "non-blocking" +}; + +partial interface Performance { + undefined clearResourceTimings (); + undefined setResourceTimingBufferSize (unsigned long maxSize); + attribute EventHandler onresourcetimingbufferfull; +}; diff --git a/testing/web-platform/tests/interfaces/sanitizer-api.idl b/testing/web-platform/tests/interfaces/sanitizer-api.idl new file mode 100644 index 0000000000..117a55fdf7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/sanitizer-api.idl @@ -0,0 +1,38 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: HTML Sanitizer API (https://wicg.github.io/sanitizer-api/) + +[ + Exposed=(Window), + SecureContext +] interface Sanitizer { + constructor(optional SanitizerConfig config = {}); + + DocumentFragment sanitize((Document or DocumentFragment) input); + Element? sanitizeFor(DOMString element, DOMString input); + + SanitizerConfig getConfiguration(); + static SanitizerConfig getDefaultConfiguration(); +}; + +dictionary SetHTMLOptions { + Sanitizer sanitizer; +}; +[SecureContext] +partial interface Element { + undefined setHTML(DOMString input, optional SetHTMLOptions options = {}); +}; + +dictionary SanitizerConfig { + sequence<DOMString> allowElements; + sequence<DOMString> blockElements; + sequence<DOMString> dropElements; + AttributeMatchList allowAttributes; + AttributeMatchList dropAttributes; + boolean allowCustomElements; + boolean allowUnknownMarkup; + boolean allowComments; +}; + +typedef record<DOMString, sequence<DOMString>> AttributeMatchList; diff --git a/testing/web-platform/tests/interfaces/sanitizer-api.tentative.idl b/testing/web-platform/tests/interfaces/sanitizer-api.tentative.idl new file mode 100644 index 0000000000..3e843d8eb0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/sanitizer-api.tentative.idl @@ -0,0 +1,17 @@ +// https://wicg.github.io/sanitizer-api/ + +[ + Exposed=Window, + SecureContext +] interface Sanitizer { + constructor(optional SanitizerConfig sanitizerConfig = {}); + DocumentFragment sanitize((DocumentFragment or Document) input); +}; + +dictionary SanitizerConfig { + sequence<DOMString> allowElements; + sequence<DOMString> blockElements; + sequence<DOMString> dropElements; + sequence<DOMString> allowAttributes; + sequence<DOMString> dropAttributes; +}; diff --git a/testing/web-platform/tests/interfaces/savedata.idl b/testing/web-platform/tests/interfaces/savedata.idl new file mode 100644 index 0000000000..f1274b8ef7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/savedata.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Save Data API (https://wicg.github.io/savedata/) + +interface mixin NetworkInformationSaveData { + [SameObject] readonly attribute boolean saveData; +}; + +NetworkInformation includes NetworkInformationSaveData; diff --git a/testing/web-platform/tests/interfaces/scheduling-apis.idl b/testing/web-platform/tests/interfaces/scheduling-apis.idl new file mode 100644 index 0000000000..9ed49cfb68 --- /dev/null +++ b/testing/web-platform/tests/interfaces/scheduling-apis.idl @@ -0,0 +1,57 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Prioritized Task Scheduling (https://wicg.github.io/scheduling-apis/) + +enum TaskPriority { + "user-blocking", + "user-visible", + "background" +}; + +dictionary SchedulerPostTaskOptions { + AbortSignal signal; + TaskPriority priority; + [EnforceRange] unsigned long long delay = 0; +}; + +callback SchedulerPostTaskCallback = any (); + +[Exposed=(Window, Worker)] +interface Scheduler { + Promise<any> postTask(SchedulerPostTaskCallback callback, + optional SchedulerPostTaskOptions options = {}); +}; + +[Exposed=(Window, Worker)] +interface TaskPriorityChangeEvent : Event { + constructor(DOMString type, TaskPriorityChangeEventInit priorityChangeEventInitDict); + + readonly attribute TaskPriority previousPriority; +}; + +dictionary TaskPriorityChangeEventInit : EventInit { + required TaskPriority previousPriority; +}; + +dictionary TaskControllerInit { + TaskPriority priority = "user-visible"; +}; + +[Exposed=(Window,Worker)] +interface TaskController : AbortController { + constructor(optional TaskControllerInit init = {}); + + undefined setPriority(TaskPriority priority); +}; + +[Exposed=(Window, Worker)] +interface TaskSignal : AbortSignal { + readonly attribute TaskPriority priority; + + attribute EventHandler onprioritychange; +}; + +partial interface mixin WindowOrWorkerGlobalScope { + [Replaceable] readonly attribute Scheduler scheduler; +}; diff --git a/testing/web-platform/tests/interfaces/screen-capture.idl b/testing/web-platform/tests/interfaces/screen-capture.idl new file mode 100644 index 0000000000..9abd4d2c1a --- /dev/null +++ b/testing/web-platform/tests/interfaces/screen-capture.idl @@ -0,0 +1,85 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Screen Capture (https://w3c.github.io/mediacapture-screen-share/) + +partial interface MediaDevices { + Promise<MediaStream> getDisplayMedia(optional DisplayMediaStreamOptions options = {}); +}; + +enum CaptureStartFocusBehavior { + "focus-captured-surface", + "no-focus-change" +}; + +[Exposed=Window, SecureContext] +interface CaptureController { + constructor(); + undefined setFocusBehavior(CaptureStartFocusBehavior focusBehavior); +}; + +enum SelfCapturePreferenceEnum { + "include", + "exclude" +}; + +enum SystemAudioPreferenceEnum { + "include", + "exclude" +}; + +enum SurfaceSwitchingPreferenceEnum { + "include", + "exclude" +}; + +dictionary DisplayMediaStreamOptions { + (boolean or MediaTrackConstraints) video = true; + (boolean or MediaTrackConstraints) audio = false; + CaptureController controller; + SelfCapturePreferenceEnum selfBrowserSurface; + SystemAudioPreferenceEnum systemAudio; + SurfaceSwitchingPreferenceEnum surfaceSwitching; +}; + +partial dictionary MediaTrackSupportedConstraints { + boolean displaySurface = true; + boolean logicalSurface = true; + boolean cursor = true; + boolean restrictOwnAudio = true; + boolean suppressLocalAudioPlayback = true; +}; + +partial dictionary MediaTrackConstraintSet { + ConstrainDOMString displaySurface; + ConstrainBoolean logicalSurface; + ConstrainDOMString cursor; + ConstrainBoolean restrictOwnAudio; + ConstrainBoolean suppressLocalAudioPlayback; +}; + +partial dictionary MediaTrackSettings { + DOMString displaySurface; + boolean logicalSurface; + DOMString cursor; + boolean restrictOwnAudio; + boolean suppressLocalAudioPlayback; +}; + +partial dictionary MediaTrackCapabilities { + DOMString displaySurface; + boolean logicalSurface; + sequence<DOMString> cursor; +}; + +enum DisplayCaptureSurfaceType { + "monitor", + "window", + "browser" +}; + +enum CursorCaptureConstraint { + "never", + "always", + "motion" +}; diff --git a/testing/web-platform/tests/interfaces/screen-orientation.idl b/testing/web-platform/tests/interfaces/screen-orientation.idl new file mode 100644 index 0000000000..df8a1db539 --- /dev/null +++ b/testing/web-platform/tests/interfaces/screen-orientation.idl @@ -0,0 +1,35 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Screen Orientation (https://w3c.github.io/screen-orientation/) + +partial interface Screen { + [SameObject] readonly attribute ScreenOrientation orientation; +}; + +[Exposed=Window] +interface ScreenOrientation : EventTarget { + Promise<undefined> lock(OrientationLockType orientation); + undefined unlock(); + readonly attribute OrientationType type; + readonly attribute unsigned short angle; + attribute EventHandler onchange; +}; + +enum OrientationLockType { + "any", + "natural", + "landscape", + "portrait", + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; + +enum OrientationType { + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; diff --git a/testing/web-platform/tests/interfaces/screen-wake-lock.idl b/testing/web-platform/tests/interfaces/screen-wake-lock.idl new file mode 100644 index 0000000000..c9d259ebcc --- /dev/null +++ b/testing/web-platform/tests/interfaces/screen-wake-lock.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Screen Wake Lock API (https://w3c.github.io/screen-wake-lock/) + +[SecureContext] +partial interface Navigator { + [SameObject] readonly attribute WakeLock wakeLock; +}; + +[SecureContext, Exposed=(Window)] +interface WakeLock { + Promise<WakeLockSentinel> request(optional WakeLockType type = "screen"); +}; + +[SecureContext, Exposed=(Window)] +interface WakeLockSentinel : EventTarget { + readonly attribute boolean released; + readonly attribute WakeLockType type; + Promise<undefined> release(); + attribute EventHandler onrelease; +}; + +enum WakeLockType { "screen" }; diff --git a/testing/web-platform/tests/interfaces/scroll-animations.idl b/testing/web-platform/tests/interfaces/scroll-animations.idl new file mode 100644 index 0000000000..30ecbd81c9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/scroll-animations.idl @@ -0,0 +1,41 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Scroll-linked Animations (https://drafts.csswg.org/scroll-animations-1/) + +enum ScrollAxis { + "block", + "inline", + "horizontal", + "vertical" +}; + +dictionary ScrollTimelineOptions { + Element? source; + ScrollAxis axis = "block"; +}; + +[Exposed=Window] +interface ScrollTimeline : AnimationTimeline { + constructor(optional ScrollTimelineOptions options = {}); + readonly attribute Element? source; + readonly attribute ScrollAxis axis; +}; + +dictionary ViewTimelineOptions { + Element subject; + ScrollAxis axis = "block"; +}; + +[Exposed=Window] +interface ViewTimeline : ScrollTimeline { + constructor(optional ViewTimelineOptions options = {}); + readonly attribute Element subject; + readonly attribute CSSNumericValue startOffset; + readonly attribute CSSNumericValue endOffset; +}; + +[Exposed=Window] +partial interface AnimationTimeline { + CSSNumericValue? getCurrentTime(optional CSSOMString rangeName); +}; diff --git a/testing/web-platform/tests/interfaces/scroll-to-text-fragment.idl b/testing/web-platform/tests/interfaces/scroll-to-text-fragment.idl new file mode 100644 index 0000000000..ce571ddd69 --- /dev/null +++ b/testing/web-platform/tests/interfaces/scroll-to-text-fragment.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Text Fragments (https://wicg.github.io/scroll-to-text-fragment/) + +[Exposed=Window] +interface FragmentDirective { +}; + +partial interface Document { + [SameObject] readonly attribute FragmentDirective fragmentDirective; +}; diff --git a/testing/web-platform/tests/interfaces/secure-payment-confirmation.idl b/testing/web-platform/tests/interfaces/secure-payment-confirmation.idl new file mode 100644 index 0000000000..6b6083b165 --- /dev/null +++ b/testing/web-platform/tests/interfaces/secure-payment-confirmation.idl @@ -0,0 +1,59 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Secure Payment Confirmation (https://w3c.github.io/secure-payment-confirmation/) + +dictionary SecurePaymentConfirmationRequest { + required BufferSource challenge; + required USVString rpId; + required sequence<BufferSource> credentialIds; + required PaymentCredentialInstrument instrument; + unsigned long timeout; + USVString payeeName; + USVString payeeOrigin; + AuthenticationExtensionsClientInputs extensions; + sequence<USVString> locale; + boolean showOptOut; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + AuthenticationExtensionsPaymentInputs payment; +}; + +dictionary AuthenticationExtensionsPaymentInputs { + boolean isPayment; + + // Only used for authentication. + USVString rpId; + USVString topOrigin; + USVString payeeName; + USVString payeeOrigin; + PaymentCurrencyAmount total; + PaymentCredentialInstrument instrument; +}; + +dictionary CollectedClientPaymentData : CollectedClientData { + required CollectedClientAdditionalPaymentData payment; +}; + +dictionary CollectedClientAdditionalPaymentData { + required USVString rpId; + required USVString topOrigin; + USVString payeeName; + USVString payeeOrigin; + required PaymentCurrencyAmount total; + required PaymentCredentialInstrument instrument; +}; + +dictionary PaymentCredentialInstrument { + required USVString displayName; + required USVString icon; + boolean iconMustBeShown = true; +}; + +enum TransactionAutomationMode { + "none", + "autoAccept", + "autoReject", + "autoOptOut" +}; diff --git a/testing/web-platform/tests/interfaces/selection-api.idl b/testing/web-platform/tests/interfaces/selection-api.idl new file mode 100644 index 0000000000..c1eed2a9cf --- /dev/null +++ b/testing/web-platform/tests/interfaces/selection-api.idl @@ -0,0 +1,45 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Selection API (https://w3c.github.io/selection-api/) + +[Exposed=Window] +interface Selection { + readonly attribute Node? anchorNode; + readonly attribute unsigned long anchorOffset; + readonly attribute Node? focusNode; + readonly attribute unsigned long focusOffset; + readonly attribute boolean isCollapsed; + readonly attribute unsigned long rangeCount; + readonly attribute DOMString type; + Range getRangeAt(unsigned long index); + undefined addRange(Range range); + undefined removeRange(Range range); + undefined removeAllRanges(); + undefined empty(); + StaticRange getComposedRange(ShadowRoot... shadowRoots); + undefined collapse(Node? node, optional unsigned long offset = 0); + undefined setPosition(Node? node, optional unsigned long offset = 0); + undefined collapseToStart(); + undefined collapseToEnd(); + undefined extend(Node node, optional unsigned long offset = 0); + undefined setBaseAndExtent(Node anchorNode, unsigned long anchorOffset, Node focusNode, unsigned long focusOffset); + undefined selectAllChildren(Node node); + undefined modify(optional DOMString alter, optional DOMString direction, optional DOMString granularity); + [CEReactions] undefined deleteFromDocument(); + boolean containsNode(Node node, optional boolean allowPartialContainment = false); + stringifier; +}; + +partial interface Document { + Selection? getSelection(); +}; + +partial interface Window { + Selection? getSelection(); +}; + +partial interface mixin GlobalEventHandlers { + attribute EventHandler onselectstart; + attribute EventHandler onselectionchange; +}; diff --git a/testing/web-platform/tests/interfaces/serial.idl b/testing/web-platform/tests/interfaces/serial.idl new file mode 100644 index 0000000000..ee46a8562b --- /dev/null +++ b/testing/web-platform/tests/interfaces/serial.idl @@ -0,0 +1,85 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Serial API (https://wicg.github.io/serial/) + +[Exposed=Window, SecureContext] +partial interface Navigator { + [SameObject] readonly attribute Serial serial; +}; + +[Exposed=DedicatedWorker, SecureContext] +partial interface WorkerNavigator { + [SameObject] readonly attribute Serial serial; +}; + +[Exposed=(DedicatedWorker, Window), SecureContext] +interface Serial : EventTarget { + attribute EventHandler onconnect; + attribute EventHandler ondisconnect; + Promise<sequence<SerialPort>> getPorts(); + [Exposed=Window] Promise<SerialPort> requestPort(optional SerialPortRequestOptions options = {}); +}; + +dictionary SerialPortRequestOptions { + sequence<SerialPortFilter> filters; +}; + +dictionary SerialPortFilter { + unsigned short usbVendorId; + unsigned short usbProductId; +}; + +[Exposed=(DedicatedWorker,Window), SecureContext] +interface SerialPort : EventTarget { + attribute EventHandler onconnect; + attribute EventHandler ondisconnect; + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; + + SerialPortInfo getInfo(); + + Promise<undefined> open(SerialOptions options); + Promise<undefined> setSignals(optional SerialOutputSignals signals = {}); + Promise<SerialInputSignals> getSignals(); + Promise<undefined> close(); + Promise<undefined> forget(); +}; + +dictionary SerialPortInfo { + unsigned short usbVendorId; + unsigned short usbProductId; +}; + +dictionary SerialOptions { + [EnforceRange] required unsigned long baudRate; + [EnforceRange] octet dataBits = 8; + [EnforceRange] octet stopBits = 1; + ParityType parity = "none"; + [EnforceRange] unsigned long bufferSize = 255; + FlowControlType flowControl = "none"; +}; + +enum ParityType { + "none", + "even", + "odd" +}; + +enum FlowControlType { + "none", + "hardware" +}; + +dictionary SerialOutputSignals { + boolean dataTerminalReady; + boolean requestToSend; + boolean break; +}; + +dictionary SerialInputSignals { + required boolean dataCarrierDetect; + required boolean clearToSend; + required boolean ringIndicator; + required boolean dataSetReady; +}; diff --git a/testing/web-platform/tests/interfaces/server-timing.idl b/testing/web-platform/tests/interfaces/server-timing.idl new file mode 100644 index 0000000000..ef2a761dfc --- /dev/null +++ b/testing/web-platform/tests/interfaces/server-timing.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Server Timing (https://w3c.github.io/server-timing/) + +[Exposed=(Window,Worker)] +interface PerformanceServerTiming { + readonly attribute DOMString name; + readonly attribute DOMHighResTimeStamp duration; + readonly attribute DOMString description; + [Default] object toJSON(); +}; + +[Exposed=(Window,Worker)] +partial interface PerformanceResourceTiming { + readonly attribute FrozenArray<PerformanceServerTiming> serverTiming; +}; diff --git a/testing/web-platform/tests/interfaces/service-workers.idl b/testing/web-platform/tests/interfaces/service-workers.idl new file mode 100644 index 0000000000..6d44d61deb --- /dev/null +++ b/testing/web-platform/tests/interfaces/service-workers.idl @@ -0,0 +1,240 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Service Workers Nightly (https://w3c.github.io/ServiceWorker/) + +[SecureContext, Exposed=(Window,Worker)] +interface ServiceWorker : EventTarget { + readonly attribute USVString scriptURL; + readonly attribute ServiceWorkerState state; + undefined postMessage(any message, sequence<object> transfer); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); + + // event + attribute EventHandler onstatechange; +}; +ServiceWorker includes AbstractWorker; + +enum ServiceWorkerState { + "parsed", + "installing", + "installed", + "activating", + "activated", + "redundant" +}; + +[SecureContext, Exposed=(Window,Worker)] +interface ServiceWorkerRegistration : EventTarget { + readonly attribute ServiceWorker? installing; + readonly attribute ServiceWorker? waiting; + readonly attribute ServiceWorker? active; + [SameObject] readonly attribute NavigationPreloadManager navigationPreload; + + readonly attribute USVString scope; + readonly attribute ServiceWorkerUpdateViaCache updateViaCache; + + [NewObject] Promise<undefined> update(); + [NewObject] Promise<boolean> unregister(); + + // event + attribute EventHandler onupdatefound; +}; + +enum ServiceWorkerUpdateViaCache { + "imports", + "all", + "none" +}; + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker; +}; + +partial interface WorkerNavigator { + [SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface ServiceWorkerContainer : EventTarget { + readonly attribute ServiceWorker? controller; + readonly attribute Promise<ServiceWorkerRegistration> ready; + + [NewObject] Promise<ServiceWorkerRegistration> register(USVString scriptURL, optional RegistrationOptions options = {}); + + [NewObject] Promise<(ServiceWorkerRegistration or undefined)> getRegistration(optional USVString clientURL = ""); + [NewObject] Promise<FrozenArray<ServiceWorkerRegistration>> getRegistrations(); + + undefined startMessages(); + + // events + attribute EventHandler oncontrollerchange; + attribute EventHandler onmessage; // event.source of message events is ServiceWorker object + attribute EventHandler onmessageerror; +}; + +dictionary RegistrationOptions { + USVString scope; + WorkerType type = "classic"; + ServiceWorkerUpdateViaCache updateViaCache = "imports"; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface NavigationPreloadManager { + Promise<undefined> enable(); + Promise<undefined> disable(); + Promise<undefined> setHeaderValue(ByteString value); + Promise<NavigationPreloadState> getState(); +}; + +dictionary NavigationPreloadState { + boolean enabled = false; + ByteString headerValue; +}; + +[Global=(Worker,ServiceWorker), Exposed=ServiceWorker] +interface ServiceWorkerGlobalScope : WorkerGlobalScope { + [SameObject] readonly attribute Clients clients; + [SameObject] readonly attribute ServiceWorkerRegistration registration; + [SameObject] readonly attribute ServiceWorker serviceWorker; + + [NewObject] Promise<undefined> skipWaiting(); + + attribute EventHandler oninstall; + attribute EventHandler onactivate; + attribute EventHandler onfetch; + + attribute EventHandler onmessage; + attribute EventHandler onmessageerror; +}; + +[Exposed=ServiceWorker] +interface Client { + readonly attribute USVString url; + readonly attribute FrameType frameType; + readonly attribute DOMString id; + readonly attribute ClientType type; + undefined postMessage(any message, sequence<object> transfer); + undefined postMessage(any message, optional StructuredSerializeOptions options = {}); +}; + +[Exposed=ServiceWorker] +interface WindowClient : Client { + readonly attribute DocumentVisibilityState visibilityState; + readonly attribute boolean focused; + [SameObject] readonly attribute FrozenArray<USVString> ancestorOrigins; + [NewObject] Promise<WindowClient> focus(); + [NewObject] Promise<WindowClient?> navigate(USVString url); +}; + +enum FrameType { + "auxiliary", + "top-level", + "nested", + "none" +}; + +[Exposed=ServiceWorker] +interface Clients { + // The objects returned will be new instances every time + [NewObject] Promise<(Client or undefined)> get(DOMString id); + [NewObject] Promise<FrozenArray<Client>> matchAll(optional ClientQueryOptions options = {}); + [NewObject] Promise<WindowClient?> openWindow(USVString url); + [NewObject] Promise<undefined> claim(); +}; + +dictionary ClientQueryOptions { + boolean includeUncontrolled = false; + ClientType type = "window"; +}; + +enum ClientType { + "window", + "worker", + "sharedworker", + "all" +}; + +[Exposed=ServiceWorker] +interface ExtendableEvent : Event { + constructor(DOMString type, optional ExtendableEventInit eventInitDict = {}); + undefined waitUntil(Promise<any> f); +}; + +dictionary ExtendableEventInit : EventInit { + // Defined for the forward compatibility across the derived events +}; + +[Exposed=ServiceWorker] +interface FetchEvent : ExtendableEvent { + constructor(DOMString type, FetchEventInit eventInitDict); + [SameObject] readonly attribute Request request; + readonly attribute Promise<any> preloadResponse; + readonly attribute DOMString clientId; + readonly attribute DOMString resultingClientId; + readonly attribute DOMString replacesClientId; + readonly attribute Promise<undefined> handled; + + undefined respondWith(Promise<Response> r); +}; + +dictionary FetchEventInit : ExtendableEventInit { + required Request request; + Promise<any> preloadResponse; + DOMString clientId = ""; + DOMString resultingClientId = ""; + DOMString replacesClientId = ""; + Promise<undefined> handled; +}; + +[Exposed=ServiceWorker] +interface ExtendableMessageEvent : ExtendableEvent { + constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict = {}); + readonly attribute any data; + readonly attribute USVString origin; + readonly attribute DOMString lastEventId; + [SameObject] readonly attribute (Client or ServiceWorker or MessagePort)? source; + readonly attribute FrozenArray<MessagePort> ports; +}; + +dictionary ExtendableMessageEventInit : ExtendableEventInit { + any data = null; + USVString origin = ""; + DOMString lastEventId = ""; + (Client or ServiceWorker or MessagePort)? source = null; + sequence<MessagePort> ports = []; +}; + +partial interface mixin WindowOrWorkerGlobalScope { + [SecureContext, SameObject] readonly attribute CacheStorage caches; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface Cache { + [NewObject] Promise<(Response or undefined)> match(RequestInfo request, optional CacheQueryOptions options = {}); + [NewObject] Promise<FrozenArray<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options = {}); + [NewObject] Promise<undefined> add(RequestInfo request); + [NewObject] Promise<undefined> addAll(sequence<RequestInfo> requests); + [NewObject] Promise<undefined> put(RequestInfo request, Response response); + [NewObject] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options = {}); + [NewObject] Promise<FrozenArray<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options = {}); +}; + +dictionary CacheQueryOptions { + boolean ignoreSearch = false; + boolean ignoreMethod = false; + boolean ignoreVary = false; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface CacheStorage { + [NewObject] Promise<(Response or undefined)> match(RequestInfo request, optional MultiCacheQueryOptions options = {}); + [NewObject] Promise<boolean> has(DOMString cacheName); + [NewObject] Promise<Cache> open(DOMString cacheName); + [NewObject] Promise<boolean> delete(DOMString cacheName); + [NewObject] Promise<sequence<DOMString>> keys(); +}; + +dictionary MultiCacheQueryOptions : CacheQueryOptions { + DOMString cacheName; +}; diff --git a/testing/web-platform/tests/interfaces/shape-detection-api.idl b/testing/web-platform/tests/interfaces/shape-detection-api.idl new file mode 100644 index 0000000000..4fc1f085ea --- /dev/null +++ b/testing/web-platform/tests/interfaces/shape-detection-api.idl @@ -0,0 +1,69 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Accelerated Shape Detection in Images (https://wicg.github.io/shape-detection-api/) + +[Exposed=(Window,Worker), + SecureContext] +interface FaceDetector { + constructor(optional FaceDetectorOptions faceDetectorOptions = {}); + Promise<sequence<DetectedFace>> detect(ImageBitmapSource image); +}; + +dictionary FaceDetectorOptions { + unsigned short maxDetectedFaces; + boolean fastMode; +}; + +dictionary DetectedFace { + required DOMRectReadOnly boundingBox; + required FrozenArray<Landmark>? landmarks; +}; + +dictionary Landmark { + required FrozenArray<Point2D> locations; + LandmarkType type; +}; + +enum LandmarkType { + "mouth", + "eye", + "nose" +}; + +[Exposed=(Window,Worker), + SecureContext] +interface BarcodeDetector { + constructor(optional BarcodeDetectorOptions barcodeDetectorOptions = {}); + static Promise<sequence<BarcodeFormat>> getSupportedFormats(); + + Promise<sequence<DetectedBarcode>> detect(ImageBitmapSource image); +}; + +dictionary BarcodeDetectorOptions { + sequence<BarcodeFormat> formats; +}; + +dictionary DetectedBarcode { + required DOMRectReadOnly boundingBox; + required DOMString rawValue; + required BarcodeFormat format; + required FrozenArray<Point2D> cornerPoints; +}; + +enum BarcodeFormat { + "aztec", + "code_128", + "code_39", + "code_93", + "codabar", + "data_matrix", + "ean_13", + "ean_8", + "itf", + "pdf417", + "qr_code", + "unknown", + "upc_a", + "upc_e" +}; diff --git a/testing/web-platform/tests/interfaces/speech-api.idl b/testing/web-platform/tests/interfaces/speech-api.idl new file mode 100644 index 0000000000..7408548152 --- /dev/null +++ b/testing/web-platform/tests/interfaces/speech-api.idl @@ -0,0 +1,202 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Speech API (https://wicg.github.io/speech-api/) + +[Exposed=Window] +interface SpeechRecognition : EventTarget { + constructor(); + + // recognition parameters + attribute SpeechGrammarList grammars; + attribute DOMString lang; + attribute boolean continuous; + attribute boolean interimResults; + attribute unsigned long maxAlternatives; + + // methods to drive the speech interaction + undefined start(); + undefined stop(); + undefined abort(); + + // event methods + attribute EventHandler onaudiostart; + attribute EventHandler onsoundstart; + attribute EventHandler onspeechstart; + attribute EventHandler onspeechend; + attribute EventHandler onsoundend; + attribute EventHandler onaudioend; + attribute EventHandler onresult; + attribute EventHandler onnomatch; + attribute EventHandler onerror; + attribute EventHandler onstart; + attribute EventHandler onend; +}; + +enum SpeechRecognitionErrorCode { + "no-speech", + "aborted", + "audio-capture", + "network", + "not-allowed", + "service-not-allowed", + "bad-grammar", + "language-not-supported" +}; + +[Exposed=Window] +interface SpeechRecognitionErrorEvent : Event { + constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict); + readonly attribute SpeechRecognitionErrorCode error; + readonly attribute DOMString message; +}; + +dictionary SpeechRecognitionErrorEventInit : EventInit { + required SpeechRecognitionErrorCode error; + DOMString message = ""; +}; + +// Item in N-best list +[Exposed=Window] +interface SpeechRecognitionAlternative { + readonly attribute DOMString transcript; + readonly attribute float confidence; +}; + +// A complete one-shot simple response +[Exposed=Window] +interface SpeechRecognitionResult { + readonly attribute unsigned long length; + getter SpeechRecognitionAlternative item(unsigned long index); + readonly attribute boolean isFinal; +}; + +// A collection of responses (used in continuous mode) +[Exposed=Window] +interface SpeechRecognitionResultList { + readonly attribute unsigned long length; + getter SpeechRecognitionResult item(unsigned long index); +}; + +// A full response, which could be interim or final, part of a continuous response or not +[Exposed=Window] +interface SpeechRecognitionEvent : Event { + constructor(DOMString type, SpeechRecognitionEventInit eventInitDict); + readonly attribute unsigned long resultIndex; + readonly attribute SpeechRecognitionResultList results; +}; + +dictionary SpeechRecognitionEventInit : EventInit { + unsigned long resultIndex = 0; + required SpeechRecognitionResultList results; +}; + +// The object representing a speech grammar +[Exposed=Window] +interface SpeechGrammar { + attribute DOMString src; + attribute float weight; +}; + +// The object representing a speech grammar collection +[Exposed=Window] +interface SpeechGrammarList { + constructor(); + readonly attribute unsigned long length; + getter SpeechGrammar item(unsigned long index); + undefined addFromURI(DOMString src, + optional float weight = 1.0); + undefined addFromString(DOMString string, + optional float weight = 1.0); +}; + +[Exposed=Window] +interface SpeechSynthesis : EventTarget { + readonly attribute boolean pending; + readonly attribute boolean speaking; + readonly attribute boolean paused; + + attribute EventHandler onvoiceschanged; + + undefined speak(SpeechSynthesisUtterance utterance); + undefined cancel(); + undefined pause(); + undefined resume(); + sequence<SpeechSynthesisVoice> getVoices(); +}; + +partial interface Window { + [SameObject] readonly attribute SpeechSynthesis speechSynthesis; +}; + +[Exposed=Window] +interface SpeechSynthesisUtterance : EventTarget { + constructor(optional DOMString text); + + attribute DOMString text; + attribute DOMString lang; + attribute SpeechSynthesisVoice? voice; + attribute float volume; + attribute float rate; + attribute float pitch; + + attribute EventHandler onstart; + attribute EventHandler onend; + attribute EventHandler onerror; + attribute EventHandler onpause; + attribute EventHandler onresume; + attribute EventHandler onmark; + attribute EventHandler onboundary; +}; + +[Exposed=Window] +interface SpeechSynthesisEvent : Event { + constructor(DOMString type, SpeechSynthesisEventInit eventInitDict); + readonly attribute SpeechSynthesisUtterance utterance; + readonly attribute unsigned long charIndex; + readonly attribute unsigned long charLength; + readonly attribute float elapsedTime; + readonly attribute DOMString name; +}; + +dictionary SpeechSynthesisEventInit : EventInit { + required SpeechSynthesisUtterance utterance; + unsigned long charIndex = 0; + unsigned long charLength = 0; + float elapsedTime = 0; + DOMString name = ""; +}; + +enum SpeechSynthesisErrorCode { + "canceled", + "interrupted", + "audio-busy", + "audio-hardware", + "network", + "synthesis-unavailable", + "synthesis-failed", + "language-unavailable", + "voice-unavailable", + "text-too-long", + "invalid-argument", + "not-allowed", +}; + +[Exposed=Window] +interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent { + constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict); + readonly attribute SpeechSynthesisErrorCode error; +}; + +dictionary SpeechSynthesisErrorEventInit : SpeechSynthesisEventInit { + required SpeechSynthesisErrorCode error; +}; + +[Exposed=Window] +interface SpeechSynthesisVoice { + readonly attribute DOMString voiceURI; + readonly attribute DOMString name; + readonly attribute DOMString lang; + readonly attribute boolean localService; + readonly attribute boolean default; +}; diff --git a/testing/web-platform/tests/interfaces/storage-access.idl b/testing/web-platform/tests/interfaces/storage-access.idl new file mode 100644 index 0000000000..fff583e098 --- /dev/null +++ b/testing/web-platform/tests/interfaces/storage-access.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: The Storage Access API (https://privacycg.github.io/storage-access/) + +partial interface Document { + Promise<boolean> hasStorageAccess(); + Promise<undefined> requestStorageAccess(); +}; diff --git a/testing/web-platform/tests/interfaces/storage-buckets.tentative.idl b/testing/web-platform/tests/interfaces/storage-buckets.tentative.idl new file mode 100644 index 0000000000..73d72ceab9 --- /dev/null +++ b/testing/web-platform/tests/interfaces/storage-buckets.tentative.idl @@ -0,0 +1,36 @@ +[ + Exposed=(Window,Worker), + SecureContext +] interface StorageBucketManager { + Promise<StorageBucket> open(DOMString name, + optional StorageBucketOptions options = {}); + Promise<sequence<DOMString>> keys(); + Promise<undefined> delete(DOMString name); +}; + +dictionary StorageBucketOptions { + boolean persisted = false; + StorageBucketDurability durability = "relaxed"; + unsigned long long? quota = null; + DOMTimeStamp? expires = null; +}; + +enum StorageBucketDurability { + "strict", + "relaxed" +}; + +[ + Exposed=(Window,Worker), + SecureContext +] interface StorageBucket { + [Exposed=Window] Promise<boolean> persist(); + Promise<boolean> persisted(); + + Promise<StorageEstimate> estimate(); + + Promise<StorageBucketDurability> durability(); + + Promise<undefined> setExpires(DOMTimeStamp expires); + Promise<DOMTimeStamp> expires(); +}; diff --git a/testing/web-platform/tests/interfaces/storage.idl b/testing/web-platform/tests/interfaces/storage.idl new file mode 100644 index 0000000000..d47e37c40e --- /dev/null +++ b/testing/web-platform/tests/interfaces/storage.idl @@ -0,0 +1,25 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Storage Standard (https://storage.spec.whatwg.org/) + +[SecureContext] +interface mixin NavigatorStorage { + [SameObject] readonly attribute StorageManager storage; +}; +Navigator includes NavigatorStorage; +WorkerNavigator includes NavigatorStorage; + +[SecureContext, + Exposed=(Window,Worker)] +interface StorageManager { + Promise<boolean> persisted(); + [Exposed=Window] Promise<boolean> persist(); + + Promise<StorageEstimate> estimate(); +}; + +dictionary StorageEstimate { + unsigned long long usage; + unsigned long long quota; +}; diff --git a/testing/web-platform/tests/interfaces/streams.idl b/testing/web-platform/tests/interfaces/streams.idl new file mode 100644 index 0000000000..fd5420f16a --- /dev/null +++ b/testing/web-platform/tests/interfaces/streams.idl @@ -0,0 +1,222 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Streams Standard (https://streams.spec.whatwg.org/) + +[Exposed=*, Transferable] +interface ReadableStream { + constructor(optional object underlyingSource, optional QueuingStrategy strategy = {}); + + readonly attribute boolean locked; + + Promise<undefined> cancel(optional any reason); + ReadableStreamReader getReader(optional ReadableStreamGetReaderOptions options = {}); + ReadableStream pipeThrough(ReadableWritablePair transform, optional StreamPipeOptions options = {}); + Promise<undefined> pipeTo(WritableStream destination, optional StreamPipeOptions options = {}); + sequence<ReadableStream> tee(); + + async iterable<any>(optional ReadableStreamIteratorOptions options = {}); +}; + +typedef (ReadableStreamDefaultReader or ReadableStreamBYOBReader) ReadableStreamReader; + +enum ReadableStreamReaderMode { "byob" }; + +dictionary ReadableStreamGetReaderOptions { + ReadableStreamReaderMode mode; +}; + +dictionary ReadableStreamIteratorOptions { + boolean preventCancel = false; +}; + +dictionary ReadableWritablePair { + required ReadableStream readable; + required WritableStream writable; +}; + +dictionary StreamPipeOptions { + boolean preventClose = false; + boolean preventAbort = false; + boolean preventCancel = false; + AbortSignal signal; +}; + +dictionary UnderlyingSource { + UnderlyingSourceStartCallback start; + UnderlyingSourcePullCallback pull; + UnderlyingSourceCancelCallback cancel; + ReadableStreamType type; + [EnforceRange] unsigned long long autoAllocateChunkSize; +}; + +typedef (ReadableStreamDefaultController or ReadableByteStreamController) ReadableStreamController; + +callback UnderlyingSourceStartCallback = any (ReadableStreamController controller); +callback UnderlyingSourcePullCallback = Promise<undefined> (ReadableStreamController controller); +callback UnderlyingSourceCancelCallback = Promise<undefined> (optional any reason); + +enum ReadableStreamType { "bytes" }; + +interface mixin ReadableStreamGenericReader { + readonly attribute Promise<undefined> closed; + + Promise<undefined> cancel(optional any reason); +}; + +[Exposed=*] +interface ReadableStreamDefaultReader { + constructor(ReadableStream stream); + + Promise<ReadableStreamReadResult> read(); + undefined releaseLock(); +}; +ReadableStreamDefaultReader includes ReadableStreamGenericReader; + +dictionary ReadableStreamReadResult { + any value; + boolean done; +}; + +[Exposed=*] +interface ReadableStreamBYOBReader { + constructor(ReadableStream stream); + + Promise<ReadableStreamReadResult> read(ArrayBufferView view); + undefined releaseLock(); +}; +ReadableStreamBYOBReader includes ReadableStreamGenericReader; + +[Exposed=*] +interface ReadableStreamDefaultController { + readonly attribute unrestricted double? desiredSize; + + undefined close(); + undefined enqueue(optional any chunk); + undefined error(optional any e); +}; + +[Exposed=*] +interface ReadableByteStreamController { + readonly attribute ReadableStreamBYOBRequest? byobRequest; + readonly attribute unrestricted double? desiredSize; + + undefined close(); + undefined enqueue(ArrayBufferView chunk); + undefined error(optional any e); +}; + +[Exposed=*] +interface ReadableStreamBYOBRequest { + readonly attribute ArrayBufferView? view; + + undefined respond([EnforceRange] unsigned long long bytesWritten); + undefined respondWithNewView(ArrayBufferView view); +}; + +[Exposed=*, Transferable] +interface WritableStream { + constructor(optional object underlyingSink, optional QueuingStrategy strategy = {}); + + readonly attribute boolean locked; + + Promise<undefined> abort(optional any reason); + Promise<undefined> close(); + WritableStreamDefaultWriter getWriter(); +}; + +dictionary UnderlyingSink { + UnderlyingSinkStartCallback start; + UnderlyingSinkWriteCallback write; + UnderlyingSinkCloseCallback close; + UnderlyingSinkAbortCallback abort; + any type; +}; + +callback UnderlyingSinkStartCallback = any (WritableStreamDefaultController controller); +callback UnderlyingSinkWriteCallback = Promise<undefined> (any chunk, WritableStreamDefaultController controller); +callback UnderlyingSinkCloseCallback = Promise<undefined> (); +callback UnderlyingSinkAbortCallback = Promise<undefined> (optional any reason); + +[Exposed=*] +interface WritableStreamDefaultWriter { + constructor(WritableStream stream); + + readonly attribute Promise<undefined> closed; + readonly attribute unrestricted double? desiredSize; + readonly attribute Promise<undefined> ready; + + Promise<undefined> abort(optional any reason); + Promise<undefined> close(); + undefined releaseLock(); + Promise<undefined> write(optional any chunk); +}; + +[Exposed=*] +interface WritableStreamDefaultController { + readonly attribute AbortSignal signal; + undefined error(optional any e); +}; + +[Exposed=*, Transferable] +interface TransformStream { + constructor(optional object transformer, + optional QueuingStrategy writableStrategy = {}, + optional QueuingStrategy readableStrategy = {}); + + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; +}; + +dictionary Transformer { + TransformerStartCallback start; + TransformerTransformCallback transform; + TransformerFlushCallback flush; + any readableType; + any writableType; +}; + +callback TransformerStartCallback = any (TransformStreamDefaultController controller); +callback TransformerFlushCallback = Promise<undefined> (TransformStreamDefaultController controller); +callback TransformerTransformCallback = Promise<undefined> (any chunk, TransformStreamDefaultController controller); + +[Exposed=*] +interface TransformStreamDefaultController { + readonly attribute unrestricted double? desiredSize; + + undefined enqueue(optional any chunk); + undefined error(optional any reason); + undefined terminate(); +}; + +dictionary QueuingStrategy { + unrestricted double highWaterMark; + QueuingStrategySize size; +}; + +callback QueuingStrategySize = unrestricted double (any chunk); + +dictionary QueuingStrategyInit { + required unrestricted double highWaterMark; +}; + +[Exposed=*] +interface ByteLengthQueuingStrategy { + constructor(QueuingStrategyInit init); + + readonly attribute unrestricted double highWaterMark; + readonly attribute Function size; +}; + +[Exposed=*] +interface CountQueuingStrategy { + constructor(QueuingStrategyInit init); + + readonly attribute unrestricted double highWaterMark; + readonly attribute Function size; +}; + +interface mixin GenericTransformStream { + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; +}; diff --git a/testing/web-platform/tests/interfaces/sub-apps.tentative.idl b/testing/web-platform/tests/interfaces/sub-apps.tentative.idl new file mode 100644 index 0000000000..39dcd97a50 --- /dev/null +++ b/testing/web-platform/tests/interfaces/sub-apps.tentative.idl @@ -0,0 +1,17 @@ +[ + Exposed=Window, + SecureContext, + ImplementedAs=SubApps +] partial interface Navigator { + [SameObject, RuntimeEnabled=DesktopPWAsSubApps] readonly attribute SubApps subApps; +}; + +[ + Exposed=Window, + SecureContext, + RuntimeEnabled=DesktopPWAsSubApps +] interface SubApps { + [CallWith=ScriptState, RaisesException] Promise<undefined> add(DOMString install_url); + [CallWith=ScriptState, RaisesException] Promise<FrozenArray<DOMString>> list(); + [CallWith=ScriptState, RaisesException] Promise<undefined> remove(DOMString app_id); +}; diff --git a/testing/web-platform/tests/interfaces/svg-animations.idl b/testing/web-platform/tests/interfaces/svg-animations.idl new file mode 100644 index 0000000000..b57e1b9eb5 --- /dev/null +++ b/testing/web-platform/tests/interfaces/svg-animations.idl @@ -0,0 +1,68 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: SVG Animations (https://svgwg.org/specs/animations/) + +[Exposed=Window] +interface TimeEvent : Event { + + readonly attribute WindowProxy? view; + readonly attribute long detail; + + undefined initTimeEvent(DOMString typeArg, Window? viewArg, long detailArg); +}; + +[Exposed=Window] +interface SVGAnimationElement : SVGElement { + + readonly attribute SVGElement? targetElement; + + attribute EventHandler onbegin; + attribute EventHandler onend; + attribute EventHandler onrepeat; + + float getStartTime(); + float getCurrentTime(); + float getSimpleDuration(); + + undefined beginElement(); + undefined beginElementAt(float offset); + undefined endElement(); + undefined endElementAt(float offset); +}; + +SVGAnimationElement includes SVGTests; + +[Exposed=Window] +interface SVGAnimateElement : SVGAnimationElement { +}; + +[Exposed=Window] +interface SVGSetElement : SVGAnimationElement { +}; + +[Exposed=Window] +interface SVGAnimateMotionElement : SVGAnimationElement { +}; + +[Exposed=Window] +interface SVGMPathElement : SVGElement { +}; + +SVGMPathElement includes SVGURIReference; + +[Exposed=Window] +interface SVGAnimateTransformElement : SVGAnimationElement { +}; + +[Exposed=Window] +interface SVGDiscardElement : SVGAnimationElement { +}; + +partial interface SVGSVGElement { + undefined pauseAnimations(); + undefined unpauseAnimations(); + boolean animationsPaused(); + float getCurrentTime(); + undefined setCurrentTime(float seconds); +}; diff --git a/testing/web-platform/tests/interfaces/testutils.idl b/testing/web-platform/tests/interfaces/testutils.idl new file mode 100644 index 0000000000..c5b7efd0c4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/testutils.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Test Utils Standard (https://testutils.spec.whatwg.org/) + +[Exposed=(Window,Worker)] +namespace TestUtils { + [NewObject] Promise<undefined> gc(); +}; diff --git a/testing/web-platform/tests/interfaces/text-detection-api.idl b/testing/web-platform/tests/interfaces/text-detection-api.idl new file mode 100644 index 0000000000..95b642749f --- /dev/null +++ b/testing/web-platform/tests/interfaces/text-detection-api.idl @@ -0,0 +1,18 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Accelerated Text Detection in Images (https://wicg.github.io/shape-detection-api/text.html) + +[ + Exposed=(Window,Worker), + SecureContext +] interface TextDetector { + constructor(); + Promise<sequence<DetectedText>> detect(ImageBitmapSource image); +}; + +dictionary DetectedText { + required DOMRectReadOnly boundingBox; + required DOMString rawValue; + required FrozenArray<Point2D> cornerPoints; +}; diff --git a/testing/web-platform/tests/interfaces/touch-events.idl b/testing/web-platform/tests/interfaces/touch-events.idl new file mode 100644 index 0000000000..9844f08538 --- /dev/null +++ b/testing/web-platform/tests/interfaces/touch-events.idl @@ -0,0 +1,79 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Touch Events - Level 2 (https://w3c.github.io/touch-events/) + +enum TouchType { + "direct", + "stylus" +}; + +dictionary TouchInit { + required long identifier; + required EventTarget target; + double clientX = 0; + double clientY = 0; + double screenX = 0; + double screenY = 0; + double pageX = 0; + double pageY = 0; + float radiusX = 0; + float radiusY = 0; + float rotationAngle = 0; + float force = 0; + double altitudeAngle = 0; + double azimuthAngle = 0; + TouchType touchType = "direct"; +}; + +[Exposed=Window] +interface Touch { + constructor(TouchInit touchInitDict); + readonly attribute long identifier; + readonly attribute EventTarget target; + readonly attribute double screenX; + readonly attribute double screenY; + readonly attribute double clientX; + readonly attribute double clientY; + readonly attribute double pageX; + readonly attribute double pageY; + readonly attribute float radiusX; + readonly attribute float radiusY; + readonly attribute float rotationAngle; + readonly attribute float force; + readonly attribute float altitudeAngle; + readonly attribute float azimuthAngle; + readonly attribute TouchType touchType; +}; + +[Exposed=Window] +interface TouchList { + readonly attribute unsigned long length; + getter Touch? item (unsigned long index); +}; + +dictionary TouchEventInit : EventModifierInit { + sequence<Touch> touches = []; + sequence<Touch> targetTouches = []; + sequence<Touch> changedTouches = []; +}; + +[Exposed=Window] +interface TouchEvent : UIEvent { + constructor(DOMString type, optional TouchEventInit eventInitDict = {}); + readonly attribute TouchList touches; + readonly attribute TouchList targetTouches; + readonly attribute TouchList changedTouches; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + getter boolean getModifierState (DOMString keyArg); +}; + +partial interface mixin GlobalEventHandlers { + attribute EventHandler ontouchstart; + attribute EventHandler ontouchend; + attribute EventHandler ontouchmove; + attribute EventHandler ontouchcancel; +}; diff --git a/testing/web-platform/tests/interfaces/trusted-types.idl b/testing/web-platform/tests/interfaces/trusted-types.idl new file mode 100644 index 0000000000..2356238129 --- /dev/null +++ b/testing/web-platform/tests/interfaces/trusted-types.idl @@ -0,0 +1,71 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Trusted Types (https://w3c.github.io/trusted-types/dist/spec/) + +[Exposed=(Window,Worker)] +interface TrustedHTML { + stringifier; + DOMString toJSON(); + static TrustedHTML fromLiteral(object templateStringsArray); +}; + +[Exposed=(Window,Worker)] +interface TrustedScript { + stringifier; + DOMString toJSON(); + static TrustedScript fromLiteral(object templateStringsArray); +}; + +[Exposed=(Window,Worker)] +interface TrustedScriptURL { + stringifier; + USVString toJSON(); + static TrustedScriptURL fromLiteral(object templateStringsArray); +}; + +[Exposed=(Window,Worker)] interface TrustedTypePolicyFactory { + TrustedTypePolicy createPolicy( + DOMString policyName, optional TrustedTypePolicyOptions policyOptions = {}); + boolean isHTML(any value); + boolean isScript(any value); + boolean isScriptURL(any value); + readonly attribute TrustedHTML emptyHTML; + readonly attribute TrustedScript emptyScript; + DOMString? getAttributeType( + DOMString tagName, + DOMString attribute, + optional DOMString elementNs = "", + optional DOMString attrNs = ""); + DOMString? getPropertyType( + DOMString tagName, + DOMString property, + optional DOMString elementNs = ""); + readonly attribute TrustedTypePolicy? defaultPolicy; +}; + +[Exposed=(Window,Worker)] +interface TrustedTypePolicy { + readonly attribute DOMString name; + TrustedHTML createHTML(DOMString input, any... arguments); + TrustedScript createScript(DOMString input, any... arguments); + TrustedScriptURL createScriptURL(DOMString input, any... arguments); +}; + +dictionary TrustedTypePolicyOptions { + CreateHTMLCallback? createHTML; + CreateScriptCallback? createScript; + CreateScriptURLCallback? createScriptURL; +}; +callback CreateHTMLCallback = DOMString (DOMString input, any... arguments); +callback CreateScriptCallback = DOMString (DOMString input, any... arguments); +callback CreateScriptURLCallback = USVString (DOMString input, any... arguments); + +typedef [StringContext=TrustedHTML] DOMString HTMLString; +typedef [StringContext=TrustedScript] DOMString ScriptString; +typedef [StringContext=TrustedScriptURL] USVString ScriptURLString; +typedef (TrustedHTML or TrustedScript or TrustedScriptURL) TrustedType; + +partial interface mixin WindowOrWorkerGlobalScope { + readonly attribute TrustedTypePolicyFactory trustedTypes; +}; diff --git a/testing/web-platform/tests/interfaces/ua-client-hints.idl b/testing/web-platform/tests/interfaces/ua-client-hints.idl new file mode 100644 index 0000000000..f5070a0e09 --- /dev/null +++ b/testing/web-platform/tests/interfaces/ua-client-hints.idl @@ -0,0 +1,44 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: User-Agent Client Hints (https://wicg.github.io/ua-client-hints/) + +dictionary NavigatorUABrandVersion { + DOMString brand; + DOMString version; +}; + +dictionary UADataValues { + sequence<NavigatorUABrandVersion> brands; + boolean mobile; + DOMString architecture; + DOMString bitness; + DOMString model; + DOMString platform; + DOMString platformVersion; + DOMString uaFullVersion; // deprecated in favor of fullVersionList + boolean wow64; + sequence<NavigatorUABrandVersion> fullVersionList; +}; + +dictionary UALowEntropyJSON { + sequence<NavigatorUABrandVersion> brands; + boolean mobile; + DOMString platform; +}; + +[Exposed=(Window,Worker)] +interface NavigatorUAData { + readonly attribute FrozenArray<NavigatorUABrandVersion> brands; + readonly attribute boolean mobile; + readonly attribute DOMString platform; + Promise<UADataValues> getHighEntropyValues(sequence<DOMString> hints); + UALowEntropyJSON toJSON(); +}; + +interface mixin NavigatorUA { + [SecureContext] readonly attribute NavigatorUAData userAgentData; +}; + +Navigator includes NavigatorUA; +WorkerNavigator includes NavigatorUA; diff --git a/testing/web-platform/tests/interfaces/uievents.idl b/testing/web-platform/tests/interfaces/uievents.idl new file mode 100644 index 0000000000..5fdc812e70 --- /dev/null +++ b/testing/web-platform/tests/interfaces/uievents.idl @@ -0,0 +1,248 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: UI Events (https://w3c.github.io/uievents/) + +[Exposed=Window] +interface UIEvent : Event { + constructor(DOMString type, optional UIEventInit eventInitDict = {}); + readonly attribute Window? view; + readonly attribute long detail; +}; + +dictionary UIEventInit : EventInit { + Window? view = null; + long detail = 0; +}; + +[Exposed=Window] +interface FocusEvent : UIEvent { + constructor(DOMString type, optional FocusEventInit eventInitDict = {}); + readonly attribute EventTarget? relatedTarget; +}; + +dictionary FocusEventInit : UIEventInit { + EventTarget? relatedTarget = null; +}; + +[Exposed=Window] +interface MouseEvent : UIEvent { + constructor(DOMString type, optional MouseEventInit eventInitDict = {}); + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + + readonly attribute short button; + readonly attribute unsigned short buttons; + + readonly attribute EventTarget? relatedTarget; + + boolean getModifierState(DOMString keyArg); +}; + +dictionary MouseEventInit : EventModifierInit { + long screenX = 0; + long screenY = 0; + long clientX = 0; + long clientY = 0; + + short button = 0; + unsigned short buttons = 0; + EventTarget? relatedTarget = null; +}; + +dictionary EventModifierInit : UIEventInit { + boolean ctrlKey = false; + boolean shiftKey = false; + boolean altKey = false; + boolean metaKey = false; + + boolean modifierAltGraph = false; + boolean modifierCapsLock = false; + boolean modifierFn = false; + boolean modifierFnLock = false; + boolean modifierHyper = false; + boolean modifierNumLock = false; + boolean modifierScrollLock = false; + boolean modifierSuper = false; + boolean modifierSymbol = false; + boolean modifierSymbolLock = false; +}; + +[Exposed=Window] +interface WheelEvent : MouseEvent { + constructor(DOMString type, optional WheelEventInit eventInitDict = {}); + // DeltaModeCode + const unsigned long DOM_DELTA_PIXEL = 0x00; + const unsigned long DOM_DELTA_LINE = 0x01; + const unsigned long DOM_DELTA_PAGE = 0x02; + + readonly attribute double deltaX; + readonly attribute double deltaY; + readonly attribute double deltaZ; + readonly attribute unsigned long deltaMode; +}; + +dictionary WheelEventInit : MouseEventInit { + double deltaX = 0.0; + double deltaY = 0.0; + double deltaZ = 0.0; + unsigned long deltaMode = 0; +}; + +[Exposed=Window] +interface InputEvent : UIEvent { + constructor(DOMString type, optional InputEventInit eventInitDict = {}); + readonly attribute DOMString? data; + readonly attribute boolean isComposing; + readonly attribute DOMString inputType; +}; + +dictionary InputEventInit : UIEventInit { + DOMString? data = null; + boolean isComposing = false; + DOMString inputType = ""; +}; + +[Exposed=Window] +interface KeyboardEvent : UIEvent { + constructor(DOMString type, optional KeyboardEventInit eventInitDict = {}); + // KeyLocationCode + const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00; + const unsigned long DOM_KEY_LOCATION_LEFT = 0x01; + const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02; + const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03; + + readonly attribute DOMString key; + readonly attribute DOMString code; + readonly attribute unsigned long location; + + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + + readonly attribute boolean repeat; + readonly attribute boolean isComposing; + + boolean getModifierState(DOMString keyArg); +}; + +dictionary KeyboardEventInit : EventModifierInit { + DOMString key = ""; + DOMString code = ""; + unsigned long location = 0; + boolean repeat = false; + boolean isComposing = false; +}; + +[Exposed=Window] +interface CompositionEvent : UIEvent { + constructor(DOMString type, optional CompositionEventInit eventInitDict = {}); + readonly attribute DOMString data; +}; + +dictionary CompositionEventInit : UIEventInit { + DOMString data = ""; +}; + +partial interface UIEvent { + // Deprecated in this specification + undefined initUIEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional long detailArg = 0); +}; + +partial interface MouseEvent { + // Deprecated in this specification + undefined initMouseEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional long detailArg = 0, + optional long screenXArg = 0, + optional long screenYArg = 0, + optional long clientXArg = 0, + optional long clientYArg = 0, + optional boolean ctrlKeyArg = false, + optional boolean altKeyArg = false, + optional boolean shiftKeyArg = false, + optional boolean metaKeyArg = false, + optional short buttonArg = 0, + optional EventTarget? relatedTargetArg = null); +}; + +partial interface KeyboardEvent { + // Originally introduced (and deprecated) in this specification + undefined initKeyboardEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Window? viewArg = null, + optional DOMString keyArg = "", + optional unsigned long locationArg = 0, + optional boolean ctrlKey = false, + optional boolean altKey = false, + optional boolean shiftKey = false, + optional boolean metaKey = false); +}; + +partial interface CompositionEvent { + // Originally introduced (and deprecated) in this specification + undefined initCompositionEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional WindowProxy? viewArg = null, + optional DOMString dataArg = ""); +}; + +partial interface UIEvent { + // The following support legacy user agents + readonly attribute unsigned long which; +}; + +partial dictionary UIEventInit { + unsigned long which = 0; +}; + +partial interface KeyboardEvent { + // The following support legacy user agents + readonly attribute unsigned long charCode; + readonly attribute unsigned long keyCode; +}; + +partial dictionary KeyboardEventInit { + // The following support legacy user agents + unsigned long charCode = 0; + unsigned long keyCode = 0; +}; + +[Exposed=Window] +interface MutationEvent : Event { + // attrChangeType + const unsigned short MODIFICATION = 1; + const unsigned short ADDITION = 2; + const unsigned short REMOVAL = 3; + + readonly attribute Node? relatedNode; + readonly attribute DOMString prevValue; + readonly attribute DOMString newValue; + readonly attribute DOMString attrName; + readonly attribute unsigned short attrChange; + + undefined initMutationEvent(DOMString typeArg, + optional boolean bubblesArg = false, + optional boolean cancelableArg = false, + optional Node? relatedNodeArg = null, + optional DOMString prevValueArg = "", + optional DOMString newValueArg = "", + optional DOMString attrNameArg = "", + optional unsigned short attrChangeArg = 0); +}; diff --git a/testing/web-platform/tests/interfaces/url.idl b/testing/web-platform/tests/interfaces/url.idl new file mode 100644 index 0000000000..360c9adcfa --- /dev/null +++ b/testing/web-platform/tests/interfaces/url.idl @@ -0,0 +1,42 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: URL Standard (https://url.spec.whatwg.org/) + +[Exposed=*, + LegacyWindowAlias=webkitURL] +interface URL { + constructor(USVString url, optional USVString base); + + stringifier attribute USVString href; + readonly attribute USVString origin; + attribute USVString protocol; + attribute USVString username; + attribute USVString password; + attribute USVString host; + attribute USVString hostname; + attribute USVString port; + attribute USVString pathname; + attribute USVString search; + [SameObject] readonly attribute URLSearchParams searchParams; + attribute USVString hash; + + USVString toJSON(); +}; + +[Exposed=*] +interface URLSearchParams { + constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = ""); + + undefined append(USVString name, USVString value); + undefined delete(USVString name); + USVString? get(USVString name); + sequence<USVString> getAll(USVString name); + boolean has(USVString name); + undefined set(USVString name, USVString value); + + undefined sort(); + + iterable<USVString, USVString>; + stringifier; +}; diff --git a/testing/web-platform/tests/interfaces/urlpattern.idl b/testing/web-platform/tests/interfaces/urlpattern.idl new file mode 100644 index 0000000000..e342eb50ab --- /dev/null +++ b/testing/web-platform/tests/interfaces/urlpattern.idl @@ -0,0 +1,59 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: URLPattern API (https://wicg.github.io/urlpattern/) + +typedef (USVString or URLPatternInit) URLPatternInput; + +[Exposed=(Window,Worker)] +interface URLPattern { + constructor(URLPatternInput input, USVString baseURL, optional URLPatternOptions options = {}); + constructor(optional URLPatternInput input = {}, optional URLPatternOptions options = {}); + + boolean test(optional URLPatternInput input = {}, optional USVString baseURL); + + URLPatternResult? exec(optional URLPatternInput input = {}, optional USVString baseURL); + + readonly attribute USVString protocol; + readonly attribute USVString username; + readonly attribute USVString password; + readonly attribute USVString hostname; + readonly attribute USVString port; + readonly attribute USVString pathname; + readonly attribute USVString search; + readonly attribute USVString hash; +}; + +dictionary URLPatternInit { + USVString protocol; + USVString username; + USVString password; + USVString hostname; + USVString port; + USVString pathname; + USVString search; + USVString hash; + USVString baseURL; +}; + +dictionary URLPatternOptions { + boolean ignoreCase = false; +}; + +dictionary URLPatternResult { + sequence<URLPatternInput> inputs; + + URLPatternComponentResult protocol; + URLPatternComponentResult username; + URLPatternComponentResult password; + URLPatternComponentResult hostname; + URLPatternComponentResult port; + URLPatternComponentResult pathname; + URLPatternComponentResult search; + URLPatternComponentResult hash; +}; + +dictionary URLPatternComponentResult { + USVString input; + record<USVString, (USVString or undefined)> groups; +}; diff --git a/testing/web-platform/tests/interfaces/user-timing.idl b/testing/web-platform/tests/interfaces/user-timing.idl new file mode 100644 index 0000000000..28ee8aac2b --- /dev/null +++ b/testing/web-platform/tests/interfaces/user-timing.idl @@ -0,0 +1,34 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: User Timing Level 3 (https://w3c.github.io/user-timing/) + +dictionary PerformanceMarkOptions { + any detail; + DOMHighResTimeStamp startTime; +}; + +dictionary PerformanceMeasureOptions { + any detail; + (DOMString or DOMHighResTimeStamp) start; + DOMHighResTimeStamp duration; + (DOMString or DOMHighResTimeStamp) end; +}; + +partial interface Performance { + PerformanceMark mark(DOMString markName, optional PerformanceMarkOptions markOptions = {}); + undefined clearMarks(optional DOMString markName); + PerformanceMeasure measure(DOMString measureName, optional (DOMString or PerformanceMeasureOptions) startOrMeasureOptions = {}, optional DOMString endMark); + undefined clearMeasures(optional DOMString measureName); +}; + +[Exposed=(Window,Worker)] +interface PerformanceMark : PerformanceEntry { + constructor(DOMString markName, optional PerformanceMarkOptions markOptions = {}); + readonly attribute any detail; +}; + +[Exposed=(Window,Worker)] +interface PerformanceMeasure : PerformanceEntry { + readonly attribute any detail; +}; diff --git a/testing/web-platform/tests/interfaces/vibration.idl b/testing/web-platform/tests/interfaces/vibration.idl new file mode 100644 index 0000000000..22ab1c47df --- /dev/null +++ b/testing/web-platform/tests/interfaces/vibration.idl @@ -0,0 +1,10 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Vibration API (Second Edition) (https://w3c.github.io/vibration/) + +typedef (unsigned long or sequence<unsigned long>) VibratePattern; + +partial interface Navigator { + boolean vibrate (VibratePattern pattern); +}; diff --git a/testing/web-platform/tests/interfaces/video-rvfc.idl b/testing/web-platform/tests/interfaces/video-rvfc.idl new file mode 100644 index 0000000000..adb4ef2301 --- /dev/null +++ b/testing/web-platform/tests/interfaces/video-rvfc.idl @@ -0,0 +1,27 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: HTMLVideoElement.requestVideoFrameCallback() (https://wicg.github.io/video-rvfc/) + +dictionary VideoFrameCallbackMetadata { + required DOMHighResTimeStamp presentationTime; + required DOMHighResTimeStamp expectedDisplayTime; + + required unsigned long width; + required unsigned long height; + required double mediaTime; + + required unsigned long presentedFrames; + double processingDuration; + + DOMHighResTimeStamp captureTime; + DOMHighResTimeStamp receiveTime; + unsigned long rtpTimestamp; +}; + +callback VideoFrameRequestCallback = undefined(DOMHighResTimeStamp now, VideoFrameCallbackMetadata metadata); + +partial interface HTMLVideoElement { + unsigned long requestVideoFrameCallback(VideoFrameRequestCallback callback); + undefined cancelVideoFrameCallback(unsigned long handle); +}; diff --git a/testing/web-platform/tests/interfaces/virtual-keyboard.idl b/testing/web-platform/tests/interfaces/virtual-keyboard.idl new file mode 100644 index 0000000000..74dafc5fb3 --- /dev/null +++ b/testing/web-platform/tests/interfaces/virtual-keyboard.idl @@ -0,0 +1,21 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: VirtualKeyboard API (https://w3c.github.io/virtual-keyboard/) + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute VirtualKeyboard virtualKeyboard; +}; + +[Exposed=Window, SecureContext] +interface VirtualKeyboard : EventTarget { + undefined show(); + undefined hide(); + readonly attribute DOMRect boundingRect; + attribute boolean overlaysContent; + attribute EventHandler ongeometrychange; +}; + +partial interface mixin ElementContentEditable { + [CEReactions] attribute DOMString virtualKeyboardPolicy; +}; diff --git a/testing/web-platform/tests/interfaces/virtual-keyboard.tentative.idl b/testing/web-platform/tests/interfaces/virtual-keyboard.tentative.idl new file mode 100644 index 0000000000..2991d242e6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/virtual-keyboard.tentative.idl @@ -0,0 +1,15 @@ +// Explainers: +// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/VirtualKeyboardPolicy/explainer.md +// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/VirtualKeyboardAPI/explainer.md + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute VirtualKeyboard virtualKeyboard; +}; + +[SecureContext, Exposed=Window] interface VirtualKeyboard : EventTarget { + undefined show(); + undefined hide(); + readonly attribute DOMRect boundingRect; + attribute boolean overlaysContent; + attribute EventHandler ongeometrychange; +}; diff --git a/testing/web-platform/tests/interfaces/wai-aria.idl b/testing/web-platform/tests/interfaces/wai-aria.idl new file mode 100644 index 0000000000..61c103cc8a --- /dev/null +++ b/testing/web-platform/tests/interfaces/wai-aria.idl @@ -0,0 +1,59 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Accessible Rich Internet Applications (WAI-ARIA) 1.3 (https://w3c.github.io/aria/) + +interface mixin ARIAMixin { + [CEReactions] attribute DOMString? role; + [CEReactions] attribute Element? ariaActiveDescendantElement; + [CEReactions] attribute DOMString? ariaAtomic; + [CEReactions] attribute DOMString? ariaAutoComplete; + [CEReactions] attribute DOMString? ariaBusy; + [CEReactions] attribute DOMString? ariaChecked; + [CEReactions] attribute DOMString? ariaColCount; + [CEReactions] attribute DOMString? ariaColIndex; + [CEReactions] attribute DOMString? ariaColIndexText; + [CEReactions] attribute DOMString? ariaColSpan; + [CEReactions] attribute FrozenArray<Element>? ariaControlsElements; + [CEReactions] attribute DOMString? ariaCurrent; + [CEReactions] attribute FrozenArray<Element>? ariaDescribedByElements; + [CEReactions] attribute DOMString? ariaDescription; + [CEReactions] attribute FrozenArray<Element>? ariaDetailsElements; + [CEReactions] attribute DOMString? ariaDisabled; + [CEReactions] attribute Element? ariaErrorMessageElement; + [CEReactions] attribute DOMString? ariaExpanded; + [CEReactions] attribute FrozenArray<Element>? ariaFlowToElements; + [CEReactions] attribute DOMString? ariaHasPopup; + [CEReactions] attribute DOMString? ariaHidden; + [CEReactions] attribute DOMString? ariaInvalid; + [CEReactions] attribute DOMString? ariaKeyShortcuts; + [CEReactions] attribute DOMString? ariaLabel; + [CEReactions] attribute FrozenArray<Element>? ariaLabelledByElements; + [CEReactions] attribute DOMString? ariaLevel; + [CEReactions] attribute DOMString? ariaLive; + [CEReactions] attribute DOMString? ariaModal; + [CEReactions] attribute DOMString? ariaMultiLine; + [CEReactions] attribute DOMString? ariaMultiSelectable; + [CEReactions] attribute DOMString? ariaOrientation; + [CEReactions] attribute FrozenArray<Element>? ariaOwnsElements; + [CEReactions] attribute DOMString? ariaPlaceholder; + [CEReactions] attribute DOMString? ariaPosInSet; + [CEReactions] attribute DOMString? ariaPressed; + [CEReactions] attribute DOMString? ariaReadOnly; + + [CEReactions] attribute DOMString? ariaRequired; + [CEReactions] attribute DOMString? ariaRoleDescription; + [CEReactions] attribute DOMString? ariaRowCount; + [CEReactions] attribute DOMString? ariaRowIndex; + [CEReactions] attribute DOMString? ariaRowIndexText; + [CEReactions] attribute DOMString? ariaRowSpan; + [CEReactions] attribute DOMString? ariaSelected; + [CEReactions] attribute DOMString? ariaSetSize; + [CEReactions] attribute DOMString? ariaSort; + [CEReactions] attribute DOMString? ariaValueMax; + [CEReactions] attribute DOMString? ariaValueMin; + [CEReactions] attribute DOMString? ariaValueNow; + [CEReactions] attribute DOMString? ariaValueText; +}; + +Element includes ARIAMixin; diff --git a/testing/web-platform/tests/interfaces/wasm-js-api.idl b/testing/web-platform/tests/interfaces/wasm-js-api.idl new file mode 100644 index 0000000000..141af90fd2 --- /dev/null +++ b/testing/web-platform/tests/interfaces/wasm-js-api.idl @@ -0,0 +1,110 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebAssembly JavaScript Interface (https://webassembly.github.io/spec/js-api/) + +dictionary WebAssemblyInstantiatedSource { + required Module module; + required Instance instance; +}; + +[Exposed=(Window,Worker,Worklet)] +namespace WebAssembly { + boolean validate(BufferSource bytes); + Promise<Module> compile(BufferSource bytes); + + Promise<WebAssemblyInstantiatedSource> instantiate( + BufferSource bytes, optional object importObject); + + Promise<Instance> instantiate( + Module moduleObject, optional object importObject); +}; + +enum ImportExportKind { + "function", + "table", + "memory", + "global" +}; + +dictionary ModuleExportDescriptor { + required USVString name; + required ImportExportKind kind; + // Note: Other fields such as signature may be added in the future. +}; + +dictionary ModuleImportDescriptor { + required USVString module; + required USVString name; + required ImportExportKind kind; +}; + +[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] +interface Module { + constructor(BufferSource bytes); + static sequence<ModuleExportDescriptor> exports(Module moduleObject); + static sequence<ModuleImportDescriptor> imports(Module moduleObject); + static sequence<ArrayBuffer> customSections(Module moduleObject, DOMString sectionName); +}; + +[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] +interface Instance { + constructor(Module module, optional object importObject); + readonly attribute object exports; +}; + +dictionary MemoryDescriptor { + required [EnforceRange] unsigned long initial; + [EnforceRange] unsigned long maximum; +}; + +[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] +interface Memory { + constructor(MemoryDescriptor descriptor); + unsigned long grow([EnforceRange] unsigned long delta); + readonly attribute ArrayBuffer buffer; +}; + +enum TableKind { + "externref", + "anyfunc", + // Note: More values may be added in future iterations, + // e.g., typed function references, typed GC references +}; + +dictionary TableDescriptor { + required TableKind element; + required [EnforceRange] unsigned long initial; + [EnforceRange] unsigned long maximum; +}; + +[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] +interface Table { + constructor(TableDescriptor descriptor, optional any value); + unsigned long grow([EnforceRange] unsigned long delta, optional any value); + any get([EnforceRange] unsigned long index); + undefined set([EnforceRange] unsigned long index, optional any value); + readonly attribute unsigned long length; +}; + +enum ValueType { + "i32", + "i64", + "f32", + "f64", + "v128", + "externref", + "anyfunc", +}; + +dictionary GlobalDescriptor { + required ValueType value; + boolean mutable = false; +}; + +[LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)] +interface Global { + constructor(GlobalDescriptor descriptor, optional any v); + any valueOf(); + attribute any value; +}; diff --git a/testing/web-platform/tests/interfaces/wasm-web-api.idl b/testing/web-platform/tests/interfaces/wasm-web-api.idl new file mode 100644 index 0000000000..088c8ee3a3 --- /dev/null +++ b/testing/web-platform/tests/interfaces/wasm-web-api.idl @@ -0,0 +1,11 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebAssembly Web API (https://webassembly.github.io/spec/web-api/) + +[Exposed=(Window,Worker)] +partial namespace WebAssembly { + Promise<Module> compileStreaming(Promise<Response> source); + Promise<WebAssemblyInstantiatedSource> instantiateStreaming( + Promise<Response> source, optional object importObject); +}; diff --git a/testing/web-platform/tests/interfaces/web-animations-2.idl b/testing/web-platform/tests/interfaces/web-animations-2.idl new file mode 100644 index 0000000000..61df2cd151 --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-animations-2.idl @@ -0,0 +1,101 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Animations Level 2 (https://drafts.csswg.org/web-animations-2/) + +[Exposed=Window] +partial interface AnimationTimeline { + readonly attribute CSSNumberish? duration; + Animation play (optional AnimationEffect? effect = null); +}; + +[Exposed=Window] +partial interface Animation { + attribute CSSNumberish? startTime; + attribute CSSNumberish? currentTime; +}; + +[Exposed=Window] +partial interface AnimationEffect { + // Timing hierarchy + readonly attribute GroupEffect? parent; + readonly attribute AnimationEffect? previousSibling; + readonly attribute AnimationEffect? nextSibling; + + undefined before (AnimationEffect... effects); + undefined after (AnimationEffect... effects); + undefined replace (AnimationEffect... effects); + undefined remove (); +}; + +partial dictionary EffectTiming { + double delay; + double endDelay; + double playbackRate = 1.0; + (unrestricted double or CSSNumericValue or DOMString) duration = "auto"; +}; + +partial dictionary OptionalEffectTiming { + double playbackRate; +}; + +partial dictionary ComputedEffectTiming { + CSSNumberish startTime; + CSSNumberish endTime; + CSSNumberish activeDuration; + CSSNumberish? localTime; +}; + +[Exposed=Window] +interface GroupEffect { + constructor(sequence<AnimationEffect>? children, + optional (unrestricted double or EffectTiming) timing = {}); + + readonly attribute AnimationNodeList children; + readonly attribute AnimationEffect? firstChild; + readonly attribute AnimationEffect? lastChild; + GroupEffect clone (); + + undefined prepend (AnimationEffect... effects); + undefined append (AnimationEffect... effects); +}; + +[Exposed=Window] +interface AnimationNodeList { + readonly attribute unsigned long length; + getter AnimationEffect? item (unsigned long index); +}; + +[Exposed=Window] +interface SequenceEffect : GroupEffect { + constructor(sequence<AnimationEffect>? children, + optional (unrestricted double or EffectTiming) timing = {}); + + SequenceEffect clone (); +}; + +partial interface KeyframeEffect { + attribute IterationCompositeOperation iterationComposite; +}; + +partial dictionary KeyframeEffectOptions { + IterationCompositeOperation iterationComposite = "replace"; +}; + +enum IterationCompositeOperation { "replace", "accumulate" }; + +callback EffectCallback = undefined (double? progress, + (Element or CSSPseudoElement) currentTarget, + Animation animation); + +[Exposed=Window] +interface AnimationPlaybackEvent : Event { + constructor(DOMString type, optional AnimationPlaybackEventInit + eventInitDict = {}); + readonly attribute CSSNumberish? currentTime; + readonly attribute CSSNumberish? timelineTime; +}; +dictionary AnimationPlaybackEventInit : EventInit { + CSSNumberish? currentTime = null; + CSSNumberish? timelineTime = null; +}; diff --git a/testing/web-platform/tests/interfaces/web-animations.idl b/testing/web-platform/tests/interfaces/web-animations.idl new file mode 100644 index 0000000000..ed612302a4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-animations.idl @@ -0,0 +1,150 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Animations (https://drafts.csswg.org/web-animations-1/) + +[Exposed=Window] +interface AnimationTimeline { + readonly attribute double? currentTime; +}; + +dictionary DocumentTimelineOptions { + DOMHighResTimeStamp originTime = 0; +}; + +[Exposed=Window] +interface DocumentTimeline : AnimationTimeline { + constructor(optional DocumentTimelineOptions options = {}); +}; + +[Exposed=Window] +interface Animation : EventTarget { + constructor(optional AnimationEffect? effect = null, + optional AnimationTimeline? timeline); + attribute DOMString id; + attribute AnimationEffect? effect; + attribute AnimationTimeline? timeline; + attribute double playbackRate; + readonly attribute AnimationPlayState playState; + readonly attribute AnimationReplaceState replaceState; + readonly attribute boolean pending; + readonly attribute Promise<Animation> ready; + readonly attribute Promise<Animation> finished; + attribute EventHandler onfinish; + attribute EventHandler oncancel; + attribute EventHandler onremove; + undefined cancel(); + undefined finish(); + undefined play(); + undefined pause(); + undefined updatePlaybackRate(double playbackRate); + undefined reverse(); + undefined persist(); + [CEReactions] + undefined commitStyles(); +}; + +enum AnimationPlayState { "idle", "running", "paused", "finished" }; + +enum AnimationReplaceState { "active", "removed", "persisted" }; + +[Exposed=Window] +interface AnimationEffect { + EffectTiming getTiming(); + ComputedEffectTiming getComputedTiming(); + undefined updateTiming(optional OptionalEffectTiming timing = {}); +}; + +dictionary EffectTiming { + FillMode fill = "auto"; + double iterationStart = 0.0; + unrestricted double iterations = 1.0; + PlaybackDirection direction = "normal"; + DOMString easing = "linear"; +}; + +dictionary OptionalEffectTiming { + double delay; + double endDelay; + FillMode fill; + double iterationStart; + unrestricted double iterations; + (unrestricted double or DOMString) duration; + PlaybackDirection direction; + DOMString easing; +}; + +enum FillMode { "none", "forwards", "backwards", "both", "auto" }; + +enum PlaybackDirection { "normal", "reverse", "alternate", "alternate-reverse" }; + +dictionary ComputedEffectTiming : EffectTiming { + double? progress; + unrestricted double? currentIteration; +}; + +[Exposed=Window] +interface KeyframeEffect : AnimationEffect { + constructor(Element? target, + object? keyframes, + optional (unrestricted double or KeyframeEffectOptions) options = {}); + constructor(KeyframeEffect source); + attribute Element? target; + attribute CSSOMString? pseudoElement; + attribute CompositeOperation composite; + sequence<object> getKeyframes(); + undefined setKeyframes(object? keyframes); +}; + +dictionary BaseComputedKeyframe { + double? offset = null; + double computedOffset; + DOMString easing = "linear"; + CompositeOperationOrAuto composite = "auto"; +}; + +dictionary BasePropertyIndexedKeyframe { + (double? or sequence<double?>) offset = []; + (DOMString or sequence<DOMString>) easing = []; + (CompositeOperationOrAuto or sequence<CompositeOperationOrAuto>) composite = []; +}; + +dictionary BaseKeyframe { + double? offset = null; + DOMString easing = "linear"; + CompositeOperationOrAuto composite = "auto"; +}; + +dictionary KeyframeEffectOptions : EffectTiming { + CompositeOperation composite = "replace"; + CSSOMString? pseudoElement = null; +}; + +enum CompositeOperation { "replace", "add", "accumulate" }; + +enum CompositeOperationOrAuto { "replace", "add", "accumulate", "auto" }; + +interface mixin Animatable { + Animation animate(object? keyframes, + optional (unrestricted double or KeyframeAnimationOptions) options = {}); + sequence<Animation> getAnimations(optional GetAnimationsOptions options = {}); +}; + +dictionary KeyframeAnimationOptions : KeyframeEffectOptions { + DOMString id = ""; + AnimationTimeline? timeline; +}; + +dictionary GetAnimationsOptions { + boolean subtree = false; +}; + +partial interface Document { + readonly attribute DocumentTimeline timeline; +}; + +partial interface mixin DocumentOrShadowRoot { + sequence<Animation> getAnimations(); +}; + +Element includes Animatable; diff --git a/testing/web-platform/tests/interfaces/web-app-launch.idl b/testing/web-platform/tests/interfaces/web-app-launch.idl new file mode 100644 index 0000000000..c3b6e39f3f --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-app-launch.idl @@ -0,0 +1,19 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web App Launch Handler API (https://wicg.github.io/web-app-launch/) + +[Exposed=Window] interface LaunchParams { + readonly attribute DOMString? targetURL; + readonly attribute FrozenArray<FileSystemHandle> files; +}; + +callback LaunchConsumer = any (LaunchParams params); + +partial interface Window { + readonly attribute LaunchQueue launchQueue; +}; + +[Exposed=Window] interface LaunchQueue { + undefined setConsumer(LaunchConsumer consumer); +}; diff --git a/testing/web-platform/tests/interfaces/web-bluetooth.idl b/testing/web-platform/tests/interfaces/web-bluetooth.idl new file mode 100644 index 0000000000..21c237040e --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-bluetooth.idl @@ -0,0 +1,251 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Bluetooth (https://webbluetoothcg.github.io/web-bluetooth/) + +dictionary BluetoothDataFilterInit { + BufferSource dataPrefix; + BufferSource mask; +}; + +dictionary BluetoothManufacturerDataFilterInit : BluetoothDataFilterInit { + required [EnforceRange] unsigned short companyIdentifier; +}; + +dictionary BluetoothServiceDataFilterInit : BluetoothDataFilterInit { + required BluetoothServiceUUID service; +}; + +dictionary BluetoothLEScanFilterInit { + sequence<BluetoothServiceUUID> services; + DOMString name; + DOMString namePrefix; + sequence<BluetoothManufacturerDataFilterInit> manufacturerData; + sequence<BluetoothServiceDataFilterInit> serviceData; +}; + +dictionary RequestDeviceOptions { + sequence<BluetoothLEScanFilterInit> filters; + sequence<BluetoothServiceUUID> optionalServices = []; + sequence<unsigned short> optionalManufacturerData = []; + boolean acceptAllDevices = false; +}; + +[Exposed=Window, SecureContext] +interface Bluetooth : EventTarget { + Promise<boolean> getAvailability(); + attribute EventHandler onavailabilitychanged; + [SameObject] + readonly attribute BluetoothDevice? referringDevice; + Promise<sequence<BluetoothDevice>> getDevices(); + Promise<BluetoothDevice> requestDevice(optional RequestDeviceOptions options = {}); +}; + +Bluetooth includes BluetoothDeviceEventHandlers; +Bluetooth includes CharacteristicEventHandlers; +Bluetooth includes ServiceEventHandlers; + +dictionary BluetoothPermissionDescriptor : PermissionDescriptor { + DOMString deviceId; + // These match RequestDeviceOptions. + sequence<BluetoothLEScanFilterInit> filters; + sequence<BluetoothServiceUUID> optionalServices = []; + sequence<unsigned short> optionalManufacturerData = []; + boolean acceptAllDevices = false; +}; + +dictionary AllowedBluetoothDevice { + required DOMString deviceId; + required boolean mayUseGATT; + // An allowedServices of "all" means all services are allowed. + required (DOMString or sequence<UUID>) allowedServices; + required sequence<unsigned short> allowedManufacturerData; +}; +dictionary BluetoothPermissionStorage { + required sequence<AllowedBluetoothDevice> allowedDevices; +}; + +[Exposed=Window] +interface BluetoothPermissionResult : PermissionStatus { + attribute FrozenArray<BluetoothDevice> devices; +}; + +[ + Exposed=Window, + SecureContext +] +interface ValueEvent : Event { + constructor(DOMString type, optional ValueEventInit initDict = {}); + readonly attribute any value; +}; + +dictionary ValueEventInit : EventInit { + any value = null; +}; + +[Exposed=Window, SecureContext] +interface BluetoothDevice : EventTarget { + readonly attribute DOMString id; + readonly attribute DOMString? name; + readonly attribute BluetoothRemoteGATTServer? gatt; + + Promise<undefined> forget(); + Promise<undefined> watchAdvertisements( + optional WatchAdvertisementsOptions options = {}); + readonly attribute boolean watchingAdvertisements; +}; +BluetoothDevice includes BluetoothDeviceEventHandlers; +BluetoothDevice includes CharacteristicEventHandlers; +BluetoothDevice includes ServiceEventHandlers; + +dictionary WatchAdvertisementsOptions { + AbortSignal signal; +}; + +[Exposed=Window, SecureContext] +interface BluetoothManufacturerDataMap { + readonly maplike<unsigned short, DataView>; +}; +[Exposed=Window, SecureContext] +interface BluetoothServiceDataMap { + readonly maplike<UUID, DataView>; +}; +[ + Exposed=Window, + SecureContext +] +interface BluetoothAdvertisingEvent : Event { + constructor(DOMString type, BluetoothAdvertisingEventInit init); + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute FrozenArray<UUID> uuids; + readonly attribute DOMString? name; + readonly attribute unsigned short? appearance; + readonly attribute byte? txPower; + readonly attribute byte? rssi; + [SameObject] + readonly attribute BluetoothManufacturerDataMap manufacturerData; + [SameObject] + readonly attribute BluetoothServiceDataMap serviceData; +}; +dictionary BluetoothAdvertisingEventInit : EventInit { + required BluetoothDevice device; + sequence<(DOMString or unsigned long)> uuids; + DOMString name; + unsigned short appearance; + byte txPower; + byte rssi; + BluetoothManufacturerDataMap manufacturerData; + BluetoothServiceDataMap serviceData; +}; + +[Exposed=Window, SecureContext] +interface BluetoothRemoteGATTServer { + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute boolean connected; + Promise<BluetoothRemoteGATTServer> connect(); + undefined disconnect(); + Promise<BluetoothRemoteGATTService> getPrimaryService(BluetoothServiceUUID service); + Promise<sequence<BluetoothRemoteGATTService>> + getPrimaryServices(optional BluetoothServiceUUID service); +}; + +[Exposed=Window, SecureContext] +interface BluetoothRemoteGATTService : EventTarget { + [SameObject] + readonly attribute BluetoothDevice device; + readonly attribute UUID uuid; + readonly attribute boolean isPrimary; + Promise<BluetoothRemoteGATTCharacteristic> + getCharacteristic(BluetoothCharacteristicUUID characteristic); + Promise<sequence<BluetoothRemoteGATTCharacteristic>> + getCharacteristics(optional BluetoothCharacteristicUUID characteristic); + Promise<BluetoothRemoteGATTService> + getIncludedService(BluetoothServiceUUID service); + Promise<sequence<BluetoothRemoteGATTService>> + getIncludedServices(optional BluetoothServiceUUID service); +}; +BluetoothRemoteGATTService includes CharacteristicEventHandlers; +BluetoothRemoteGATTService includes ServiceEventHandlers; + +[Exposed=Window, SecureContext] +interface BluetoothRemoteGATTCharacteristic : EventTarget { + [SameObject] + readonly attribute BluetoothRemoteGATTService service; + readonly attribute UUID uuid; + readonly attribute BluetoothCharacteristicProperties properties; + readonly attribute DataView? value; + Promise<BluetoothRemoteGATTDescriptor> getDescriptor(BluetoothDescriptorUUID descriptor); + Promise<sequence<BluetoothRemoteGATTDescriptor>> + getDescriptors(optional BluetoothDescriptorUUID descriptor); + Promise<DataView> readValue(); + Promise<undefined> writeValue(BufferSource value); + Promise<undefined> writeValueWithResponse(BufferSource value); + Promise<undefined> writeValueWithoutResponse(BufferSource value); + Promise<BluetoothRemoteGATTCharacteristic> startNotifications(); + Promise<BluetoothRemoteGATTCharacteristic> stopNotifications(); +}; +BluetoothRemoteGATTCharacteristic includes CharacteristicEventHandlers; + +[Exposed=Window, SecureContext] +interface BluetoothCharacteristicProperties { + readonly attribute boolean broadcast; + readonly attribute boolean read; + readonly attribute boolean writeWithoutResponse; + readonly attribute boolean write; + readonly attribute boolean notify; + readonly attribute boolean indicate; + readonly attribute boolean authenticatedSignedWrites; + readonly attribute boolean reliableWrite; + readonly attribute boolean writableAuxiliaries; +}; + +[Exposed=Window, SecureContext] +interface BluetoothRemoteGATTDescriptor { + [SameObject] + readonly attribute BluetoothRemoteGATTCharacteristic characteristic; + readonly attribute UUID uuid; + readonly attribute DataView? value; + Promise<DataView> readValue(); + Promise<undefined> writeValue(BufferSource value); +}; + +[SecureContext] +interface mixin CharacteristicEventHandlers { + attribute EventHandler oncharacteristicvaluechanged; +}; + +[SecureContext] +interface mixin BluetoothDeviceEventHandlers { + attribute EventHandler onadvertisementreceived; + attribute EventHandler ongattserverdisconnected; +}; + +[SecureContext] +interface mixin ServiceEventHandlers { + attribute EventHandler onserviceadded; + attribute EventHandler onservicechanged; + attribute EventHandler onserviceremoved; +}; + +typedef DOMString UUID; + +[Exposed=Window] +interface BluetoothUUID { + static UUID getService((DOMString or unsigned long) name); + static UUID getCharacteristic((DOMString or unsigned long) name); + static UUID getDescriptor((DOMString or unsigned long) name); + + static UUID canonicalUUID([EnforceRange] unsigned long alias); +}; + +typedef (DOMString or unsigned long) BluetoothServiceUUID; +typedef (DOMString or unsigned long) BluetoothCharacteristicUUID; +typedef (DOMString or unsigned long) BluetoothDescriptorUUID; + +[SecureContext] +partial interface Navigator { + [SameObject] + readonly attribute Bluetooth bluetooth; +}; diff --git a/testing/web-platform/tests/interfaces/web-locks.idl b/testing/web-platform/tests/interfaces/web-locks.idl new file mode 100644 index 0000000000..d79e404b98 --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-locks.idl @@ -0,0 +1,50 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Locks API (https://w3c.github.io/web-locks/) + +[SecureContext] +interface mixin NavigatorLocks { + readonly attribute LockManager locks; +}; +Navigator includes NavigatorLocks; +WorkerNavigator includes NavigatorLocks; + +[SecureContext, Exposed=(Window,Worker)] +interface LockManager { + Promise<any> request(DOMString name, + LockGrantedCallback callback); + Promise<any> request(DOMString name, + LockOptions options, + LockGrantedCallback callback); + + Promise<LockManagerSnapshot> query(); +}; + +callback LockGrantedCallback = Promise<any> (Lock? lock); + +enum LockMode { "shared", "exclusive" }; + +dictionary LockOptions { + LockMode mode = "exclusive"; + boolean ifAvailable = false; + boolean steal = false; + AbortSignal signal; +}; + +dictionary LockManagerSnapshot { + sequence<LockInfo> held; + sequence<LockInfo> pending; +}; + +dictionary LockInfo { + DOMString name; + LockMode mode; + DOMString clientId; +}; + +[SecureContext, Exposed=(Window,Worker)] +interface Lock { + readonly attribute DOMString name; + readonly attribute LockMode mode; +}; diff --git a/testing/web-platform/tests/interfaces/web-nfc.idl b/testing/web-platform/tests/interfaces/web-nfc.idl new file mode 100644 index 0000000000..ff042b044e --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-nfc.idl @@ -0,0 +1,81 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web NFC (https://w3c.github.io/web-nfc/) + +[SecureContext, Exposed=Window] +interface NDEFMessage { + constructor(NDEFMessageInit messageInit); + readonly attribute FrozenArray<NDEFRecord> records; +}; + +dictionary NDEFMessageInit { + required sequence<NDEFRecordInit> records; +}; + +[SecureContext, Exposed=Window] +interface NDEFRecord { + constructor(NDEFRecordInit recordInit); + + readonly attribute USVString recordType; + readonly attribute USVString? mediaType; + readonly attribute USVString? id; + readonly attribute DataView? data; + + readonly attribute USVString? encoding; + readonly attribute USVString? lang; + + sequence<NDEFRecord>? toRecords(); +}; + +dictionary NDEFRecordInit { + required USVString recordType; + USVString mediaType; + USVString id; + + USVString encoding; + USVString lang; + + any data; // DOMString or BufferSource or NDEFMessageInit +}; + +typedef (DOMString or BufferSource or NDEFMessageInit) NDEFMessageSource; + +[SecureContext, Exposed=Window] +interface NDEFReader : EventTarget { + constructor(); + + attribute EventHandler onreading; + attribute EventHandler onreadingerror; + + Promise<undefined> scan(optional NDEFScanOptions options={}); + Promise<undefined> write(NDEFMessageSource message, + optional NDEFWriteOptions options={}); + Promise<undefined> makeReadOnly(optional NDEFMakeReadOnlyOptions options={}); +}; + +[SecureContext, Exposed=Window] +interface NDEFReadingEvent : Event { + constructor(DOMString type, NDEFReadingEventInit readingEventInitDict); + + readonly attribute DOMString serialNumber; + [SameObject] readonly attribute NDEFMessage message; +}; + +dictionary NDEFReadingEventInit : EventInit { + DOMString? serialNumber = ""; + required NDEFMessageInit message; +}; + +dictionary NDEFWriteOptions { + boolean overwrite = true; + AbortSignal? signal; +}; + +dictionary NDEFMakeReadOnlyOptions { + AbortSignal? signal; +}; + +dictionary NDEFScanOptions { + AbortSignal signal; +}; diff --git a/testing/web-platform/tests/interfaces/web-otp.idl b/testing/web-platform/tests/interfaces/web-otp.idl new file mode 100644 index 0000000000..591979e8be --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-otp.idl @@ -0,0 +1,21 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebOTP API (https://wicg.github.io/web-otp/) + +[Exposed=Window, SecureContext] +interface OTPCredential : Credential { + readonly attribute DOMString code; +}; + +partial dictionary CredentialRequestOptions { + OTPCredentialRequestOptions otp; +}; + +dictionary OTPCredentialRequestOptions { + sequence<OTPCredentialTransportType> transport = []; +}; + +enum OTPCredentialTransportType { + "sms", +}; diff --git a/testing/web-platform/tests/interfaces/web-share.idl b/testing/web-platform/tests/interfaces/web-share.idl new file mode 100644 index 0000000000..12a2dbb8ac --- /dev/null +++ b/testing/web-platform/tests/interfaces/web-share.idl @@ -0,0 +1,16 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Share API (https://w3c.github.io/web-share/) + +partial interface Navigator { + [SecureContext] Promise<undefined> share(optional ShareData data = {}); + [SecureContext] boolean canShare(optional ShareData data = {}); +}; + +dictionary ShareData { + sequence<File> files; + USVString title; + USVString text; + USVString url; +}; diff --git a/testing/web-platform/tests/interfaces/webaudio.idl b/testing/web-platform/tests/interfaces/webaudio.idl new file mode 100644 index 0000000000..1569de204b --- /dev/null +++ b/testing/web-platform/tests/interfaces/webaudio.idl @@ -0,0 +1,674 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Audio API (https://webaudio.github.io/web-audio-api/) + +enum AudioContextState { + "suspended", + "running", + "closed" +}; + +callback DecodeErrorCallback = undefined (DOMException error); + +callback DecodeSuccessCallback = undefined (AudioBuffer decodedData); + +[Exposed=Window] +interface BaseAudioContext : EventTarget { + readonly attribute AudioDestinationNode destination; + readonly attribute float sampleRate; + readonly attribute double currentTime; + readonly attribute AudioListener listener; + readonly attribute AudioContextState state; + [SameObject, SecureContext] + readonly attribute AudioWorklet audioWorklet; + attribute EventHandler onstatechange; + + AnalyserNode createAnalyser (); + BiquadFilterNode createBiquadFilter (); + AudioBuffer createBuffer (unsigned long numberOfChannels, + unsigned long length, + float sampleRate); + AudioBufferSourceNode createBufferSource (); + ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6); + ChannelSplitterNode createChannelSplitter ( + optional unsigned long numberOfOutputs = 6); + ConstantSourceNode createConstantSource (); + ConvolverNode createConvolver (); + DelayNode createDelay (optional double maxDelayTime = 1.0); + DynamicsCompressorNode createDynamicsCompressor (); + GainNode createGain (); + IIRFilterNode createIIRFilter (sequence<double> feedforward, + sequence<double> feedback); + OscillatorNode createOscillator (); + PannerNode createPanner (); + PeriodicWave createPeriodicWave (sequence<float> real, + sequence<float> imag, + optional PeriodicWaveConstraints constraints = {}); + ScriptProcessorNode createScriptProcessor( + optional unsigned long bufferSize = 0, + optional unsigned long numberOfInputChannels = 2, + optional unsigned long numberOfOutputChannels = 2); + StereoPannerNode createStereoPanner (); + WaveShaperNode createWaveShaper (); + + Promise<AudioBuffer> decodeAudioData ( + ArrayBuffer audioData, + optional DecodeSuccessCallback? successCallback, + optional DecodeErrorCallback? errorCallback); +}; + +enum AudioContextLatencyCategory { + "balanced", + "interactive", + "playback" +}; + +enum AudioSinkType { + "none" +}; + +[Exposed=Window] +interface AudioContext : BaseAudioContext { + constructor (optional AudioContextOptions contextOptions = {}); + readonly attribute double baseLatency; + readonly attribute double outputLatency; + [SecureContext] readonly attribute (DOMString or AudioSinkInfo) sinkId; + [SecureContext] readonly attribute AudioRenderCapacity renderCapacity; + attribute EventHandler onsinkchange; + AudioTimestamp getOutputTimestamp (); + Promise<undefined> resume (); + Promise<undefined> suspend (); + Promise<undefined> close (); + [SecureContext] Promise<undefined> setSinkId ((DOMString or AudioSinkOptions) sinkId); + MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement); + MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream); + MediaStreamTrackAudioSourceNode createMediaStreamTrackSource ( + MediaStreamTrack mediaStreamTrack); + MediaStreamAudioDestinationNode createMediaStreamDestination (); +}; + +dictionary AudioContextOptions { + (AudioContextLatencyCategory or double) latencyHint = "interactive"; + float sampleRate; + (DOMString or AudioSinkOptions) sinkId; +}; + +dictionary AudioSinkOptions { + required AudioSinkType type; +}; + +[Exposed=Window] +interface AudioSinkInfo { + readonly attribute AudioSinkType type; +}; + +dictionary AudioTimestamp { + double contextTime; + DOMHighResTimeStamp performanceTime; +}; + +[Exposed=Window] +interface AudioRenderCapacity : EventTarget { + undefined start(optional AudioRenderCapacityOptions options = {}); + undefined stop(); + attribute EventHandler onupdate; +}; + +dictionary AudioRenderCapacityOptions { + double updateInterval = 1; +}; + +[Exposed=Window] +interface AudioRenderCapacityEvent : Event { + constructor (DOMString type, optional AudioRenderCapacityEventInit eventInitDict = {}); + readonly attribute double timestamp; + readonly attribute double averageLoad; + readonly attribute double peakLoad; + readonly attribute double underrunRatio; +}; + +dictionary AudioRenderCapacityEventInit : EventInit { + double timestamp = 0; + double averageLoad = 0; + double peakLoad = 0; + double underrunRatio = 0; +}; + +[Exposed=Window] +interface OfflineAudioContext : BaseAudioContext { + constructor(OfflineAudioContextOptions contextOptions); + constructor(unsigned long numberOfChannels, unsigned long length, float sampleRate); + Promise<AudioBuffer> startRendering(); + Promise<undefined> resume(); + Promise<undefined> suspend(double suspendTime); + readonly attribute unsigned long length; + attribute EventHandler oncomplete; +}; + +dictionary OfflineAudioContextOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; +}; + +[Exposed=Window] +interface OfflineAudioCompletionEvent : Event { + constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict); + readonly attribute AudioBuffer renderedBuffer; +}; + +dictionary OfflineAudioCompletionEventInit : EventInit { + required AudioBuffer renderedBuffer; +}; + +[Exposed=Window] +interface AudioBuffer { + constructor (AudioBufferOptions options); + readonly attribute float sampleRate; + readonly attribute unsigned long length; + readonly attribute double duration; + readonly attribute unsigned long numberOfChannels; + Float32Array getChannelData (unsigned long channel); + undefined copyFromChannel (Float32Array destination, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); + undefined copyToChannel (Float32Array source, + unsigned long channelNumber, + optional unsigned long bufferOffset = 0); +}; + +dictionary AudioBufferOptions { + unsigned long numberOfChannels = 1; + required unsigned long length; + required float sampleRate; +}; + +[Exposed=Window] +interface AudioNode : EventTarget { + AudioNode connect (AudioNode destinationNode, + optional unsigned long output = 0, + optional unsigned long input = 0); + undefined connect (AudioParam destinationParam, optional unsigned long output = 0); + undefined disconnect (); + undefined disconnect (unsigned long output); + undefined disconnect (AudioNode destinationNode); + undefined disconnect (AudioNode destinationNode, unsigned long output); + undefined disconnect (AudioNode destinationNode, + unsigned long output, + unsigned long input); + undefined disconnect (AudioParam destinationParam); + undefined disconnect (AudioParam destinationParam, unsigned long output); + readonly attribute BaseAudioContext context; + readonly attribute unsigned long numberOfInputs; + readonly attribute unsigned long numberOfOutputs; + attribute unsigned long channelCount; + attribute ChannelCountMode channelCountMode; + attribute ChannelInterpretation channelInterpretation; +}; + +enum ChannelCountMode { + "max", + "clamped-max", + "explicit" +}; + +enum ChannelInterpretation { + "speakers", + "discrete" +}; + +dictionary AudioNodeOptions { + unsigned long channelCount; + ChannelCountMode channelCountMode; + ChannelInterpretation channelInterpretation; +}; + +enum AutomationRate { + "a-rate", + "k-rate" +}; + +[Exposed=Window] +interface AudioParam { + attribute float value; + attribute AutomationRate automationRate; + readonly attribute float defaultValue; + readonly attribute float minValue; + readonly attribute float maxValue; + AudioParam setValueAtTime (float value, double startTime); + AudioParam linearRampToValueAtTime (float value, double endTime); + AudioParam exponentialRampToValueAtTime (float value, double endTime); + AudioParam setTargetAtTime (float target, double startTime, float timeConstant); + AudioParam setValueCurveAtTime (sequence<float> values, + double startTime, + double duration); + AudioParam cancelScheduledValues (double cancelTime); + AudioParam cancelAndHoldAtTime (double cancelTime); +}; + +[Exposed=Window] +interface AudioScheduledSourceNode : AudioNode { + attribute EventHandler onended; + undefined start(optional double when = 0); + undefined stop(optional double when = 0); +}; + +[Exposed=Window] +interface AnalyserNode : AudioNode { + constructor (BaseAudioContext context, optional AnalyserOptions options = {}); + undefined getFloatFrequencyData (Float32Array array); + undefined getByteFrequencyData (Uint8Array array); + undefined getFloatTimeDomainData (Float32Array array); + undefined getByteTimeDomainData (Uint8Array array); + attribute unsigned long fftSize; + readonly attribute unsigned long frequencyBinCount; + attribute double minDecibels; + attribute double maxDecibels; + attribute double smoothingTimeConstant; +}; + +dictionary AnalyserOptions : AudioNodeOptions { + unsigned long fftSize = 2048; + double maxDecibels = -30; + double minDecibels = -100; + double smoothingTimeConstant = 0.8; +}; + +[Exposed=Window] +interface AudioBufferSourceNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, + optional AudioBufferSourceOptions options = {}); + attribute AudioBuffer? buffer; + readonly attribute AudioParam playbackRate; + readonly attribute AudioParam detune; + attribute boolean loop; + attribute double loopStart; + attribute double loopEnd; + undefined start (optional double when = 0, + optional double offset, + optional double duration); +}; + +dictionary AudioBufferSourceOptions { + AudioBuffer? buffer; + float detune = 0; + boolean loop = false; + double loopEnd = 0; + double loopStart = 0; + float playbackRate = 1; +}; + +[Exposed=Window] +interface AudioDestinationNode : AudioNode { + readonly attribute unsigned long maxChannelCount; +}; + +[Exposed=Window] +interface AudioListener { + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam forwardX; + readonly attribute AudioParam forwardY; + readonly attribute AudioParam forwardZ; + readonly attribute AudioParam upX; + readonly attribute AudioParam upY; + readonly attribute AudioParam upZ; + undefined setPosition (float x, float y, float z); + undefined setOrientation (float x, float y, float z, float xUp, float yUp, float zUp); +}; + +[Exposed=Window] +interface AudioProcessingEvent : Event { + constructor (DOMString type, AudioProcessingEventInit eventInitDict); + readonly attribute double playbackTime; + readonly attribute AudioBuffer inputBuffer; + readonly attribute AudioBuffer outputBuffer; +}; + +dictionary AudioProcessingEventInit : EventInit { + required double playbackTime; + required AudioBuffer inputBuffer; + required AudioBuffer outputBuffer; +}; + +enum BiquadFilterType { + "lowpass", + "highpass", + "bandpass", + "lowshelf", + "highshelf", + "peaking", + "notch", + "allpass" +}; + +[Exposed=Window] +interface BiquadFilterNode : AudioNode { + constructor (BaseAudioContext context, optional BiquadFilterOptions options = {}); + attribute BiquadFilterType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + readonly attribute AudioParam Q; + readonly attribute AudioParam gain; + undefined getFrequencyResponse (Float32Array frequencyHz, + Float32Array magResponse, + Float32Array phaseResponse); +}; + +dictionary BiquadFilterOptions : AudioNodeOptions { + BiquadFilterType type = "lowpass"; + float Q = 1; + float detune = 0; + float frequency = 350; + float gain = 0; +}; + +[Exposed=Window] +interface ChannelMergerNode : AudioNode { + constructor (BaseAudioContext context, optional ChannelMergerOptions options = {}); +}; + +dictionary ChannelMergerOptions : AudioNodeOptions { + unsigned long numberOfInputs = 6; +}; + +[Exposed=Window] +interface ChannelSplitterNode : AudioNode { + constructor (BaseAudioContext context, optional ChannelSplitterOptions options = {}); +}; + +dictionary ChannelSplitterOptions : AudioNodeOptions { + unsigned long numberOfOutputs = 6; +}; + +[Exposed=Window] +interface ConstantSourceNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, optional ConstantSourceOptions options = {}); + readonly attribute AudioParam offset; +}; + +dictionary ConstantSourceOptions { + float offset = 1; +}; + +[Exposed=Window] +interface ConvolverNode : AudioNode { + constructor (BaseAudioContext context, optional ConvolverOptions options = {}); + attribute AudioBuffer? buffer; + attribute boolean normalize; +}; + +dictionary ConvolverOptions : AudioNodeOptions { + AudioBuffer? buffer; + boolean disableNormalization = false; +}; + +[Exposed=Window] +interface DelayNode : AudioNode { + constructor (BaseAudioContext context, optional DelayOptions options = {}); + readonly attribute AudioParam delayTime; +}; + +dictionary DelayOptions : AudioNodeOptions { + double maxDelayTime = 1; + double delayTime = 0; +}; + +[Exposed=Window] +interface DynamicsCompressorNode : AudioNode { + constructor (BaseAudioContext context, + optional DynamicsCompressorOptions options = {}); + readonly attribute AudioParam threshold; + readonly attribute AudioParam knee; + readonly attribute AudioParam ratio; + readonly attribute float reduction; + readonly attribute AudioParam attack; + readonly attribute AudioParam release; +}; + +dictionary DynamicsCompressorOptions : AudioNodeOptions { + float attack = 0.003; + float knee = 30; + float ratio = 12; + float release = 0.25; + float threshold = -24; +}; + +[Exposed=Window] +interface GainNode : AudioNode { + constructor (BaseAudioContext context, optional GainOptions options = {}); + readonly attribute AudioParam gain; +}; + +dictionary GainOptions : AudioNodeOptions { + float gain = 1.0; +}; + +[Exposed=Window] +interface IIRFilterNode : AudioNode { + constructor (BaseAudioContext context, IIRFilterOptions options); + undefined getFrequencyResponse (Float32Array frequencyHz, + Float32Array magResponse, + Float32Array phaseResponse); +}; + +dictionary IIRFilterOptions : AudioNodeOptions { + required sequence<double> feedforward; + required sequence<double> feedback; +}; + +[Exposed=Window] +interface MediaElementAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaElementAudioSourceOptions options); + [SameObject] readonly attribute HTMLMediaElement mediaElement; +}; + +dictionary MediaElementAudioSourceOptions { + required HTMLMediaElement mediaElement; +}; + +[Exposed=Window] +interface MediaStreamAudioDestinationNode : AudioNode { + constructor (AudioContext context, optional AudioNodeOptions options = {}); + readonly attribute MediaStream stream; +}; + +[Exposed=Window] +interface MediaStreamAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaStreamAudioSourceOptions options); + [SameObject] readonly attribute MediaStream mediaStream; +}; + +dictionary MediaStreamAudioSourceOptions { + required MediaStream mediaStream; +}; + +[Exposed=Window] +interface MediaStreamTrackAudioSourceNode : AudioNode { + constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options); +}; + +dictionary MediaStreamTrackAudioSourceOptions { + required MediaStreamTrack mediaStreamTrack; +}; + +enum OscillatorType { + "sine", + "square", + "sawtooth", + "triangle", + "custom" +}; + +[Exposed=Window] +interface OscillatorNode : AudioScheduledSourceNode { + constructor (BaseAudioContext context, optional OscillatorOptions options = {}); + attribute OscillatorType type; + readonly attribute AudioParam frequency; + readonly attribute AudioParam detune; + undefined setPeriodicWave (PeriodicWave periodicWave); +}; + +dictionary OscillatorOptions : AudioNodeOptions { + OscillatorType type = "sine"; + float frequency = 440; + float detune = 0; + PeriodicWave periodicWave; +}; + +enum PanningModelType { + "equalpower", + "HRTF" +}; + +enum DistanceModelType { + "linear", + "inverse", + "exponential" +}; + +[Exposed=Window] +interface PannerNode : AudioNode { + constructor (BaseAudioContext context, optional PannerOptions options = {}); + attribute PanningModelType panningModel; + readonly attribute AudioParam positionX; + readonly attribute AudioParam positionY; + readonly attribute AudioParam positionZ; + readonly attribute AudioParam orientationX; + readonly attribute AudioParam orientationY; + readonly attribute AudioParam orientationZ; + attribute DistanceModelType distanceModel; + attribute double refDistance; + attribute double maxDistance; + attribute double rolloffFactor; + attribute double coneInnerAngle; + attribute double coneOuterAngle; + attribute double coneOuterGain; + undefined setPosition (float x, float y, float z); + undefined setOrientation (float x, float y, float z); +}; + +dictionary PannerOptions : AudioNodeOptions { + PanningModelType panningModel = "equalpower"; + DistanceModelType distanceModel = "inverse"; + float positionX = 0; + float positionY = 0; + float positionZ = 0; + float orientationX = 1; + float orientationY = 0; + float orientationZ = 0; + double refDistance = 1; + double maxDistance = 10000; + double rolloffFactor = 1; + double coneInnerAngle = 360; + double coneOuterAngle = 360; + double coneOuterGain = 0; +}; + +[Exposed=Window] +interface PeriodicWave { + constructor (BaseAudioContext context, optional PeriodicWaveOptions options = {}); +}; + +dictionary PeriodicWaveConstraints { + boolean disableNormalization = false; +}; + +dictionary PeriodicWaveOptions : PeriodicWaveConstraints { + sequence<float> real; + sequence<float> imag; +}; + +[Exposed=Window] +interface ScriptProcessorNode : AudioNode { + attribute EventHandler onaudioprocess; + readonly attribute long bufferSize; +}; + +[Exposed=Window] +interface StereoPannerNode : AudioNode { + constructor (BaseAudioContext context, optional StereoPannerOptions options = {}); + readonly attribute AudioParam pan; +}; + +dictionary StereoPannerOptions : AudioNodeOptions { + float pan = 0; +}; + +enum OverSampleType { + "none", + "2x", + "4x" +}; + +[Exposed=Window] +interface WaveShaperNode : AudioNode { + constructor (BaseAudioContext context, optional WaveShaperOptions options = {}); + attribute Float32Array? curve; + attribute OverSampleType oversample; +}; + +dictionary WaveShaperOptions : AudioNodeOptions { + sequence<float> curve; + OverSampleType oversample = "none"; +}; + +[Exposed=Window, SecureContext] +interface AudioWorklet : Worklet { + readonly attribute MessagePort port; +}; + +callback AudioWorkletProcessorConstructor = AudioWorkletProcessor (object options); + +[Global=(Worklet, AudioWorklet), Exposed=AudioWorklet] +interface AudioWorkletGlobalScope : WorkletGlobalScope { + undefined registerProcessor (DOMString name, + AudioWorkletProcessorConstructor processorCtor); + readonly attribute unsigned long long currentFrame; + readonly attribute double currentTime; + readonly attribute float sampleRate; + readonly attribute MessagePort port; +}; + +[Exposed=Window] +interface AudioParamMap { + readonly maplike<DOMString, AudioParam>; +}; + +[Exposed=Window, SecureContext] +interface AudioWorkletNode : AudioNode { + constructor (BaseAudioContext context, DOMString name, + optional AudioWorkletNodeOptions options = {}); + readonly attribute AudioParamMap parameters; + readonly attribute MessagePort port; + attribute EventHandler onprocessorerror; +}; + +dictionary AudioWorkletNodeOptions : AudioNodeOptions { + unsigned long numberOfInputs = 1; + unsigned long numberOfOutputs = 1; + sequence<unsigned long> outputChannelCount; + record<DOMString, double> parameterData; + object processorOptions; +}; + +[Exposed=AudioWorklet] +interface AudioWorkletProcessor { + constructor (); + readonly attribute MessagePort port; +}; + +callback AudioWorkletProcessCallback = + boolean (FrozenArray<FrozenArray<Float32Array>> inputs, + FrozenArray<FrozenArray<Float32Array>> outputs, + object parameters); + +dictionary AudioParamDescriptor { + required DOMString name; + float defaultValue = 0; + float minValue = -3.4028235e38; + float maxValue = 3.4028235e38; + AutomationRate automationRate = "a-rate"; +}; diff --git a/testing/web-platform/tests/interfaces/webauthn.idl b/testing/web-platform/tests/interfaces/webauthn.idl new file mode 100644 index 0000000000..ef27322312 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webauthn.idl @@ -0,0 +1,349 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Authentication: An API for accessing Public Key Credentials - Level (https://w3c.github.io/webauthn/) + +[SecureContext, Exposed=Window] +interface PublicKeyCredential : Credential { + [SameObject] readonly attribute ArrayBuffer rawId; + [SameObject] readonly attribute AuthenticatorResponse response; + [SameObject] readonly attribute DOMString? authenticatorAttachment; + AuthenticationExtensionsClientOutputs getClientExtensionResults(); + static Promise<boolean> isConditionalMediationAvailable(); + PublicKeyCredentialJSON toJSON(); +}; + +typedef DOMString Base64URLString; +typedef (RegistrationResponseJSON or AuthenticationResponseJSON) PublicKeyCredentialJSON; + +dictionary RegistrationResponseJSON { + Base64URLString id; + Base64URLString rawId; + AuthenticatorAttestationResponseJSON response; + DOMString? authenticatorAttachment; + AuthenticationExtensionsClientOutputsJSON clientExtensionResults; + DOMString type; +}; + +dictionary AuthenticatorAttestationResponseJSON { + Base64URLString clientDataJSON; + Base64URLString attestationObject; + sequence<DOMString> transports; +}; + +dictionary AuthenticationResponseJSON { + Base64URLString id; + Base64URLString rawId; + AuthenticatorAssertionResponseJSON response; + DOMString? authenticatorAttachment; + AuthenticationExtensionsClientOutputsJSON clientExtensionResults; + DOMString type; +}; + +dictionary AuthenticatorAssertionResponseJSON { + Base64URLString clientDataJSON; + Base64URLString authenticatorData; + Base64URLString signature; + Base64URLString? userHandle; +}; + +dictionary AuthenticationExtensionsClientOutputsJSON { +}; + +partial dictionary CredentialCreationOptions { + PublicKeyCredentialCreationOptions publicKey; +}; + +partial dictionary CredentialRequestOptions { + PublicKeyCredentialRequestOptions publicKey; +}; + +partial interface PublicKeyCredential { + static Promise<boolean> isUserVerifyingPlatformAuthenticatorAvailable(); +}; + +partial interface PublicKeyCredential { + static PublicKeyCredentialCreationOptions parseCreationOptionsFromJSON(PublicKeyCredentialCreationOptionsJSON options); +}; + +dictionary PublicKeyCredentialCreationOptionsJSON { + required PublicKeyCredentialRpEntity rp; + required PublicKeyCredentialUserEntityJSON user; + required Base64URLString challenge; + required sequence<PublicKeyCredentialParameters> pubKeyCredParams; + unsigned long timeout; + sequence<PublicKeyCredentialDescriptorJSON> excludeCredentials = []; + AuthenticatorSelectionCriteria authenticatorSelection; + DOMString attestation = "none"; + AuthenticationExtensionsClientInputsJSON extensions; +}; + +dictionary PublicKeyCredentialUserEntityJSON { + required Base64URLString id; + required DOMString name; + required DOMString displayName; +}; + +dictionary PublicKeyCredentialDescriptorJSON { + required Base64URLString id; + required DOMString type; + sequence<DOMString> transports; +}; + +dictionary AuthenticationExtensionsClientInputsJSON { +}; + +partial interface PublicKeyCredential { + static PublicKeyCredentialRequestOptions parseRequestOptionsFromJSON(PublicKeyCredentialRequestOptionsJSON options); +}; + +dictionary PublicKeyCredentialRequestOptionsJSON { + required Base64URLString challenge; + unsigned long timeout; + DOMString rpId; + sequence<PublicKeyCredentialDescriptorJSON> allowCredentials = []; + DOMString userVerification = "preferred"; + AuthenticationExtensionsClientInputsJSON extensions; +}; + +[SecureContext, Exposed=Window] +interface AuthenticatorResponse { + [SameObject] readonly attribute ArrayBuffer clientDataJSON; +}; + +[SecureContext, Exposed=Window] +interface AuthenticatorAttestationResponse : AuthenticatorResponse { + [SameObject] readonly attribute ArrayBuffer attestationObject; + sequence<DOMString> getTransports(); + ArrayBuffer getAuthenticatorData(); + ArrayBuffer? getPublicKey(); + COSEAlgorithmIdentifier getPublicKeyAlgorithm(); +}; + +[SecureContext, Exposed=Window] +interface AuthenticatorAssertionResponse : AuthenticatorResponse { + [SameObject] readonly attribute ArrayBuffer authenticatorData; + [SameObject] readonly attribute ArrayBuffer signature; + [SameObject] readonly attribute ArrayBuffer? userHandle; + [SameObject] readonly attribute ArrayBuffer? attestationObject; +}; + +dictionary PublicKeyCredentialParameters { + required DOMString type; + required COSEAlgorithmIdentifier alg; +}; + +dictionary PublicKeyCredentialCreationOptions { + required PublicKeyCredentialRpEntity rp; + required PublicKeyCredentialUserEntity user; + + required BufferSource challenge; + required sequence<PublicKeyCredentialParameters> pubKeyCredParams; + + unsigned long timeout; + sequence<PublicKeyCredentialDescriptor> excludeCredentials = []; + AuthenticatorSelectionCriteria authenticatorSelection; + DOMString attestation = "none"; + sequence<DOMString> attestationFormats = []; + AuthenticationExtensionsClientInputs extensions; +}; + +dictionary PublicKeyCredentialEntity { + required DOMString name; +}; + +dictionary PublicKeyCredentialRpEntity : PublicKeyCredentialEntity { + DOMString id; +}; + +dictionary PublicKeyCredentialUserEntity : PublicKeyCredentialEntity { + required BufferSource id; + required DOMString displayName; +}; + +dictionary AuthenticatorSelectionCriteria { + DOMString authenticatorAttachment; + DOMString residentKey; + boolean requireResidentKey = false; + DOMString userVerification = "preferred"; +}; + +enum AuthenticatorAttachment { + "platform", + "cross-platform" +}; + +enum ResidentKeyRequirement { + "discouraged", + "preferred", + "required" +}; + +enum AttestationConveyancePreference { + "none", + "indirect", + "direct", + "enterprise" +}; + +dictionary PublicKeyCredentialRequestOptions { + required BufferSource challenge; + unsigned long timeout; + USVString rpId; + sequence<PublicKeyCredentialDescriptor> allowCredentials = []; + DOMString userVerification = "preferred"; + DOMString attestation = "none"; + sequence<DOMString> attestationFormats = []; + AuthenticationExtensionsClientInputs extensions; +}; + +dictionary AuthenticationExtensionsClientInputs { +}; + +dictionary AuthenticationExtensionsClientOutputs { +}; + +dictionary CollectedClientData { + required DOMString type; + required DOMString challenge; + required DOMString origin; + boolean crossOrigin; +}; + +dictionary TokenBinding { + required DOMString status; + DOMString id; +}; + +enum TokenBindingStatus { "present", "supported" }; + +enum PublicKeyCredentialType { + "public-key" +}; + +dictionary PublicKeyCredentialDescriptor { + required DOMString type; + required BufferSource id; + sequence<DOMString> transports; +}; + +enum AuthenticatorTransport { + "usb", + "nfc", + "ble", + "hybrid", + "internal" +}; + +typedef long COSEAlgorithmIdentifier; + +enum UserVerificationRequirement { + "required", + "preferred", + "discouraged" +}; + +partial dictionary AuthenticationExtensionsClientInputs { + USVString appid; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + boolean appid; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + USVString appidExclude; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + boolean appidExclude; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + boolean credProps; +}; + +dictionary CredentialPropertiesOutput { + boolean rk; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + CredentialPropertiesOutput credProps; +}; + +dictionary AuthenticationExtensionsPRFValues { + required ArrayBuffer first; + ArrayBuffer second; +}; + +dictionary AuthenticationExtensionsPRFInputs { + AuthenticationExtensionsPRFValues eval; + record<USVString, AuthenticationExtensionsPRFValues> evalByCredential; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + AuthenticationExtensionsPRFInputs prf; +}; + +dictionary AuthenticationExtensionsPRFOutputs { + boolean enabled; + AuthenticationExtensionsPRFValues results; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + AuthenticationExtensionsPRFOutputs prf; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + AuthenticationExtensionsLargeBlobInputs largeBlob; +}; + +enum LargeBlobSupport { + "required", + "preferred", +}; + +dictionary AuthenticationExtensionsLargeBlobInputs { + DOMString support; + boolean read; + BufferSource write; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + AuthenticationExtensionsLargeBlobOutputs largeBlob; +}; + +dictionary AuthenticationExtensionsLargeBlobOutputs { + boolean supported; + ArrayBuffer blob; + boolean written; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + boolean uvm; +}; + +typedef sequence<unsigned long> UvmEntry; +typedef sequence<UvmEntry> UvmEntries; + +partial dictionary AuthenticationExtensionsClientOutputs { + UvmEntries uvm; +}; + +dictionary AuthenticationExtensionsDevicePublicKeyInputs { + DOMString attestation = "none"; + sequence<DOMString> attestationFormats = []; +}; + +partial dictionary AuthenticationExtensionsClientInputs { + AuthenticationExtensionsDevicePublicKeyInputs devicePubKey; +}; + +dictionary AuthenticationExtensionsDevicePublicKeyOutputs { + ArrayBuffer authenticatorOutput; + ArrayBuffer signature; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + AuthenticationExtensionsDevicePublicKeyOutputs devicePubKey; +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs-aac-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-aac-codec-registration.idl new file mode 100644 index 0000000000..124a0b0feb --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs-aac-codec-registration.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: AAC WebCodecs Registration (https://w3c.github.io/webcodecs/aac_codec_registration.html) + +partial dictionary AudioEncoderConfig { + AacEncoderConfig aac; +}; + +dictionary AacEncoderConfig { + AacBitstreamFormat format = "aac"; +}; + +enum AacBitstreamFormat { + "aac", + "adts", +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs-avc-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-avc-codec-registration.idl new file mode 100644 index 0000000000..d4074f647d --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs-avc-codec-registration.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: AVC (H.264) WebCodecs Registration (https://w3c.github.io/webcodecs/avc_codec_registration.html) + +partial dictionary VideoEncoderConfig { + AvcEncoderConfig avc; +}; + +dictionary AvcEncoderConfig { + AvcBitstreamFormat format = "avc"; +}; + +enum AvcBitstreamFormat { + "annexb", + "avc", +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs-flac-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-flac-codec-registration.idl new file mode 100644 index 0000000000..0f7e13a53d --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs-flac-codec-registration.idl @@ -0,0 +1,13 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: FLAC WebCodecs Registration (https://w3c.github.io/webcodecs/flac_codec_registration.html) + +partial dictionary AudioEncoderConfig { + FlacEncoderConfig flac; +}; + +dictionary FlacEncoderConfig { + [EnforceRange] unsigned long blockSize = 0; + [EnforceRange] unsigned long compressLevel = 5; +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs-hevc-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-hevc-codec-registration.idl new file mode 100644 index 0000000000..b767db89e6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs-hevc-codec-registration.idl @@ -0,0 +1,17 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: HEVC (H.265) WebCodecs Registration (https://w3c.github.io/webcodecs/hevc_codec_registration.html) + +partial dictionary VideoEncoderConfig { + HevcEncoderConfig hevc; +}; + +dictionary HevcEncoderConfig { + HevcBitstreamFormat format = "hevc"; +}; + +enum HevcBitstreamFormat { + "annexb", + "hevc", +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs-opus-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-opus-codec-registration.idl new file mode 100644 index 0000000000..0d198a6bcd --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs-opus-codec-registration.idl @@ -0,0 +1,22 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Opus WebCodecs Registration (https://w3c.github.io/webcodecs/opus_codec_registration.html) + +partial dictionary AudioEncoderConfig { + OpusEncoderConfig opus; +}; + +dictionary OpusEncoderConfig { + OpusBitstreamFormat format = "opus"; + [EnforceRange] unsigned long long frameDuration = 20000; + [EnforceRange] unsigned long complexity; + [EnforceRange] unsigned long packetlossperc = 0; + boolean useinbandfec = false; + boolean usedtx = false; +}; + +enum OpusBitstreamFormat { + "opus", + "ogg", +}; diff --git a/testing/web-platform/tests/interfaces/webcodecs.idl b/testing/web-platform/tests/interfaces/webcodecs.idl new file mode 100644 index 0000000000..68df48584b --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcodecs.idl @@ -0,0 +1,494 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebCodecs (https://w3c.github.io/webcodecs/) + +[Exposed=(Window,DedicatedWorker), SecureContext] +interface AudioDecoder { + constructor(AudioDecoderInit init); + + readonly attribute CodecState state; + readonly attribute unsigned long decodeQueueSize; + attribute EventHandler ondequeue; + + undefined configure(AudioDecoderConfig config); + undefined decode(EncodedAudioChunk chunk); + Promise<undefined> flush(); + undefined reset(); + undefined close(); + + static Promise<AudioDecoderSupport> isConfigSupported(AudioDecoderConfig config); +}; + +dictionary AudioDecoderInit { + required AudioDataOutputCallback output; + required WebCodecsErrorCallback error; +}; + +callback AudioDataOutputCallback = undefined(AudioData output); + +[Exposed=(Window,DedicatedWorker), SecureContext] +interface VideoDecoder { + constructor(VideoDecoderInit init); + + readonly attribute CodecState state; + readonly attribute unsigned long decodeQueueSize; + attribute EventHandler ondequeue; + + undefined configure(VideoDecoderConfig config); + undefined decode(EncodedVideoChunk chunk); + Promise<undefined> flush(); + undefined reset(); + undefined close(); + + static Promise<VideoDecoderSupport> isConfigSupported(VideoDecoderConfig config); +}; + +dictionary VideoDecoderInit { + required VideoFrameOutputCallback output; + required WebCodecsErrorCallback error; +}; + +callback VideoFrameOutputCallback = undefined(VideoFrame output); + +[Exposed=(Window,DedicatedWorker), SecureContext] +interface AudioEncoder { + constructor(AudioEncoderInit init); + + readonly attribute CodecState state; + readonly attribute unsigned long encodeQueueSize; + attribute EventHandler ondequeue; + + undefined configure(AudioEncoderConfig config); + undefined encode(AudioData data); + Promise<undefined> flush(); + undefined reset(); + undefined close(); + + static Promise<AudioEncoderSupport> isConfigSupported(AudioEncoderConfig config); +}; + +dictionary AudioEncoderInit { + required EncodedAudioChunkOutputCallback output; + required WebCodecsErrorCallback error; +}; + +callback EncodedAudioChunkOutputCallback = + undefined (EncodedAudioChunk output, + optional EncodedAudioChunkMetadata metadata = {}); + +dictionary EncodedAudioChunkMetadata { + AudioDecoderConfig decoderConfig; +}; + +[Exposed=(Window,DedicatedWorker), SecureContext] +interface VideoEncoder { + constructor(VideoEncoderInit init); + + readonly attribute CodecState state; + readonly attribute unsigned long encodeQueueSize; + attribute EventHandler ondequeue; + + undefined configure(VideoEncoderConfig config); + undefined encode(VideoFrame frame, optional VideoEncoderEncodeOptions options = {}); + Promise<undefined> flush(); + undefined reset(); + undefined close(); + + static Promise<VideoEncoderSupport> isConfigSupported(VideoEncoderConfig config); +}; + +dictionary VideoEncoderInit { + required EncodedVideoChunkOutputCallback output; + required WebCodecsErrorCallback error; +}; + +callback EncodedVideoChunkOutputCallback = + undefined (EncodedVideoChunk chunk, + optional EncodedVideoChunkMetadata metadata = {}); + +dictionary EncodedVideoChunkMetadata { + VideoDecoderConfig decoderConfig; + SvcOutputMetadata svc; + BufferSource alphaSideData; +}; + +dictionary SvcOutputMetadata { + unsigned long temporalLayerId; +}; + +dictionary AudioDecoderSupport { + boolean supported; + AudioDecoderConfig config; +}; + +dictionary VideoDecoderSupport { + boolean supported; + VideoDecoderConfig config; +}; + +dictionary AudioEncoderSupport { + boolean supported; + AudioEncoderConfig config; +}; + +dictionary VideoEncoderSupport { + boolean supported; + VideoEncoderConfig config; +}; + +dictionary AudioDecoderConfig { + required DOMString codec; + [EnforceRange] required unsigned long sampleRate; + [EnforceRange] required unsigned long numberOfChannels; + BufferSource description; +}; + +dictionary VideoDecoderConfig { + required DOMString codec; + [AllowShared] BufferSource description; + [EnforceRange] unsigned long codedWidth; + [EnforceRange] unsigned long codedHeight; + [EnforceRange] unsigned long displayAspectWidth; + [EnforceRange] unsigned long displayAspectHeight; + VideoColorSpaceInit colorSpace; + HardwareAcceleration hardwareAcceleration = "no-preference"; + boolean optimizeForLatency; +}; + +dictionary AudioEncoderConfig { + required DOMString codec; + [EnforceRange] unsigned long sampleRate; + [EnforceRange] unsigned long numberOfChannels; + [EnforceRange] unsigned long long bitrate; +}; + +dictionary VideoEncoderConfig { + required DOMString codec; + [EnforceRange] required unsigned long width; + [EnforceRange] required unsigned long height; + [EnforceRange] unsigned long displayWidth; + [EnforceRange] unsigned long displayHeight; + [EnforceRange] unsigned long long bitrate; + double framerate; + HardwareAcceleration hardwareAcceleration = "no-preference"; + AlphaOption alpha = "discard"; + DOMString scalabilityMode; + BitrateMode bitrateMode = "variable"; + LatencyMode latencyMode = "quality"; +}; + +enum HardwareAcceleration { + "no-preference", + "prefer-hardware", + "prefer-software", +}; + +enum AlphaOption { + "keep", + "discard", +}; + +enum LatencyMode { + "quality", + "realtime" +}; + +dictionary VideoEncoderEncodeOptions { + boolean keyFrame = false; +}; + +enum CodecState { + "unconfigured", + "configured", + "closed" +}; + +callback WebCodecsErrorCallback = undefined(DOMException error); + +[Exposed=(Window,DedicatedWorker), Serializable] +interface EncodedAudioChunk { + constructor(EncodedAudioChunkInit init); + readonly attribute EncodedAudioChunkType type; + readonly attribute long long timestamp; // microseconds + readonly attribute unsigned long long? duration; // microseconds + readonly attribute unsigned long byteLength; + + undefined copyTo([AllowShared] BufferSource destination); +}; + +dictionary EncodedAudioChunkInit { + required EncodedAudioChunkType type; + [EnforceRange] required long long timestamp; // microseconds + [EnforceRange] unsigned long long duration; // microseconds + required BufferSource data; +}; + +enum EncodedAudioChunkType { + "key", + "delta", +}; + +[Exposed=(Window,DedicatedWorker), Serializable] +interface EncodedVideoChunk { + constructor(EncodedVideoChunkInit init); + readonly attribute EncodedVideoChunkType type; + readonly attribute long long timestamp; // microseconds + readonly attribute unsigned long long? duration; // microseconds + readonly attribute unsigned long byteLength; + + undefined copyTo([AllowShared] BufferSource destination); +}; + +dictionary EncodedVideoChunkInit { + required EncodedVideoChunkType type; + [EnforceRange] required long long timestamp; // microseconds + [EnforceRange] unsigned long long duration; // microseconds + required [AllowShared] BufferSource data; +}; + +enum EncodedVideoChunkType { + "key", + "delta", +}; + +[Exposed=(Window,DedicatedWorker), Serializable, Transferable] +interface AudioData { + constructor(AudioDataInit init); + + readonly attribute AudioSampleFormat? format; + readonly attribute float sampleRate; + readonly attribute unsigned long numberOfFrames; + readonly attribute unsigned long numberOfChannels; + readonly attribute unsigned long long duration; // microseconds + readonly attribute long long timestamp; // microseconds + + unsigned long allocationSize(AudioDataCopyToOptions options); + undefined copyTo([AllowShared] BufferSource destination, AudioDataCopyToOptions options); + AudioData clone(); + undefined close(); +}; + +dictionary AudioDataInit { + required AudioSampleFormat format; + required float sampleRate; + [EnforceRange] required unsigned long numberOfFrames; + [EnforceRange] required unsigned long numberOfChannels; + [EnforceRange] required long long timestamp; // microseconds + required BufferSource data; +}; + +dictionary AudioDataCopyToOptions { + [EnforceRange] required unsigned long planeIndex; + [EnforceRange] unsigned long frameOffset = 0; + [EnforceRange] unsigned long frameCount; + AudioSampleFormat format; +}; + +enum AudioSampleFormat { + "u8", + "s16", + "s32", + "f32", + "u8-planar", + "s16-planar", + "s32-planar", + "f32-planar", +}; + +[Exposed=(Window,DedicatedWorker), Serializable, Transferable] +interface VideoFrame { + constructor(CanvasImageSource image, optional VideoFrameInit init = {}); + constructor([AllowShared] BufferSource data, VideoFrameBufferInit init); + + readonly attribute VideoPixelFormat? format; + readonly attribute unsigned long codedWidth; + readonly attribute unsigned long codedHeight; + readonly attribute DOMRectReadOnly? codedRect; + readonly attribute DOMRectReadOnly? visibleRect; + readonly attribute unsigned long displayWidth; + readonly attribute unsigned long displayHeight; + readonly attribute unsigned long long? duration; // microseconds + readonly attribute long long timestamp; // microseconds + readonly attribute VideoColorSpace colorSpace; + + VideoFrameMetadata metadata(); + + unsigned long allocationSize( + optional VideoFrameCopyToOptions options = {}); + Promise<sequence<PlaneLayout>> copyTo( + [AllowShared] BufferSource destination, + optional VideoFrameCopyToOptions options = {}); + VideoFrame clone(); + undefined close(); +}; + +dictionary VideoFrameInit { + unsigned long long duration; // microseconds + long long timestamp; // microseconds + AlphaOption alpha = "keep"; + + // Default matches image. May be used to efficiently crop. Will trigger + // new computation of displayWidth and displayHeight using image’s pixel + // aspect ratio unless an explicit displayWidth and displayHeight are given. + DOMRectInit visibleRect; + + // Default matches image unless visibleRect is provided. + [EnforceRange] unsigned long displayWidth; + [EnforceRange] unsigned long displayHeight; + + VideoFrameMetadata metadata; +}; + +dictionary VideoFrameBufferInit { + required VideoPixelFormat format; + required [EnforceRange] unsigned long codedWidth; + required [EnforceRange] unsigned long codedHeight; + required [EnforceRange] long long timestamp; // microseconds + [EnforceRange] unsigned long long duration; // microseconds + + // Default layout is tightly-packed. + sequence<PlaneLayout> layout; + + // Default visible rect is coded size positioned at (0,0) + DOMRectInit visibleRect; + + // Default display dimensions match visibleRect. + [EnforceRange] unsigned long displayWidth; + [EnforceRange] unsigned long displayHeight; + + VideoColorSpaceInit colorSpace; +}; + +dictionary VideoFrameMetadata { + // Possible members are recorded in the VideoFrame Metadata Registry. +}; + +dictionary VideoFrameCopyToOptions { + DOMRectInit rect; + sequence<PlaneLayout> layout; +}; + +dictionary PlaneLayout { + [EnforceRange] required unsigned long offset; + [EnforceRange] required unsigned long stride; +}; + +enum VideoPixelFormat { + // 4:2:0 Y, U, V + "I420", + // 4:2:0 Y, U, V, A + "I420A", + // 4:2:2 Y, U, V + "I422", + // 4:4:4 Y, U, V + "I444", + // 4:2:0 Y, UV + "NV12", + // 32bpp RGBA + "RGBA", + // 32bpp RGBX (opaque) + "RGBX", + // 32bpp BGRA + "BGRA", + // 32bpp BGRX (opaque) + "BGRX", +}; + +[Exposed=(Window,DedicatedWorker)] +interface VideoColorSpace { + constructor(optional VideoColorSpaceInit init = {}); + + readonly attribute VideoColorPrimaries? primaries; + readonly attribute VideoTransferCharacteristics? transfer; + readonly attribute VideoMatrixCoefficients? matrix; + readonly attribute boolean? fullRange; + + [Default] VideoColorSpaceInit toJSON(); +}; + +dictionary VideoColorSpaceInit { + VideoColorPrimaries? primaries = null; + VideoTransferCharacteristics? transfer = null; + VideoMatrixCoefficients? matrix = null; + boolean? fullRange = null; +}; + +enum VideoColorPrimaries { + "bt709", + "bt470bg", + "smpte170m", + "bt2020", + "smpte432", +}; + +enum VideoTransferCharacteristics { + "bt709", + "smpte170m", + "iec61966-2-1", + "linear", + "pq", + "hlg", +}; + +enum VideoMatrixCoefficients { + "rgb", + "bt709", + "bt470bg", + "smpte170m", + "bt2020-ncl", +}; + +[Exposed=(Window,DedicatedWorker), SecureContext] +interface ImageDecoder { + constructor(ImageDecoderInit init); + + readonly attribute DOMString type; + readonly attribute boolean complete; + readonly attribute Promise<undefined> completed; + readonly attribute ImageTrackList tracks; + + Promise<ImageDecodeResult> decode(optional ImageDecodeOptions options = {}); + undefined reset(); + undefined close(); + + static Promise<boolean> isTypeSupported(DOMString type); +}; + +typedef (BufferSource or ReadableStream) ImageBufferSource; +dictionary ImageDecoderInit { + required DOMString type; + required ImageBufferSource data; + ColorSpaceConversion colorSpaceConversion = "default"; + [EnforceRange] unsigned long desiredWidth; + [EnforceRange] unsigned long desiredHeight; + boolean preferAnimation; +}; + +dictionary ImageDecodeOptions { + [EnforceRange] unsigned long frameIndex = 0; + boolean completeFramesOnly = true; +}; + +dictionary ImageDecodeResult { + required VideoFrame image; + required boolean complete; +}; + +[Exposed=(Window,DedicatedWorker)] +interface ImageTrackList { + getter ImageTrack (unsigned long index); + + readonly attribute Promise<undefined> ready; + readonly attribute unsigned long length; + readonly attribute long selectedIndex; + readonly attribute ImageTrack? selectedTrack; +}; + +[Exposed=(Window,DedicatedWorker)] +interface ImageTrack { + readonly attribute boolean animated; + readonly attribute unsigned long frameCount; + readonly attribute unrestricted float repetitionCount; + attribute boolean selected; +}; diff --git a/testing/web-platform/tests/interfaces/webcrypto-secure-curves.idl b/testing/web-platform/tests/interfaces/webcrypto-secure-curves.idl new file mode 100644 index 0000000000..01bb290b74 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webcrypto-secure-curves.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Secure Curves in the Web Cryptography API (https://wicg.github.io/webcrypto-secure-curves/) + +dictionary Ed448Params : Algorithm { + BufferSource context; +}; diff --git a/testing/web-platform/tests/interfaces/webdriver.idl b/testing/web-platform/tests/interfaces/webdriver.idl new file mode 100644 index 0000000000..194e2d806a --- /dev/null +++ b/testing/web-platform/tests/interfaces/webdriver.idl @@ -0,0 +1,9 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebDriver (https://w3c.github.io/webdriver/) + +interface mixin NavigatorAutomationInformation { + readonly attribute boolean webdriver; +}; +Navigator includes NavigatorAutomationInformation; diff --git a/testing/web-platform/tests/interfaces/webgl1.idl b/testing/web-platform/tests/interfaces/webgl1.idl new file mode 100644 index 0000000000..3912e9a4b0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webgl1.idl @@ -0,0 +1,745 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL Specification (https://registry.khronos.org/webgl/specs/latest/1.0/) + +typedef unsigned long GLenum; +typedef boolean GLboolean; +typedef unsigned long GLbitfield; +typedef byte GLbyte; /* 'byte' should be a signed 8 bit type. */ +typedef short GLshort; +typedef long GLint; +typedef long GLsizei; +typedef long long GLintptr; +typedef long long GLsizeiptr; +// Ideally the typedef below would use 'unsigned byte', but that doesn't currently exist in Web IDL. +typedef octet GLubyte; /* 'octet' should be an unsigned 8 bit type. */ +typedef unsigned short GLushort; +typedef unsigned long GLuint; +typedef unrestricted float GLfloat; +typedef unrestricted float GLclampf; + +// The power preference settings are documented in the WebGLContextAttributes +// section of the specification. +enum WebGLPowerPreference { "default", "low-power", "high-performance" }; + +dictionary WebGLContextAttributes { + boolean alpha = true; + boolean depth = true; + boolean stencil = false; + boolean antialias = true; + boolean premultipliedAlpha = true; + boolean preserveDrawingBuffer = false; + WebGLPowerPreference powerPreference = "default"; + boolean failIfMajorPerformanceCaveat = false; + boolean desynchronized = false; +}; + +[Exposed=(Window,Worker)] +interface WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLBuffer : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLFramebuffer : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLProgram : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLRenderbuffer : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLShader : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLTexture : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLUniformLocation { +}; + +[Exposed=(Window,Worker)] +interface WebGLActiveInfo { + readonly attribute GLint size; + readonly attribute GLenum type; + readonly attribute DOMString name; +}; + +[Exposed=(Window,Worker)] +interface WebGLShaderPrecisionFormat { + readonly attribute GLint rangeMin; + readonly attribute GLint rangeMax; + readonly attribute GLint precision; +}; + +typedef (ImageBitmap or + ImageData or + HTMLImageElement or + HTMLCanvasElement or + HTMLVideoElement or + OffscreenCanvas or + VideoFrame) TexImageSource; + +typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List; +typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List; + +interface mixin WebGLRenderingContextBase +{ + + /* ClearBufferMask */ + const GLenum DEPTH_BUFFER_BIT = 0x00000100; + const GLenum STENCIL_BUFFER_BIT = 0x00000400; + const GLenum COLOR_BUFFER_BIT = 0x00004000; + + /* BeginMode */ + const GLenum POINTS = 0x0000; + const GLenum LINES = 0x0001; + const GLenum LINE_LOOP = 0x0002; + const GLenum LINE_STRIP = 0x0003; + const GLenum TRIANGLES = 0x0004; + const GLenum TRIANGLE_STRIP = 0x0005; + const GLenum TRIANGLE_FAN = 0x0006; + + /* AlphaFunction (not supported in ES20) */ + /* NEVER */ + /* LESS */ + /* EQUAL */ + /* LEQUAL */ + /* GREATER */ + /* NOTEQUAL */ + /* GEQUAL */ + /* ALWAYS */ + + /* BlendingFactorDest */ + const GLenum ZERO = 0; + const GLenum ONE = 1; + const GLenum SRC_COLOR = 0x0300; + const GLenum ONE_MINUS_SRC_COLOR = 0x0301; + const GLenum SRC_ALPHA = 0x0302; + const GLenum ONE_MINUS_SRC_ALPHA = 0x0303; + const GLenum DST_ALPHA = 0x0304; + const GLenum ONE_MINUS_DST_ALPHA = 0x0305; + + /* BlendingFactorSrc */ + /* ZERO */ + /* ONE */ + const GLenum DST_COLOR = 0x0306; + const GLenum ONE_MINUS_DST_COLOR = 0x0307; + const GLenum SRC_ALPHA_SATURATE = 0x0308; + /* SRC_ALPHA */ + /* ONE_MINUS_SRC_ALPHA */ + /* DST_ALPHA */ + /* ONE_MINUS_DST_ALPHA */ + + /* BlendEquationSeparate */ + const GLenum FUNC_ADD = 0x8006; + const GLenum BLEND_EQUATION = 0x8009; + const GLenum BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */ + const GLenum BLEND_EQUATION_ALPHA = 0x883D; + + /* BlendSubtract */ + const GLenum FUNC_SUBTRACT = 0x800A; + const GLenum FUNC_REVERSE_SUBTRACT = 0x800B; + + /* Separate Blend Functions */ + const GLenum BLEND_DST_RGB = 0x80C8; + const GLenum BLEND_SRC_RGB = 0x80C9; + const GLenum BLEND_DST_ALPHA = 0x80CA; + const GLenum BLEND_SRC_ALPHA = 0x80CB; + const GLenum CONSTANT_COLOR = 0x8001; + const GLenum ONE_MINUS_CONSTANT_COLOR = 0x8002; + const GLenum CONSTANT_ALPHA = 0x8003; + const GLenum ONE_MINUS_CONSTANT_ALPHA = 0x8004; + const GLenum BLEND_COLOR = 0x8005; + + /* Buffer Objects */ + const GLenum ARRAY_BUFFER = 0x8892; + const GLenum ELEMENT_ARRAY_BUFFER = 0x8893; + const GLenum ARRAY_BUFFER_BINDING = 0x8894; + const GLenum ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + + const GLenum STREAM_DRAW = 0x88E0; + const GLenum STATIC_DRAW = 0x88E4; + const GLenum DYNAMIC_DRAW = 0x88E8; + + const GLenum BUFFER_SIZE = 0x8764; + const GLenum BUFFER_USAGE = 0x8765; + + const GLenum CURRENT_VERTEX_ATTRIB = 0x8626; + + /* CullFaceMode */ + const GLenum FRONT = 0x0404; + const GLenum BACK = 0x0405; + const GLenum FRONT_AND_BACK = 0x0408; + + /* DepthFunction */ + /* NEVER */ + /* LESS */ + /* EQUAL */ + /* LEQUAL */ + /* GREATER */ + /* NOTEQUAL */ + /* GEQUAL */ + /* ALWAYS */ + + /* EnableCap */ + /* TEXTURE_2D */ + const GLenum CULL_FACE = 0x0B44; + const GLenum BLEND = 0x0BE2; + const GLenum DITHER = 0x0BD0; + const GLenum STENCIL_TEST = 0x0B90; + const GLenum DEPTH_TEST = 0x0B71; + const GLenum SCISSOR_TEST = 0x0C11; + const GLenum POLYGON_OFFSET_FILL = 0x8037; + const GLenum SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + const GLenum SAMPLE_COVERAGE = 0x80A0; + + /* ErrorCode */ + const GLenum NO_ERROR = 0; + const GLenum INVALID_ENUM = 0x0500; + const GLenum INVALID_VALUE = 0x0501; + const GLenum INVALID_OPERATION = 0x0502; + const GLenum OUT_OF_MEMORY = 0x0505; + + /* FrontFaceDirection */ + const GLenum CW = 0x0900; + const GLenum CCW = 0x0901; + + /* GetPName */ + const GLenum LINE_WIDTH = 0x0B21; + const GLenum ALIASED_POINT_SIZE_RANGE = 0x846D; + const GLenum ALIASED_LINE_WIDTH_RANGE = 0x846E; + const GLenum CULL_FACE_MODE = 0x0B45; + const GLenum FRONT_FACE = 0x0B46; + const GLenum DEPTH_RANGE = 0x0B70; + const GLenum DEPTH_WRITEMASK = 0x0B72; + const GLenum DEPTH_CLEAR_VALUE = 0x0B73; + const GLenum DEPTH_FUNC = 0x0B74; + const GLenum STENCIL_CLEAR_VALUE = 0x0B91; + const GLenum STENCIL_FUNC = 0x0B92; + const GLenum STENCIL_FAIL = 0x0B94; + const GLenum STENCIL_PASS_DEPTH_FAIL = 0x0B95; + const GLenum STENCIL_PASS_DEPTH_PASS = 0x0B96; + const GLenum STENCIL_REF = 0x0B97; + const GLenum STENCIL_VALUE_MASK = 0x0B93; + const GLenum STENCIL_WRITEMASK = 0x0B98; + const GLenum STENCIL_BACK_FUNC = 0x8800; + const GLenum STENCIL_BACK_FAIL = 0x8801; + const GLenum STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + const GLenum STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + const GLenum STENCIL_BACK_REF = 0x8CA3; + const GLenum STENCIL_BACK_VALUE_MASK = 0x8CA4; + const GLenum STENCIL_BACK_WRITEMASK = 0x8CA5; + const GLenum VIEWPORT = 0x0BA2; + const GLenum SCISSOR_BOX = 0x0C10; + /* SCISSOR_TEST */ + const GLenum COLOR_CLEAR_VALUE = 0x0C22; + const GLenum COLOR_WRITEMASK = 0x0C23; + const GLenum UNPACK_ALIGNMENT = 0x0CF5; + const GLenum PACK_ALIGNMENT = 0x0D05; + const GLenum MAX_TEXTURE_SIZE = 0x0D33; + const GLenum MAX_VIEWPORT_DIMS = 0x0D3A; + const GLenum SUBPIXEL_BITS = 0x0D50; + const GLenum RED_BITS = 0x0D52; + const GLenum GREEN_BITS = 0x0D53; + const GLenum BLUE_BITS = 0x0D54; + const GLenum ALPHA_BITS = 0x0D55; + const GLenum DEPTH_BITS = 0x0D56; + const GLenum STENCIL_BITS = 0x0D57; + const GLenum POLYGON_OFFSET_UNITS = 0x2A00; + /* POLYGON_OFFSET_FILL */ + const GLenum POLYGON_OFFSET_FACTOR = 0x8038; + const GLenum TEXTURE_BINDING_2D = 0x8069; + const GLenum SAMPLE_BUFFERS = 0x80A8; + const GLenum SAMPLES = 0x80A9; + const GLenum SAMPLE_COVERAGE_VALUE = 0x80AA; + const GLenum SAMPLE_COVERAGE_INVERT = 0x80AB; + + /* GetTextureParameter */ + /* TEXTURE_MAG_FILTER */ + /* TEXTURE_MIN_FILTER */ + /* TEXTURE_WRAP_S */ + /* TEXTURE_WRAP_T */ + + const GLenum COMPRESSED_TEXTURE_FORMATS = 0x86A3; + + /* HintMode */ + const GLenum DONT_CARE = 0x1100; + const GLenum FASTEST = 0x1101; + const GLenum NICEST = 0x1102; + + /* HintTarget */ + const GLenum GENERATE_MIPMAP_HINT = 0x8192; + + /* DataType */ + const GLenum BYTE = 0x1400; + const GLenum UNSIGNED_BYTE = 0x1401; + const GLenum SHORT = 0x1402; + const GLenum UNSIGNED_SHORT = 0x1403; + const GLenum INT = 0x1404; + const GLenum UNSIGNED_INT = 0x1405; + const GLenum FLOAT = 0x1406; + + /* PixelFormat */ + const GLenum DEPTH_COMPONENT = 0x1902; + const GLenum ALPHA = 0x1906; + const GLenum RGB = 0x1907; + const GLenum RGBA = 0x1908; + const GLenum LUMINANCE = 0x1909; + const GLenum LUMINANCE_ALPHA = 0x190A; + + /* PixelType */ + /* UNSIGNED_BYTE */ + const GLenum UNSIGNED_SHORT_4_4_4_4 = 0x8033; + const GLenum UNSIGNED_SHORT_5_5_5_1 = 0x8034; + const GLenum UNSIGNED_SHORT_5_6_5 = 0x8363; + + /* Shaders */ + const GLenum FRAGMENT_SHADER = 0x8B30; + const GLenum VERTEX_SHADER = 0x8B31; + const GLenum MAX_VERTEX_ATTRIBS = 0x8869; + const GLenum MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + const GLenum MAX_VARYING_VECTORS = 0x8DFC; + const GLenum MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + const GLenum MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + const GLenum MAX_TEXTURE_IMAGE_UNITS = 0x8872; + const GLenum MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + const GLenum SHADER_TYPE = 0x8B4F; + const GLenum DELETE_STATUS = 0x8B80; + const GLenum LINK_STATUS = 0x8B82; + const GLenum VALIDATE_STATUS = 0x8B83; + const GLenum ATTACHED_SHADERS = 0x8B85; + const GLenum ACTIVE_UNIFORMS = 0x8B86; + const GLenum ACTIVE_ATTRIBUTES = 0x8B89; + const GLenum SHADING_LANGUAGE_VERSION = 0x8B8C; + const GLenum CURRENT_PROGRAM = 0x8B8D; + + /* StencilFunction */ + const GLenum NEVER = 0x0200; + const GLenum LESS = 0x0201; + const GLenum EQUAL = 0x0202; + const GLenum LEQUAL = 0x0203; + const GLenum GREATER = 0x0204; + const GLenum NOTEQUAL = 0x0205; + const GLenum GEQUAL = 0x0206; + const GLenum ALWAYS = 0x0207; + + /* StencilOp */ + /* ZERO */ + const GLenum KEEP = 0x1E00; + const GLenum REPLACE = 0x1E01; + const GLenum INCR = 0x1E02; + const GLenum DECR = 0x1E03; + const GLenum INVERT = 0x150A; + const GLenum INCR_WRAP = 0x8507; + const GLenum DECR_WRAP = 0x8508; + + /* StringName */ + const GLenum VENDOR = 0x1F00; + const GLenum RENDERER = 0x1F01; + const GLenum VERSION = 0x1F02; + + /* TextureMagFilter */ + const GLenum NEAREST = 0x2600; + const GLenum LINEAR = 0x2601; + + /* TextureMinFilter */ + /* NEAREST */ + /* LINEAR */ + const GLenum NEAREST_MIPMAP_NEAREST = 0x2700; + const GLenum LINEAR_MIPMAP_NEAREST = 0x2701; + const GLenum NEAREST_MIPMAP_LINEAR = 0x2702; + const GLenum LINEAR_MIPMAP_LINEAR = 0x2703; + + /* TextureParameterName */ + const GLenum TEXTURE_MAG_FILTER = 0x2800; + const GLenum TEXTURE_MIN_FILTER = 0x2801; + const GLenum TEXTURE_WRAP_S = 0x2802; + const GLenum TEXTURE_WRAP_T = 0x2803; + + /* TextureTarget */ + const GLenum TEXTURE_2D = 0x0DE1; + const GLenum TEXTURE = 0x1702; + + const GLenum TEXTURE_CUBE_MAP = 0x8513; + const GLenum TEXTURE_BINDING_CUBE_MAP = 0x8514; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + const GLenum TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + const GLenum TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + const GLenum MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + + /* TextureUnit */ + const GLenum TEXTURE0 = 0x84C0; + const GLenum TEXTURE1 = 0x84C1; + const GLenum TEXTURE2 = 0x84C2; + const GLenum TEXTURE3 = 0x84C3; + const GLenum TEXTURE4 = 0x84C4; + const GLenum TEXTURE5 = 0x84C5; + const GLenum TEXTURE6 = 0x84C6; + const GLenum TEXTURE7 = 0x84C7; + const GLenum TEXTURE8 = 0x84C8; + const GLenum TEXTURE9 = 0x84C9; + const GLenum TEXTURE10 = 0x84CA; + const GLenum TEXTURE11 = 0x84CB; + const GLenum TEXTURE12 = 0x84CC; + const GLenum TEXTURE13 = 0x84CD; + const GLenum TEXTURE14 = 0x84CE; + const GLenum TEXTURE15 = 0x84CF; + const GLenum TEXTURE16 = 0x84D0; + const GLenum TEXTURE17 = 0x84D1; + const GLenum TEXTURE18 = 0x84D2; + const GLenum TEXTURE19 = 0x84D3; + const GLenum TEXTURE20 = 0x84D4; + const GLenum TEXTURE21 = 0x84D5; + const GLenum TEXTURE22 = 0x84D6; + const GLenum TEXTURE23 = 0x84D7; + const GLenum TEXTURE24 = 0x84D8; + const GLenum TEXTURE25 = 0x84D9; + const GLenum TEXTURE26 = 0x84DA; + const GLenum TEXTURE27 = 0x84DB; + const GLenum TEXTURE28 = 0x84DC; + const GLenum TEXTURE29 = 0x84DD; + const GLenum TEXTURE30 = 0x84DE; + const GLenum TEXTURE31 = 0x84DF; + const GLenum ACTIVE_TEXTURE = 0x84E0; + + /* TextureWrapMode */ + const GLenum REPEAT = 0x2901; + const GLenum CLAMP_TO_EDGE = 0x812F; + const GLenum MIRRORED_REPEAT = 0x8370; + + /* Uniform Types */ + const GLenum FLOAT_VEC2 = 0x8B50; + const GLenum FLOAT_VEC3 = 0x8B51; + const GLenum FLOAT_VEC4 = 0x8B52; + const GLenum INT_VEC2 = 0x8B53; + const GLenum INT_VEC3 = 0x8B54; + const GLenum INT_VEC4 = 0x8B55; + const GLenum BOOL = 0x8B56; + const GLenum BOOL_VEC2 = 0x8B57; + const GLenum BOOL_VEC3 = 0x8B58; + const GLenum BOOL_VEC4 = 0x8B59; + const GLenum FLOAT_MAT2 = 0x8B5A; + const GLenum FLOAT_MAT3 = 0x8B5B; + const GLenum FLOAT_MAT4 = 0x8B5C; + const GLenum SAMPLER_2D = 0x8B5E; + const GLenum SAMPLER_CUBE = 0x8B60; + + /* Vertex Arrays */ + const GLenum VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + const GLenum VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + const GLenum VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + const GLenum VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + const GLenum VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + const GLenum VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + const GLenum VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + + /* Read Format */ + const GLenum IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + const GLenum IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + + /* Shader Source */ + const GLenum COMPILE_STATUS = 0x8B81; + + /* Shader Precision-Specified Types */ + const GLenum LOW_FLOAT = 0x8DF0; + const GLenum MEDIUM_FLOAT = 0x8DF1; + const GLenum HIGH_FLOAT = 0x8DF2; + const GLenum LOW_INT = 0x8DF3; + const GLenum MEDIUM_INT = 0x8DF4; + const GLenum HIGH_INT = 0x8DF5; + + /* Framebuffer Object. */ + const GLenum FRAMEBUFFER = 0x8D40; + const GLenum RENDERBUFFER = 0x8D41; + + const GLenum RGBA4 = 0x8056; + const GLenum RGB5_A1 = 0x8057; + const GLenum RGB565 = 0x8D62; + const GLenum DEPTH_COMPONENT16 = 0x81A5; + const GLenum STENCIL_INDEX8 = 0x8D48; + const GLenum DEPTH_STENCIL = 0x84F9; + + const GLenum RENDERBUFFER_WIDTH = 0x8D42; + const GLenum RENDERBUFFER_HEIGHT = 0x8D43; + const GLenum RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + const GLenum RENDERBUFFER_RED_SIZE = 0x8D50; + const GLenum RENDERBUFFER_GREEN_SIZE = 0x8D51; + const GLenum RENDERBUFFER_BLUE_SIZE = 0x8D52; + const GLenum RENDERBUFFER_ALPHA_SIZE = 0x8D53; + const GLenum RENDERBUFFER_DEPTH_SIZE = 0x8D54; + const GLenum RENDERBUFFER_STENCIL_SIZE = 0x8D55; + + const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + const GLenum FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + + const GLenum COLOR_ATTACHMENT0 = 0x8CE0; + const GLenum DEPTH_ATTACHMENT = 0x8D00; + const GLenum STENCIL_ATTACHMENT = 0x8D20; + const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A; + + const GLenum NONE = 0; + + const GLenum FRAMEBUFFER_COMPLETE = 0x8CD5; + const GLenum FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + const GLenum FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + const GLenum FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9; + const GLenum FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + + const GLenum FRAMEBUFFER_BINDING = 0x8CA6; + const GLenum RENDERBUFFER_BINDING = 0x8CA7; + const GLenum MAX_RENDERBUFFER_SIZE = 0x84E8; + + const GLenum INVALID_FRAMEBUFFER_OPERATION = 0x0506; + + /* WebGL-specific enums */ + const GLenum UNPACK_FLIP_Y_WEBGL = 0x9240; + const GLenum UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241; + const GLenum CONTEXT_LOST_WEBGL = 0x9242; + const GLenum UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243; + const GLenum BROWSER_DEFAULT_WEBGL = 0x9244; + + readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas; + readonly attribute GLsizei drawingBufferWidth; + readonly attribute GLsizei drawingBufferHeight; + attribute PredefinedColorSpace drawingBufferColorSpace; + attribute PredefinedColorSpace unpackColorSpace; + + [WebGLHandlesContextLoss] WebGLContextAttributes? getContextAttributes(); + [WebGLHandlesContextLoss] boolean isContextLost(); + + sequence<DOMString>? getSupportedExtensions(); + object? getExtension(DOMString name); + + undefined activeTexture(GLenum texture); + undefined attachShader(WebGLProgram program, WebGLShader shader); + undefined bindAttribLocation(WebGLProgram program, GLuint index, DOMString name); + undefined bindBuffer(GLenum target, WebGLBuffer? buffer); + undefined bindFramebuffer(GLenum target, WebGLFramebuffer? framebuffer); + undefined bindRenderbuffer(GLenum target, WebGLRenderbuffer? renderbuffer); + undefined bindTexture(GLenum target, WebGLTexture? texture); + undefined blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + undefined blendEquation(GLenum mode); + undefined blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); + undefined blendFunc(GLenum sfactor, GLenum dfactor); + undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); + + [WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target); + undefined clear(GLbitfield mask); + undefined clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + undefined clearDepth(GLclampf depth); + undefined clearStencil(GLint s); + undefined colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + undefined compileShader(WebGLShader shader); + + undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, GLsizei height, + GLint border); + undefined copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint x, GLint y, GLsizei width, GLsizei height); + + WebGLBuffer? createBuffer(); + WebGLFramebuffer? createFramebuffer(); + WebGLProgram? createProgram(); + WebGLRenderbuffer? createRenderbuffer(); + WebGLShader? createShader(GLenum type); + WebGLTexture? createTexture(); + + undefined cullFace(GLenum mode); + + undefined deleteBuffer(WebGLBuffer? buffer); + undefined deleteFramebuffer(WebGLFramebuffer? framebuffer); + undefined deleteProgram(WebGLProgram? program); + undefined deleteRenderbuffer(WebGLRenderbuffer? renderbuffer); + undefined deleteShader(WebGLShader? shader); + undefined deleteTexture(WebGLTexture? texture); + + undefined depthFunc(GLenum func); + undefined depthMask(GLboolean flag); + undefined depthRange(GLclampf zNear, GLclampf zFar); + undefined detachShader(WebGLProgram program, WebGLShader shader); + undefined disable(GLenum cap); + undefined disableVertexAttribArray(GLuint index); + undefined drawArrays(GLenum mode, GLint first, GLsizei count); + undefined drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset); + + undefined enable(GLenum cap); + undefined enableVertexAttribArray(GLuint index); + undefined finish(); + undefined flush(); + undefined framebufferRenderbuffer(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + WebGLRenderbuffer? renderbuffer); + undefined framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, + WebGLTexture? texture, GLint level); + undefined frontFace(GLenum mode); + + undefined generateMipmap(GLenum target); + + WebGLActiveInfo? getActiveAttrib(WebGLProgram program, GLuint index); + WebGLActiveInfo? getActiveUniform(WebGLProgram program, GLuint index); + sequence<WebGLShader>? getAttachedShaders(WebGLProgram program); + + [WebGLHandlesContextLoss] GLint getAttribLocation(WebGLProgram program, DOMString name); + + any getBufferParameter(GLenum target, GLenum pname); + any getParameter(GLenum pname); + + [WebGLHandlesContextLoss] GLenum getError(); + + any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, + GLenum pname); + any getProgramParameter(WebGLProgram program, GLenum pname); + DOMString? getProgramInfoLog(WebGLProgram program); + any getRenderbufferParameter(GLenum target, GLenum pname); + any getShaderParameter(WebGLShader shader, GLenum pname); + WebGLShaderPrecisionFormat? getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype); + DOMString? getShaderInfoLog(WebGLShader shader); + + DOMString? getShaderSource(WebGLShader shader); + + any getTexParameter(GLenum target, GLenum pname); + + any getUniform(WebGLProgram program, WebGLUniformLocation location); + + WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name); + + any getVertexAttrib(GLuint index, GLenum pname); + + [WebGLHandlesContextLoss] GLintptr getVertexAttribOffset(GLuint index, GLenum pname); + + undefined hint(GLenum target, GLenum mode); + [WebGLHandlesContextLoss] GLboolean isBuffer(WebGLBuffer? buffer); + [WebGLHandlesContextLoss] GLboolean isEnabled(GLenum cap); + [WebGLHandlesContextLoss] GLboolean isFramebuffer(WebGLFramebuffer? framebuffer); + [WebGLHandlesContextLoss] GLboolean isProgram(WebGLProgram? program); + [WebGLHandlesContextLoss] GLboolean isRenderbuffer(WebGLRenderbuffer? renderbuffer); + [WebGLHandlesContextLoss] GLboolean isShader(WebGLShader? shader); + [WebGLHandlesContextLoss] GLboolean isTexture(WebGLTexture? texture); + undefined lineWidth(GLfloat width); + undefined linkProgram(WebGLProgram program); + undefined pixelStorei(GLenum pname, GLint param); + undefined polygonOffset(GLfloat factor, GLfloat units); + + undefined renderbufferStorage(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); + undefined sampleCoverage(GLclampf value, GLboolean invert); + undefined scissor(GLint x, GLint y, GLsizei width, GLsizei height); + + undefined shaderSource(WebGLShader shader, DOMString source); + + undefined stencilFunc(GLenum func, GLint ref, GLuint mask); + undefined stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + undefined stencilMask(GLuint mask); + undefined stencilMaskSeparate(GLenum face, GLuint mask); + undefined stencilOp(GLenum fail, GLenum zfail, GLenum zpass); + undefined stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); + + undefined texParameterf(GLenum target, GLenum pname, GLfloat param); + undefined texParameteri(GLenum target, GLenum pname, GLint param); + + undefined uniform1f(WebGLUniformLocation? location, GLfloat x); + undefined uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); + undefined uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); + undefined uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + + undefined uniform1i(WebGLUniformLocation? location, GLint x); + undefined uniform2i(WebGLUniformLocation? location, GLint x, GLint y); + undefined uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); + undefined uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); + + undefined useProgram(WebGLProgram? program); + undefined validateProgram(WebGLProgram program); + + undefined vertexAttrib1f(GLuint index, GLfloat x); + undefined vertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + undefined vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + undefined vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + + undefined vertexAttrib1fv(GLuint index, Float32List values); + undefined vertexAttrib2fv(GLuint index, Float32List values); + undefined vertexAttrib3fv(GLuint index, Float32List values); + undefined vertexAttrib4fv(GLuint index, Float32List values); + + undefined vertexAttribPointer(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, GLintptr offset); + + undefined viewport(GLint x, GLint y, GLsizei width, GLsizei height); +}; + +interface mixin WebGLRenderingContextOverloads +{ + undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage); + undefined bufferData(GLenum target, [AllowShared] BufferSource? data, GLenum usage); + undefined bufferSubData(GLenum target, GLintptr offset, [AllowShared] BufferSource data); + + undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, + GLsizei width, GLsizei height, GLint border, + [AllowShared] ArrayBufferView data); + undefined compressedTexSubImage2D(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, + [AllowShared] ArrayBufferView data); + + undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); + + undefined texImage2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, GLenum format, + GLenum type, [AllowShared] ArrayBufferView? pixels); + undefined texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, TexImageSource source); // May throw DOMException + + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, TexImageSource source); // May throw DOMException + + undefined uniform1fv(WebGLUniformLocation? location, Float32List v); + undefined uniform2fv(WebGLUniformLocation? location, Float32List v); + undefined uniform3fv(WebGLUniformLocation? location, Float32List v); + undefined uniform4fv(WebGLUniformLocation? location, Float32List v); + + undefined uniform1iv(WebGLUniformLocation? location, Int32List v); + undefined uniform2iv(WebGLUniformLocation? location, Int32List v); + undefined uniform3iv(WebGLUniformLocation? location, Int32List v); + undefined uniform4iv(WebGLUniformLocation? location, Int32List v); + + undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); + undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); + undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List value); +}; + +[Exposed=(Window,Worker)] +interface WebGLRenderingContext +{ +}; +WebGLRenderingContext includes WebGLRenderingContextBase; +WebGLRenderingContext includes WebGLRenderingContextOverloads; + +[Exposed=(Window,Worker)] +interface WebGLContextEvent : Event { + constructor(DOMString type, optional WebGLContextEventInit eventInit = {}); + readonly attribute DOMString statusMessage; +}; + +// EventInit is defined in the DOM4 specification. +dictionary WebGLContextEventInit : EventInit { + DOMString statusMessage = ""; +}; diff --git a/testing/web-platform/tests/interfaces/webgl2.idl b/testing/web-platform/tests/interfaces/webgl2.idl new file mode 100644 index 0000000000..22e2d6fa32 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webgl2.idl @@ -0,0 +1,582 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGL 2.0 Specification (https://registry.khronos.org/webgl/specs/latest/2.0/) + +typedef long long GLint64; +typedef unsigned long long GLuint64; + +[Exposed=(Window,Worker)] +interface WebGLQuery : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLSampler : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLSync : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLTransformFeedback : WebGLObject { +}; + +[Exposed=(Window,Worker)] +interface WebGLVertexArrayObject : WebGLObject { +}; + +typedef ([AllowShared] Uint32Array or sequence<GLuint>) Uint32List; + +interface mixin WebGL2RenderingContextBase +{ + const GLenum READ_BUFFER = 0x0C02; + const GLenum UNPACK_ROW_LENGTH = 0x0CF2; + const GLenum UNPACK_SKIP_ROWS = 0x0CF3; + const GLenum UNPACK_SKIP_PIXELS = 0x0CF4; + const GLenum PACK_ROW_LENGTH = 0x0D02; + const GLenum PACK_SKIP_ROWS = 0x0D03; + const GLenum PACK_SKIP_PIXELS = 0x0D04; + const GLenum COLOR = 0x1800; + const GLenum DEPTH = 0x1801; + const GLenum STENCIL = 0x1802; + const GLenum RED = 0x1903; + const GLenum RGB8 = 0x8051; + const GLenum RGBA8 = 0x8058; + const GLenum RGB10_A2 = 0x8059; + const GLenum TEXTURE_BINDING_3D = 0x806A; + const GLenum UNPACK_SKIP_IMAGES = 0x806D; + const GLenum UNPACK_IMAGE_HEIGHT = 0x806E; + const GLenum TEXTURE_3D = 0x806F; + const GLenum TEXTURE_WRAP_R = 0x8072; + const GLenum MAX_3D_TEXTURE_SIZE = 0x8073; + const GLenum UNSIGNED_INT_2_10_10_10_REV = 0x8368; + const GLenum MAX_ELEMENTS_VERTICES = 0x80E8; + const GLenum MAX_ELEMENTS_INDICES = 0x80E9; + const GLenum TEXTURE_MIN_LOD = 0x813A; + const GLenum TEXTURE_MAX_LOD = 0x813B; + const GLenum TEXTURE_BASE_LEVEL = 0x813C; + const GLenum TEXTURE_MAX_LEVEL = 0x813D; + const GLenum MIN = 0x8007; + const GLenum MAX = 0x8008; + const GLenum DEPTH_COMPONENT24 = 0x81A6; + const GLenum MAX_TEXTURE_LOD_BIAS = 0x84FD; + const GLenum TEXTURE_COMPARE_MODE = 0x884C; + const GLenum TEXTURE_COMPARE_FUNC = 0x884D; + const GLenum CURRENT_QUERY = 0x8865; + const GLenum QUERY_RESULT = 0x8866; + const GLenum QUERY_RESULT_AVAILABLE = 0x8867; + const GLenum STREAM_READ = 0x88E1; + const GLenum STREAM_COPY = 0x88E2; + const GLenum STATIC_READ = 0x88E5; + const GLenum STATIC_COPY = 0x88E6; + const GLenum DYNAMIC_READ = 0x88E9; + const GLenum DYNAMIC_COPY = 0x88EA; + const GLenum MAX_DRAW_BUFFERS = 0x8824; + const GLenum DRAW_BUFFER0 = 0x8825; + const GLenum DRAW_BUFFER1 = 0x8826; + const GLenum DRAW_BUFFER2 = 0x8827; + const GLenum DRAW_BUFFER3 = 0x8828; + const GLenum DRAW_BUFFER4 = 0x8829; + const GLenum DRAW_BUFFER5 = 0x882A; + const GLenum DRAW_BUFFER6 = 0x882B; + const GLenum DRAW_BUFFER7 = 0x882C; + const GLenum DRAW_BUFFER8 = 0x882D; + const GLenum DRAW_BUFFER9 = 0x882E; + const GLenum DRAW_BUFFER10 = 0x882F; + const GLenum DRAW_BUFFER11 = 0x8830; + const GLenum DRAW_BUFFER12 = 0x8831; + const GLenum DRAW_BUFFER13 = 0x8832; + const GLenum DRAW_BUFFER14 = 0x8833; + const GLenum DRAW_BUFFER15 = 0x8834; + const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + const GLenum MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + const GLenum SAMPLER_3D = 0x8B5F; + const GLenum SAMPLER_2D_SHADOW = 0x8B62; + const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + const GLenum PIXEL_PACK_BUFFER = 0x88EB; + const GLenum PIXEL_UNPACK_BUFFER = 0x88EC; + const GLenum PIXEL_PACK_BUFFER_BINDING = 0x88ED; + const GLenum PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + const GLenum FLOAT_MAT2x3 = 0x8B65; + const GLenum FLOAT_MAT2x4 = 0x8B66; + const GLenum FLOAT_MAT3x2 = 0x8B67; + const GLenum FLOAT_MAT3x4 = 0x8B68; + const GLenum FLOAT_MAT4x2 = 0x8B69; + const GLenum FLOAT_MAT4x3 = 0x8B6A; + const GLenum SRGB = 0x8C40; + const GLenum SRGB8 = 0x8C41; + const GLenum SRGB8_ALPHA8 = 0x8C43; + const GLenum COMPARE_REF_TO_TEXTURE = 0x884E; + const GLenum RGBA32F = 0x8814; + const GLenum RGB32F = 0x8815; + const GLenum RGBA16F = 0x881A; + const GLenum RGB16F = 0x881B; + const GLenum VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + const GLenum MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + const GLenum MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + const GLenum MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + const GLenum MAX_VARYING_COMPONENTS = 0x8B4B; + const GLenum TEXTURE_2D_ARRAY = 0x8C1A; + const GLenum TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + const GLenum R11F_G11F_B10F = 0x8C3A; + const GLenum UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + const GLenum RGB9_E5 = 0x8C3D; + const GLenum UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + const GLenum TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + const GLenum RASTERIZER_DISCARD = 0x8C89; + const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + const GLenum INTERLEAVED_ATTRIBS = 0x8C8C; + const GLenum SEPARATE_ATTRIBS = 0x8C8D; + const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + const GLenum RGBA32UI = 0x8D70; + const GLenum RGB32UI = 0x8D71; + const GLenum RGBA16UI = 0x8D76; + const GLenum RGB16UI = 0x8D77; + const GLenum RGBA8UI = 0x8D7C; + const GLenum RGB8UI = 0x8D7D; + const GLenum RGBA32I = 0x8D82; + const GLenum RGB32I = 0x8D83; + const GLenum RGBA16I = 0x8D88; + const GLenum RGB16I = 0x8D89; + const GLenum RGBA8I = 0x8D8E; + const GLenum RGB8I = 0x8D8F; + const GLenum RED_INTEGER = 0x8D94; + const GLenum RGB_INTEGER = 0x8D98; + const GLenum RGBA_INTEGER = 0x8D99; + const GLenum SAMPLER_2D_ARRAY = 0x8DC1; + const GLenum SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + const GLenum SAMPLER_CUBE_SHADOW = 0x8DC5; + const GLenum UNSIGNED_INT_VEC2 = 0x8DC6; + const GLenum UNSIGNED_INT_VEC3 = 0x8DC7; + const GLenum UNSIGNED_INT_VEC4 = 0x8DC8; + const GLenum INT_SAMPLER_2D = 0x8DCA; + const GLenum INT_SAMPLER_3D = 0x8DCB; + const GLenum INT_SAMPLER_CUBE = 0x8DCC; + const GLenum INT_SAMPLER_2D_ARRAY = 0x8DCF; + const GLenum UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + const GLenum UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + const GLenum UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + const GLenum DEPTH_COMPONENT32F = 0x8CAC; + const GLenum DEPTH32F_STENCIL8 = 0x8CAD; + const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + const GLenum FRAMEBUFFER_DEFAULT = 0x8218; + const GLenum UNSIGNED_INT_24_8 = 0x84FA; + const GLenum DEPTH24_STENCIL8 = 0x88F0; + const GLenum UNSIGNED_NORMALIZED = 0x8C17; + const GLenum DRAW_FRAMEBUFFER_BINDING = 0x8CA6; /* Same as FRAMEBUFFER_BINDING */ + const GLenum READ_FRAMEBUFFER = 0x8CA8; + const GLenum DRAW_FRAMEBUFFER = 0x8CA9; + const GLenum READ_FRAMEBUFFER_BINDING = 0x8CAA; + const GLenum RENDERBUFFER_SAMPLES = 0x8CAB; + const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF; + const GLenum COLOR_ATTACHMENT1 = 0x8CE1; + const GLenum COLOR_ATTACHMENT2 = 0x8CE2; + const GLenum COLOR_ATTACHMENT3 = 0x8CE3; + const GLenum COLOR_ATTACHMENT4 = 0x8CE4; + const GLenum COLOR_ATTACHMENT5 = 0x8CE5; + const GLenum COLOR_ATTACHMENT6 = 0x8CE6; + const GLenum COLOR_ATTACHMENT7 = 0x8CE7; + const GLenum COLOR_ATTACHMENT8 = 0x8CE8; + const GLenum COLOR_ATTACHMENT9 = 0x8CE9; + const GLenum COLOR_ATTACHMENT10 = 0x8CEA; + const GLenum COLOR_ATTACHMENT11 = 0x8CEB; + const GLenum COLOR_ATTACHMENT12 = 0x8CEC; + const GLenum COLOR_ATTACHMENT13 = 0x8CED; + const GLenum COLOR_ATTACHMENT14 = 0x8CEE; + const GLenum COLOR_ATTACHMENT15 = 0x8CEF; + const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + const GLenum MAX_SAMPLES = 0x8D57; + const GLenum HALF_FLOAT = 0x140B; + const GLenum RG = 0x8227; + const GLenum RG_INTEGER = 0x8228; + const GLenum R8 = 0x8229; + const GLenum RG8 = 0x822B; + const GLenum R16F = 0x822D; + const GLenum R32F = 0x822E; + const GLenum RG16F = 0x822F; + const GLenum RG32F = 0x8230; + const GLenum R8I = 0x8231; + const GLenum R8UI = 0x8232; + const GLenum R16I = 0x8233; + const GLenum R16UI = 0x8234; + const GLenum R32I = 0x8235; + const GLenum R32UI = 0x8236; + const GLenum RG8I = 0x8237; + const GLenum RG8UI = 0x8238; + const GLenum RG16I = 0x8239; + const GLenum RG16UI = 0x823A; + const GLenum RG32I = 0x823B; + const GLenum RG32UI = 0x823C; + const GLenum VERTEX_ARRAY_BINDING = 0x85B5; + const GLenum R8_SNORM = 0x8F94; + const GLenum RG8_SNORM = 0x8F95; + const GLenum RGB8_SNORM = 0x8F96; + const GLenum RGBA8_SNORM = 0x8F97; + const GLenum SIGNED_NORMALIZED = 0x8F9C; + const GLenum COPY_READ_BUFFER = 0x8F36; + const GLenum COPY_WRITE_BUFFER = 0x8F37; + const GLenum COPY_READ_BUFFER_BINDING = 0x8F36; /* Same as COPY_READ_BUFFER */ + const GLenum COPY_WRITE_BUFFER_BINDING = 0x8F37; /* Same as COPY_WRITE_BUFFER */ + const GLenum UNIFORM_BUFFER = 0x8A11; + const GLenum UNIFORM_BUFFER_BINDING = 0x8A28; + const GLenum UNIFORM_BUFFER_START = 0x8A29; + const GLenum UNIFORM_BUFFER_SIZE = 0x8A2A; + const GLenum MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + const GLenum MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + const GLenum MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + const GLenum MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + const GLenum ACTIVE_UNIFORM_BLOCKS = 0x8A36; + const GLenum UNIFORM_TYPE = 0x8A37; + const GLenum UNIFORM_SIZE = 0x8A38; + const GLenum UNIFORM_BLOCK_INDEX = 0x8A3A; + const GLenum UNIFORM_OFFSET = 0x8A3B; + const GLenum UNIFORM_ARRAY_STRIDE = 0x8A3C; + const GLenum UNIFORM_MATRIX_STRIDE = 0x8A3D; + const GLenum UNIFORM_IS_ROW_MAJOR = 0x8A3E; + const GLenum UNIFORM_BLOCK_BINDING = 0x8A3F; + const GLenum UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + const GLenum INVALID_INDEX = 0xFFFFFFFF; + const GLenum MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + const GLenum MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + const GLenum MAX_SERVER_WAIT_TIMEOUT = 0x9111; + const GLenum OBJECT_TYPE = 0x9112; + const GLenum SYNC_CONDITION = 0x9113; + const GLenum SYNC_STATUS = 0x9114; + const GLenum SYNC_FLAGS = 0x9115; + const GLenum SYNC_FENCE = 0x9116; + const GLenum SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + const GLenum UNSIGNALED = 0x9118; + const GLenum SIGNALED = 0x9119; + const GLenum ALREADY_SIGNALED = 0x911A; + const GLenum TIMEOUT_EXPIRED = 0x911B; + const GLenum CONDITION_SATISFIED = 0x911C; + const GLenum WAIT_FAILED = 0x911D; + const GLenum SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + const GLenum ANY_SAMPLES_PASSED = 0x8C2F; + const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + const GLenum SAMPLER_BINDING = 0x8919; + const GLenum RGB10_A2UI = 0x906F; + const GLenum INT_2_10_10_10_REV = 0x8D9F; + const GLenum TRANSFORM_FEEDBACK = 0x8E22; + const GLenum TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + const GLenum TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + const GLenum TRANSFORM_FEEDBACK_BINDING = 0x8E25; + const GLenum TEXTURE_IMMUTABLE_FORMAT = 0x912F; + const GLenum MAX_ELEMENT_INDEX = 0x8D6B; + const GLenum TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + + const GLint64 TIMEOUT_IGNORED = -1; + + /* WebGL-specific enums */ + const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL = 0x9247; + + /* Buffer objects */ + undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, + GLintptr writeOffset, GLsizeiptr size); + // MapBufferRange, in particular its read-only and write-only modes, + // can not be exposed safely to JavaScript. GetBufferSubData + // replaces it for the purpose of fetching data back from the GPU. + undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstBuffer, + optional GLuint dstOffset = 0, optional GLuint length = 0); + + /* Framebuffer objects */ + undefined blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + undefined framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, + GLint layer); + undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments); + undefined invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments, + GLint x, GLint y, GLsizei width, GLsizei height); + undefined readBuffer(GLenum src); + + /* Renderbuffer objects */ + any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname); + undefined renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, + GLsizei width, GLsizei height); + + /* Texture objects */ + undefined texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height); + undefined texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); + + undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset); + undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, + TexImageSource source); // May throw DOMException + undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData); + undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, + GLuint srcOffset); + + undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + GLintptr pboOffset); + undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + TexImageSource source); // May throw DOMException + undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, + [AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0); + + undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, GLsizei height); + + undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset); + undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData, + optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); + + undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLsizei imageSize, GLintptr offset); + undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, + GLenum format, [AllowShared] ArrayBufferView srcData, + optional GLuint srcOffset = 0, + optional GLuint srcLengthOverride = 0); + + /* Programs and shaders */ + [WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name); + + /* Uniforms */ + undefined uniform1ui(WebGLUniformLocation? location, GLuint v0); + undefined uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1); + undefined uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2); + undefined uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + + undefined uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + /* Vertex attribs */ + undefined vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + undefined vertexAttribI4iv(GLuint index, Int32List values); + undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + undefined vertexAttribI4uiv(GLuint index, Uint32List values); + undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); + + /* Writing to the drawing buffer */ + undefined vertexAttribDivisor(GLuint index, GLuint divisor); + undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); + undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount); + undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset); + + /* Multiple Render Targets */ + undefined drawBuffers(sequence<GLenum> buffers); + + undefined clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values, + optional GLuint srcOffset = 0); + undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values, + optional GLuint srcOffset = 0); + undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values, + optional GLuint srcOffset = 0); + + undefined clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + + /* Query Objects */ + WebGLQuery? createQuery(); + undefined deleteQuery(WebGLQuery? query); + [WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query); + undefined beginQuery(GLenum target, WebGLQuery query); + undefined endQuery(GLenum target); + WebGLQuery? getQuery(GLenum target, GLenum pname); + any getQueryParameter(WebGLQuery query, GLenum pname); + + /* Sampler Objects */ + WebGLSampler? createSampler(); + undefined deleteSampler(WebGLSampler? sampler); + [WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler); + undefined bindSampler(GLuint unit, WebGLSampler? sampler); + undefined samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param); + undefined samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param); + any getSamplerParameter(WebGLSampler sampler, GLenum pname); + + /* Sync objects */ + WebGLSync? fenceSync(GLenum condition, GLbitfield flags); + [WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync); + undefined deleteSync(WebGLSync? sync); + GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout); + undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout); + any getSyncParameter(WebGLSync sync, GLenum pname); + + /* Transform Feedback */ + WebGLTransformFeedback? createTransformFeedback(); + undefined deleteTransformFeedback(WebGLTransformFeedback? tf); + [WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf); + undefined bindTransformFeedback (GLenum target, WebGLTransformFeedback? tf); + undefined beginTransformFeedback(GLenum primitiveMode); + undefined endTransformFeedback(); + undefined transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode); + WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index); + undefined pauseTransformFeedback(); + undefined resumeTransformFeedback(); + + /* Uniform Buffer Objects and Transform Feedback Buffers */ + undefined bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer); + undefined bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size); + any getIndexedParameter(GLenum target, GLuint index); + sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames); + any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname); + GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName); + any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname); + DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex); + undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); + + /* Vertex Array Objects */ + WebGLVertexArrayObject? createVertexArray(); + undefined deleteVertexArray(WebGLVertexArrayObject? vertexArray); + [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray); + undefined bindVertexArray(WebGLVertexArrayObject? array); +}; + +interface mixin WebGL2RenderingContextOverloads +{ + // WebGL1: + undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage); + undefined bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage); + undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData); + // WebGL2: + undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset, + optional GLuint length = 0); + undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData, + GLuint srcOffset, optional GLuint length = 0); + + // WebGL1 legacy entrypoints: + undefined texImage2D(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, GLenum format, + GLenum type, [AllowShared] ArrayBufferView? pixels); + undefined texImage2D(GLenum target, GLint level, GLint internalformat, + GLenum format, GLenum type, TexImageSource source); // May throw DOMException + + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLenum format, GLenum type, TexImageSource source); // May throw DOMException + + // WebGL2 entrypoints: + undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, GLintptr pboOffset); + undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, + TexImageSource source); // May throw DOMException + undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, + GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, + GLuint srcOffset); + + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, GLintptr pboOffset); + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + TexImageSource source); // May throw DOMException + undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, + GLuint srcOffset); + + undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLsizei imageSize, GLintptr offset); + undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData, + optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); + + undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset); + undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, GLenum format, + [AllowShared] ArrayBufferView srcData, + optional GLuint srcOffset = 0, + optional GLuint srcLengthOverride = 0); + + undefined uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + + undefined uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + undefined uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0, + optional GLuint srcLength = 0); + + undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data, + optional GLuint srcOffset = 0, optional GLuint srcLength = 0); + + /* Reading back pixels */ + // WebGL1: + undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + [AllowShared] ArrayBufferView? dstData); + // WebGL2: + undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLintptr offset); + undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + [AllowShared] ArrayBufferView dstData, GLuint dstOffset); +}; + +[Exposed=(Window,Worker)] +interface WebGL2RenderingContext +{ +}; +WebGL2RenderingContext includes WebGLRenderingContextBase; +WebGL2RenderingContext includes WebGL2RenderingContextBase; +WebGL2RenderingContext includes WebGL2RenderingContextOverloads; diff --git a/testing/web-platform/tests/interfaces/webgpu.idl b/testing/web-platform/tests/interfaces/webgpu.idl new file mode 100644 index 0000000000..b00e2374e5 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webgpu.idl @@ -0,0 +1,1265 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebGPU (https://gpuweb.github.io/gpuweb/) + +interface mixin GPUObjectBase { + attribute USVString label; +}; + +dictionary GPUObjectDescriptorBase { + USVString label; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUSupportedLimits { + readonly attribute unsigned long maxTextureDimension1D; + readonly attribute unsigned long maxTextureDimension2D; + readonly attribute unsigned long maxTextureDimension3D; + readonly attribute unsigned long maxTextureArrayLayers; + readonly attribute unsigned long maxBindGroups; + readonly attribute unsigned long maxBindingsPerBindGroup; + readonly attribute unsigned long maxDynamicUniformBuffersPerPipelineLayout; + readonly attribute unsigned long maxDynamicStorageBuffersPerPipelineLayout; + readonly attribute unsigned long maxSampledTexturesPerShaderStage; + readonly attribute unsigned long maxSamplersPerShaderStage; + readonly attribute unsigned long maxStorageBuffersPerShaderStage; + readonly attribute unsigned long maxStorageTexturesPerShaderStage; + readonly attribute unsigned long maxUniformBuffersPerShaderStage; + readonly attribute unsigned long long maxUniformBufferBindingSize; + readonly attribute unsigned long long maxStorageBufferBindingSize; + readonly attribute unsigned long minUniformBufferOffsetAlignment; + readonly attribute unsigned long minStorageBufferOffsetAlignment; + readonly attribute unsigned long maxVertexBuffers; + readonly attribute unsigned long long maxBufferSize; + readonly attribute unsigned long maxVertexAttributes; + readonly attribute unsigned long maxVertexBufferArrayStride; + readonly attribute unsigned long maxInterStageShaderComponents; + readonly attribute unsigned long maxInterStageShaderVariables; + readonly attribute unsigned long maxColorAttachments; + readonly attribute unsigned long maxColorAttachmentBytesPerSample; + readonly attribute unsigned long maxComputeWorkgroupStorageSize; + readonly attribute unsigned long maxComputeInvocationsPerWorkgroup; + readonly attribute unsigned long maxComputeWorkgroupSizeX; + readonly attribute unsigned long maxComputeWorkgroupSizeY; + readonly attribute unsigned long maxComputeWorkgroupSizeZ; + readonly attribute unsigned long maxComputeWorkgroupsPerDimension; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUSupportedFeatures { + readonly setlike<DOMString>; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUAdapterInfo { + readonly attribute DOMString vendor; + readonly attribute DOMString architecture; + readonly attribute DOMString device; + readonly attribute DOMString description; +}; + +interface mixin NavigatorGPU { + [SameObject, SecureContext] readonly attribute GPU gpu; +}; +Navigator includes NavigatorGPU; +WorkerNavigator includes NavigatorGPU; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPU { + Promise<GPUAdapter?> requestAdapter(optional GPURequestAdapterOptions options = {}); + GPUTextureFormat getPreferredCanvasFormat(); +}; + +dictionary GPURequestAdapterOptions { + GPUPowerPreference powerPreference; + boolean forceFallbackAdapter = false; +}; + +enum GPUPowerPreference { + "low-power", + "high-performance" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUAdapter { + [SameObject] readonly attribute GPUSupportedFeatures features; + [SameObject] readonly attribute GPUSupportedLimits limits; + readonly attribute boolean isFallbackAdapter; + + Promise<GPUDevice> requestDevice(optional GPUDeviceDescriptor descriptor = {}); + Promise<GPUAdapterInfo> requestAdapterInfo(optional sequence<DOMString> unmaskHints = []); +}; + +dictionary GPUDeviceDescriptor : GPUObjectDescriptorBase { + sequence<GPUFeatureName> requiredFeatures = []; + record<DOMString, GPUSize64> requiredLimits = {}; + GPUQueueDescriptor defaultQueue = {}; +}; + +enum GPUFeatureName { + "depth-clip-control", + "depth32float-stencil8", + "texture-compression-bc", + "texture-compression-etc2", + "texture-compression-astc", + "timestamp-query", + "indirect-first-instance", + "shader-f16", + "rg11b10ufloat-renderable" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUDevice : EventTarget { + [SameObject] readonly attribute GPUSupportedFeatures features; + [SameObject] readonly attribute GPUSupportedLimits limits; + + [SameObject] readonly attribute GPUQueue queue; + + undefined destroy(); + + GPUBuffer createBuffer(GPUBufferDescriptor descriptor); + GPUTexture createTexture(GPUTextureDescriptor descriptor); + GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {}); + GPUExternalTexture importExternalTexture(GPUExternalTextureDescriptor descriptor); + + GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor); + GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor); + GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor); + + GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor); + GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor); + GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor); + Promise<GPUComputePipeline> createComputePipelineAsync(GPUComputePipelineDescriptor descriptor); + Promise<GPURenderPipeline> createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor); + + GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {}); + GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor); + + GPUQuerySet createQuerySet(GPUQuerySetDescriptor descriptor); +}; +GPUDevice includes GPUObjectBase; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUBuffer { + readonly attribute GPUSize64 size; + readonly attribute GPUBufferUsageFlags usage; + + readonly attribute GPUBufferMapState mapState; + + Promise<undefined> mapAsync(GPUMapModeFlags mode, optional GPUSize64 offset = 0, optional GPUSize64 size); + ArrayBuffer getMappedRange(optional GPUSize64 offset = 0, optional GPUSize64 size); + undefined unmap(); + + undefined destroy(); +}; +GPUBuffer includes GPUObjectBase; + +enum GPUBufferMapState { + "unmapped", + "pending", + "mapped" +}; + +dictionary GPUBufferDescriptor : GPUObjectDescriptorBase { + required GPUSize64 size; + required GPUBufferUsageFlags usage; + boolean mappedAtCreation = false; +}; + +typedef [EnforceRange] unsigned long GPUBufferUsageFlags; +[Exposed=(Window, DedicatedWorker)] +namespace GPUBufferUsage { + const GPUFlagsConstant MAP_READ = 0x0001; + const GPUFlagsConstant MAP_WRITE = 0x0002; + const GPUFlagsConstant COPY_SRC = 0x0004; + const GPUFlagsConstant COPY_DST = 0x0008; + const GPUFlagsConstant INDEX = 0x0010; + const GPUFlagsConstant VERTEX = 0x0020; + const GPUFlagsConstant UNIFORM = 0x0040; + const GPUFlagsConstant STORAGE = 0x0080; + const GPUFlagsConstant INDIRECT = 0x0100; + const GPUFlagsConstant QUERY_RESOLVE = 0x0200; +}; + +typedef [EnforceRange] unsigned long GPUMapModeFlags; +[Exposed=(Window, DedicatedWorker)] +namespace GPUMapMode { + const GPUFlagsConstant READ = 0x0001; + const GPUFlagsConstant WRITE = 0x0002; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUTexture { + GPUTextureView createView(optional GPUTextureViewDescriptor descriptor = {}); + + undefined destroy(); + + readonly attribute GPUIntegerCoordinate width; + readonly attribute GPUIntegerCoordinate height; + readonly attribute GPUIntegerCoordinate depthOrArrayLayers; + readonly attribute GPUIntegerCoordinate mipLevelCount; + readonly attribute GPUSize32 sampleCount; + readonly attribute GPUTextureDimension dimension; + readonly attribute GPUTextureFormat format; + readonly attribute GPUTextureUsageFlags usage; +}; +GPUTexture includes GPUObjectBase; + +dictionary GPUTextureDescriptor : GPUObjectDescriptorBase { + required GPUExtent3D size; + GPUIntegerCoordinate mipLevelCount = 1; + GPUSize32 sampleCount = 1; + GPUTextureDimension dimension = "2d"; + required GPUTextureFormat format; + required GPUTextureUsageFlags usage; + sequence<GPUTextureFormat> viewFormats = []; +}; + +enum GPUTextureDimension { + "1d", + "2d", + "3d" +}; + +typedef [EnforceRange] unsigned long GPUTextureUsageFlags; +[Exposed=(Window, DedicatedWorker)] +namespace GPUTextureUsage { + const GPUFlagsConstant COPY_SRC = 0x01; + const GPUFlagsConstant COPY_DST = 0x02; + const GPUFlagsConstant TEXTURE_BINDING = 0x04; + const GPUFlagsConstant STORAGE_BINDING = 0x08; + const GPUFlagsConstant RENDER_ATTACHMENT = 0x10; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUTextureView { +}; +GPUTextureView includes GPUObjectBase; + +dictionary GPUTextureViewDescriptor : GPUObjectDescriptorBase { + GPUTextureFormat format; + GPUTextureViewDimension dimension; + GPUTextureAspect aspect = "all"; + GPUIntegerCoordinate baseMipLevel = 0; + GPUIntegerCoordinate mipLevelCount; + GPUIntegerCoordinate baseArrayLayer = 0; + GPUIntegerCoordinate arrayLayerCount; +}; + +enum GPUTextureViewDimension { + "1d", + "2d", + "2d-array", + "cube", + "cube-array", + "3d" +}; + +enum GPUTextureAspect { + "all", + "stencil-only", + "depth-only" +}; + +enum GPUTextureFormat { + // 8-bit formats + "r8unorm", + "r8snorm", + "r8uint", + "r8sint", + + // 16-bit formats + "r16uint", + "r16sint", + "r16float", + "rg8unorm", + "rg8snorm", + "rg8uint", + "rg8sint", + + // 32-bit formats + "r32uint", + "r32sint", + "r32float", + "rg16uint", + "rg16sint", + "rg16float", + "rgba8unorm", + "rgba8unorm-srgb", + "rgba8snorm", + "rgba8uint", + "rgba8sint", + "bgra8unorm", + "bgra8unorm-srgb", + // Packed 32-bit formats + "rgb9e5ufloat", + "rgb10a2unorm", + "rg11b10ufloat", + + // 64-bit formats + "rg32uint", + "rg32sint", + "rg32float", + "rgba16uint", + "rgba16sint", + "rgba16float", + + // 128-bit formats + "rgba32uint", + "rgba32sint", + "rgba32float", + + // Depth/stencil formats + "stencil8", + "depth16unorm", + "depth24plus", + "depth24plus-stencil8", + "depth32float", + + // "depth32float-stencil8" feature + "depth32float-stencil8", + + // BC compressed formats usable if "texture-compression-bc" is both + // supported by the device/user agent and enabled in requestDevice. + "bc1-rgba-unorm", + "bc1-rgba-unorm-srgb", + "bc2-rgba-unorm", + "bc2-rgba-unorm-srgb", + "bc3-rgba-unorm", + "bc3-rgba-unorm-srgb", + "bc4-r-unorm", + "bc4-r-snorm", + "bc5-rg-unorm", + "bc5-rg-snorm", + "bc6h-rgb-ufloat", + "bc6h-rgb-float", + "bc7-rgba-unorm", + "bc7-rgba-unorm-srgb", + + // ETC2 compressed formats usable if "texture-compression-etc2" is both + // supported by the device/user agent and enabled in requestDevice. + "etc2-rgb8unorm", + "etc2-rgb8unorm-srgb", + "etc2-rgb8a1unorm", + "etc2-rgb8a1unorm-srgb", + "etc2-rgba8unorm", + "etc2-rgba8unorm-srgb", + "eac-r11unorm", + "eac-r11snorm", + "eac-rg11unorm", + "eac-rg11snorm", + + // ASTC compressed formats usable if "texture-compression-astc" is both + // supported by the device/user agent and enabled in requestDevice. + "astc-4x4-unorm", + "astc-4x4-unorm-srgb", + "astc-5x4-unorm", + "astc-5x4-unorm-srgb", + "astc-5x5-unorm", + "astc-5x5-unorm-srgb", + "astc-6x5-unorm", + "astc-6x5-unorm-srgb", + "astc-6x6-unorm", + "astc-6x6-unorm-srgb", + "astc-8x5-unorm", + "astc-8x5-unorm-srgb", + "astc-8x6-unorm", + "astc-8x6-unorm-srgb", + "astc-8x8-unorm", + "astc-8x8-unorm-srgb", + "astc-10x5-unorm", + "astc-10x5-unorm-srgb", + "astc-10x6-unorm", + "astc-10x6-unorm-srgb", + "astc-10x8-unorm", + "astc-10x8-unorm-srgb", + "astc-10x10-unorm", + "astc-10x10-unorm-srgb", + "astc-12x10-unorm", + "astc-12x10-unorm-srgb", + "astc-12x12-unorm", + "astc-12x12-unorm-srgb" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUExternalTexture { + readonly attribute boolean expired; +}; +GPUExternalTexture includes GPUObjectBase; + +dictionary GPUExternalTextureDescriptor : GPUObjectDescriptorBase { + required HTMLVideoElement source; + PredefinedColorSpace colorSpace = "srgb"; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUSampler { +}; +GPUSampler includes GPUObjectBase; + +dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase { + GPUAddressMode addressModeU = "clamp-to-edge"; + GPUAddressMode addressModeV = "clamp-to-edge"; + GPUAddressMode addressModeW = "clamp-to-edge"; + GPUFilterMode magFilter = "nearest"; + GPUFilterMode minFilter = "nearest"; + GPUMipmapFilterMode mipmapFilter = "nearest"; + float lodMinClamp = 0; + float lodMaxClamp = 32; + GPUCompareFunction compare; + [Clamp] unsigned short maxAnisotropy = 1; +}; + +enum GPUAddressMode { + "clamp-to-edge", + "repeat", + "mirror-repeat" +}; + +enum GPUFilterMode { + "nearest", + "linear" +}; + +enum GPUMipmapFilterMode { + "nearest", + "linear" +}; + +enum GPUCompareFunction { + "never", + "less", + "equal", + "less-equal", + "greater", + "not-equal", + "greater-equal", + "always" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUBindGroupLayout { +}; +GPUBindGroupLayout includes GPUObjectBase; + +dictionary GPUBindGroupLayoutDescriptor : GPUObjectDescriptorBase { + required sequence<GPUBindGroupLayoutEntry> entries; +}; + +dictionary GPUBindGroupLayoutEntry { + required GPUIndex32 binding; + required GPUShaderStageFlags visibility; + + GPUBufferBindingLayout buffer; + GPUSamplerBindingLayout sampler; + GPUTextureBindingLayout texture; + GPUStorageTextureBindingLayout storageTexture; + GPUExternalTextureBindingLayout externalTexture; +}; + +typedef [EnforceRange] unsigned long GPUShaderStageFlags; +[Exposed=(Window, DedicatedWorker)] +namespace GPUShaderStage { + const GPUFlagsConstant VERTEX = 0x1; + const GPUFlagsConstant FRAGMENT = 0x2; + const GPUFlagsConstant COMPUTE = 0x4; +}; + +enum GPUBufferBindingType { + "uniform", + "storage", + "read-only-storage" +}; + +dictionary GPUBufferBindingLayout { + GPUBufferBindingType type = "uniform"; + boolean hasDynamicOffset = false; + GPUSize64 minBindingSize = 0; +}; + +enum GPUSamplerBindingType { + "filtering", + "non-filtering", + "comparison" +}; + +dictionary GPUSamplerBindingLayout { + GPUSamplerBindingType type = "filtering"; +}; + +enum GPUTextureSampleType { + "float", + "unfilterable-float", + "depth", + "sint", + "uint" +}; + +dictionary GPUTextureBindingLayout { + GPUTextureSampleType sampleType = "float"; + GPUTextureViewDimension viewDimension = "2d"; + boolean multisampled = false; +}; + +enum GPUStorageTextureAccess { + "write-only" +}; + +dictionary GPUStorageTextureBindingLayout { + GPUStorageTextureAccess access = "write-only"; + required GPUTextureFormat format; + GPUTextureViewDimension viewDimension = "2d"; +}; + +dictionary GPUExternalTextureBindingLayout { +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUBindGroup { +}; +GPUBindGroup includes GPUObjectBase; + +dictionary GPUBindGroupDescriptor : GPUObjectDescriptorBase { + required GPUBindGroupLayout layout; + required sequence<GPUBindGroupEntry> entries; +}; + +typedef (GPUSampler or GPUTextureView or GPUBufferBinding or GPUExternalTexture) GPUBindingResource; + +dictionary GPUBindGroupEntry { + required GPUIndex32 binding; + required GPUBindingResource resource; +}; + +dictionary GPUBufferBinding { + required GPUBuffer buffer; + GPUSize64 offset = 0; + GPUSize64 size; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUPipelineLayout { +}; +GPUPipelineLayout includes GPUObjectBase; + +dictionary GPUPipelineLayoutDescriptor : GPUObjectDescriptorBase { + required sequence<GPUBindGroupLayout> bindGroupLayouts; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUShaderModule { + Promise<GPUCompilationInfo> compilationInfo(); +}; +GPUShaderModule includes GPUObjectBase; + +dictionary GPUShaderModuleDescriptor : GPUObjectDescriptorBase { + required USVString code; + object sourceMap; + record<USVString, GPUShaderModuleCompilationHint> hints; +}; + +dictionary GPUShaderModuleCompilationHint { + (GPUPipelineLayout or GPUAutoLayoutMode) layout; +}; + +enum GPUCompilationMessageType { + "error", + "warning", + "info" +}; + +[Exposed=(Window, DedicatedWorker), Serializable, SecureContext] +interface GPUCompilationMessage { + readonly attribute DOMString message; + readonly attribute GPUCompilationMessageType type; + readonly attribute unsigned long long lineNum; + readonly attribute unsigned long long linePos; + readonly attribute unsigned long long offset; + readonly attribute unsigned long long length; +}; + +[Exposed=(Window, DedicatedWorker), Serializable, SecureContext] +interface GPUCompilationInfo { + readonly attribute FrozenArray<GPUCompilationMessage> messages; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext, Serializable] +interface GPUPipelineError : DOMException { + constructor(DOMString message, GPUPipelineErrorInit options); + readonly attribute GPUPipelineErrorReason reason; +}; + +dictionary GPUPipelineErrorInit { + required GPUPipelineErrorReason reason; +}; + +enum GPUPipelineErrorReason { + "validation", + "internal" +}; + +enum GPUAutoLayoutMode { + "auto" +}; + +dictionary GPUPipelineDescriptorBase : GPUObjectDescriptorBase { + required (GPUPipelineLayout or GPUAutoLayoutMode) layout; +}; + +interface mixin GPUPipelineBase { + [NewObject] GPUBindGroupLayout getBindGroupLayout(unsigned long index); +}; + +dictionary GPUProgrammableStage { + required GPUShaderModule module; + required USVString entryPoint; + record<USVString, GPUPipelineConstantValue> constants; +}; + +typedef double GPUPipelineConstantValue; // May represent WGSL’s bool, f32, i32, u32, and f16 if enabled. + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUComputePipeline { +}; +GPUComputePipeline includes GPUObjectBase; +GPUComputePipeline includes GPUPipelineBase; + +dictionary GPUComputePipelineDescriptor : GPUPipelineDescriptorBase { + required GPUProgrammableStage compute; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPURenderPipeline { +}; +GPURenderPipeline includes GPUObjectBase; +GPURenderPipeline includes GPUPipelineBase; + +dictionary GPURenderPipelineDescriptor : GPUPipelineDescriptorBase { + required GPUVertexState vertex; + GPUPrimitiveState primitive = {}; + GPUDepthStencilState depthStencil; + GPUMultisampleState multisample = {}; + GPUFragmentState fragment; +}; + +dictionary GPUPrimitiveState { + GPUPrimitiveTopology topology = "triangle-list"; + GPUIndexFormat stripIndexFormat; + GPUFrontFace frontFace = "ccw"; + GPUCullMode cullMode = "none"; + + // Requires "depth-clip-control" feature. + boolean unclippedDepth = false; +}; + +enum GPUPrimitiveTopology { + "point-list", + "line-list", + "line-strip", + "triangle-list", + "triangle-strip" +}; + +enum GPUFrontFace { + "ccw", + "cw" +}; + +enum GPUCullMode { + "none", + "front", + "back" +}; + +dictionary GPUMultisampleState { + GPUSize32 count = 1; + GPUSampleMask mask = 0xFFFFFFFF; + boolean alphaToCoverageEnabled = false; +}; + +dictionary GPUFragmentState : GPUProgrammableStage { + required sequence<GPUColorTargetState?> targets; +}; + +dictionary GPUColorTargetState { + required GPUTextureFormat format; + + GPUBlendState blend; + GPUColorWriteFlags writeMask = 0xF; // GPUColorWrite.ALL +}; + +dictionary GPUBlendState { + required GPUBlendComponent color; + required GPUBlendComponent alpha; +}; + +typedef [EnforceRange] unsigned long GPUColorWriteFlags; +[Exposed=(Window, DedicatedWorker)] +namespace GPUColorWrite { + const GPUFlagsConstant RED = 0x1; + const GPUFlagsConstant GREEN = 0x2; + const GPUFlagsConstant BLUE = 0x4; + const GPUFlagsConstant ALPHA = 0x8; + const GPUFlagsConstant ALL = 0xF; +}; + +dictionary GPUBlendComponent { + GPUBlendOperation operation = "add"; + GPUBlendFactor srcFactor = "one"; + GPUBlendFactor dstFactor = "zero"; +}; + +enum GPUBlendFactor { + "zero", + "one", + "src", + "one-minus-src", + "src-alpha", + "one-minus-src-alpha", + "dst", + "one-minus-dst", + "dst-alpha", + "one-minus-dst-alpha", + "src-alpha-saturated", + "constant", + "one-minus-constant" +}; + +enum GPUBlendOperation { + "add", + "subtract", + "reverse-subtract", + "min", + "max" +}; + +dictionary GPUDepthStencilState { + required GPUTextureFormat format; + + boolean depthWriteEnabled = false; + GPUCompareFunction depthCompare = "always"; + + GPUStencilFaceState stencilFront = {}; + GPUStencilFaceState stencilBack = {}; + + GPUStencilValue stencilReadMask = 0xFFFFFFFF; + GPUStencilValue stencilWriteMask = 0xFFFFFFFF; + + GPUDepthBias depthBias = 0; + float depthBiasSlopeScale = 0; + float depthBiasClamp = 0; +}; + +dictionary GPUStencilFaceState { + GPUCompareFunction compare = "always"; + GPUStencilOperation failOp = "keep"; + GPUStencilOperation depthFailOp = "keep"; + GPUStencilOperation passOp = "keep"; +}; + +enum GPUStencilOperation { + "keep", + "zero", + "replace", + "invert", + "increment-clamp", + "decrement-clamp", + "increment-wrap", + "decrement-wrap" +}; + +enum GPUIndexFormat { + "uint16", + "uint32" +}; + +enum GPUVertexFormat { + "uint8x2", + "uint8x4", + "sint8x2", + "sint8x4", + "unorm8x2", + "unorm8x4", + "snorm8x2", + "snorm8x4", + "uint16x2", + "uint16x4", + "sint16x2", + "sint16x4", + "unorm16x2", + "unorm16x4", + "snorm16x2", + "snorm16x4", + "float16x2", + "float16x4", + "float32", + "float32x2", + "float32x3", + "float32x4", + "uint32", + "uint32x2", + "uint32x3", + "uint32x4", + "sint32", + "sint32x2", + "sint32x3", + "sint32x4" +}; + +enum GPUVertexStepMode { + "vertex", + "instance" +}; + +dictionary GPUVertexState : GPUProgrammableStage { + sequence<GPUVertexBufferLayout?> buffers = []; +}; + +dictionary GPUVertexBufferLayout { + required GPUSize64 arrayStride; + GPUVertexStepMode stepMode = "vertex"; + required sequence<GPUVertexAttribute> attributes; +}; + +dictionary GPUVertexAttribute { + required GPUVertexFormat format; + required GPUSize64 offset; + + required GPUIndex32 shaderLocation; +}; + +dictionary GPUImageDataLayout { + GPUSize64 offset = 0; + GPUSize32 bytesPerRow; + GPUSize32 rowsPerImage; +}; + +dictionary GPUImageCopyBuffer : GPUImageDataLayout { + required GPUBuffer buffer; +}; + +dictionary GPUImageCopyTexture { + required GPUTexture texture; + GPUIntegerCoordinate mipLevel = 0; + GPUOrigin3D origin = {}; + GPUTextureAspect aspect = "all"; +}; + +dictionary GPUImageCopyTextureTagged : GPUImageCopyTexture { + PredefinedColorSpace colorSpace = "srgb"; + boolean premultipliedAlpha = false; +}; + +dictionary GPUImageCopyExternalImage { + required (ImageBitmap or HTMLVideoElement or HTMLCanvasElement or OffscreenCanvas) source; + GPUOrigin2D origin = {}; + boolean flipY = false; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUCommandBuffer { +}; +GPUCommandBuffer includes GPUObjectBase; + +dictionary GPUCommandBufferDescriptor : GPUObjectDescriptorBase { +}; + +interface mixin GPUCommandsMixin { +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUCommandEncoder { + GPURenderPassEncoder beginRenderPass(GPURenderPassDescriptor descriptor); + GPUComputePassEncoder beginComputePass(optional GPUComputePassDescriptor descriptor = {}); + + undefined copyBufferToBuffer( + GPUBuffer source, + GPUSize64 sourceOffset, + GPUBuffer destination, + GPUSize64 destinationOffset, + GPUSize64 size); + + undefined copyBufferToTexture( + GPUImageCopyBuffer source, + GPUImageCopyTexture destination, + GPUExtent3D copySize); + + undefined copyTextureToBuffer( + GPUImageCopyTexture source, + GPUImageCopyBuffer destination, + GPUExtent3D copySize); + + undefined copyTextureToTexture( + GPUImageCopyTexture source, + GPUImageCopyTexture destination, + GPUExtent3D copySize); + + undefined clearBuffer( + GPUBuffer buffer, + optional GPUSize64 offset = 0, + optional GPUSize64 size); + + undefined writeTimestamp(GPUQuerySet querySet, GPUSize32 queryIndex); + + undefined resolveQuerySet( + GPUQuerySet querySet, + GPUSize32 firstQuery, + GPUSize32 queryCount, + GPUBuffer destination, + GPUSize64 destinationOffset); + + GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {}); +}; +GPUCommandEncoder includes GPUObjectBase; +GPUCommandEncoder includes GPUCommandsMixin; +GPUCommandEncoder includes GPUDebugCommandsMixin; + +dictionary GPUCommandEncoderDescriptor : GPUObjectDescriptorBase { +}; + +interface mixin GPUBindingCommandsMixin { + undefined setBindGroup(GPUIndex32 index, GPUBindGroup bindGroup, + optional sequence<GPUBufferDynamicOffset> dynamicOffsets = []); + + undefined setBindGroup(GPUIndex32 index, GPUBindGroup bindGroup, + Uint32Array dynamicOffsetsData, + GPUSize64 dynamicOffsetsDataStart, + GPUSize32 dynamicOffsetsDataLength); +}; + +interface mixin GPUDebugCommandsMixin { + undefined pushDebugGroup(USVString groupLabel); + undefined popDebugGroup(); + undefined insertDebugMarker(USVString markerLabel); +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUComputePassEncoder { + undefined setPipeline(GPUComputePipeline pipeline); + undefined dispatchWorkgroups(GPUSize32 workgroupCountX, optional GPUSize32 workgroupCountY = 1, optional GPUSize32 workgroupCountZ = 1); + undefined dispatchWorkgroupsIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset); + + undefined end(); +}; +GPUComputePassEncoder includes GPUObjectBase; +GPUComputePassEncoder includes GPUCommandsMixin; +GPUComputePassEncoder includes GPUDebugCommandsMixin; +GPUComputePassEncoder includes GPUBindingCommandsMixin; + +enum GPUComputePassTimestampLocation { + "beginning", + "end" +}; + +dictionary GPUComputePassTimestampWrite { + required GPUQuerySet querySet; + required GPUSize32 queryIndex; + required GPUComputePassTimestampLocation location; +}; + +typedef sequence<GPUComputePassTimestampWrite> GPUComputePassTimestampWrites; + +dictionary GPUComputePassDescriptor : GPUObjectDescriptorBase { + GPUComputePassTimestampWrites timestampWrites = []; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPURenderPassEncoder { + undefined setViewport(float x, float y, + float width, float height, + float minDepth, float maxDepth); + + undefined setScissorRect(GPUIntegerCoordinate x, GPUIntegerCoordinate y, + GPUIntegerCoordinate width, GPUIntegerCoordinate height); + + undefined setBlendConstant(GPUColor color); + undefined setStencilReference(GPUStencilValue reference); + + undefined beginOcclusionQuery(GPUSize32 queryIndex); + undefined endOcclusionQuery(); + + undefined executeBundles(sequence<GPURenderBundle> bundles); + undefined end(); +}; +GPURenderPassEncoder includes GPUObjectBase; +GPURenderPassEncoder includes GPUCommandsMixin; +GPURenderPassEncoder includes GPUDebugCommandsMixin; +GPURenderPassEncoder includes GPUBindingCommandsMixin; +GPURenderPassEncoder includes GPURenderCommandsMixin; + +enum GPURenderPassTimestampLocation { + "beginning", + "end" +}; + +dictionary GPURenderPassTimestampWrite { + required GPUQuerySet querySet; + required GPUSize32 queryIndex; + required GPURenderPassTimestampLocation location; +}; + +typedef sequence<GPURenderPassTimestampWrite> GPURenderPassTimestampWrites; + +dictionary GPURenderPassDescriptor : GPUObjectDescriptorBase { + required sequence<GPURenderPassColorAttachment?> colorAttachments; + GPURenderPassDepthStencilAttachment depthStencilAttachment; + GPUQuerySet occlusionQuerySet; + GPURenderPassTimestampWrites timestampWrites = []; + GPUSize64 maxDrawCount = 50000000; +}; + +dictionary GPURenderPassColorAttachment { + required GPUTextureView view; + GPUTextureView resolveTarget; + + GPUColor clearValue; + required GPULoadOp loadOp; + required GPUStoreOp storeOp; +}; + +dictionary GPURenderPassDepthStencilAttachment { + required GPUTextureView view; + + float depthClearValue = 0; + GPULoadOp depthLoadOp; + GPUStoreOp depthStoreOp; + boolean depthReadOnly = false; + + GPUStencilValue stencilClearValue = 0; + GPULoadOp stencilLoadOp; + GPUStoreOp stencilStoreOp; + boolean stencilReadOnly = false; +}; + +enum GPULoadOp { + "load", + "clear" +}; + +enum GPUStoreOp { + "store", + "discard" +}; + +dictionary GPURenderPassLayout : GPUObjectDescriptorBase { + required sequence<GPUTextureFormat?> colorFormats; + GPUTextureFormat depthStencilFormat; + GPUSize32 sampleCount = 1; +}; + +interface mixin GPURenderCommandsMixin { + undefined setPipeline(GPURenderPipeline pipeline); + + undefined setIndexBuffer(GPUBuffer buffer, GPUIndexFormat indexFormat, optional GPUSize64 offset = 0, optional GPUSize64 size); + undefined setVertexBuffer(GPUIndex32 slot, GPUBuffer buffer, optional GPUSize64 offset = 0, optional GPUSize64 size); + + undefined draw(GPUSize32 vertexCount, optional GPUSize32 instanceCount = 1, + optional GPUSize32 firstVertex = 0, optional GPUSize32 firstInstance = 0); + undefined drawIndexed(GPUSize32 indexCount, optional GPUSize32 instanceCount = 1, + optional GPUSize32 firstIndex = 0, + optional GPUSignedOffset32 baseVertex = 0, + optional GPUSize32 firstInstance = 0); + + undefined drawIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset); + undefined drawIndexedIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset); +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPURenderBundle { +}; +GPURenderBundle includes GPUObjectBase; + +dictionary GPURenderBundleDescriptor : GPUObjectDescriptorBase { +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPURenderBundleEncoder { + GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor = {}); +}; +GPURenderBundleEncoder includes GPUObjectBase; +GPURenderBundleEncoder includes GPUCommandsMixin; +GPURenderBundleEncoder includes GPUDebugCommandsMixin; +GPURenderBundleEncoder includes GPUBindingCommandsMixin; +GPURenderBundleEncoder includes GPURenderCommandsMixin; + +dictionary GPURenderBundleEncoderDescriptor : GPURenderPassLayout { + boolean depthReadOnly = false; + boolean stencilReadOnly = false; +}; + +dictionary GPUQueueDescriptor : GPUObjectDescriptorBase { +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUQueue { + undefined submit(sequence<GPUCommandBuffer> commandBuffers); + + Promise<undefined> onSubmittedWorkDone(); + + undefined writeBuffer( + GPUBuffer buffer, + GPUSize64 bufferOffset, + [AllowShared] BufferSource data, + optional GPUSize64 dataOffset = 0, + optional GPUSize64 size); + + undefined writeTexture( + GPUImageCopyTexture destination, + [AllowShared] BufferSource data, + GPUImageDataLayout dataLayout, + GPUExtent3D size); + + undefined copyExternalImageToTexture( + GPUImageCopyExternalImage source, + GPUImageCopyTextureTagged destination, + GPUExtent3D copySize); +}; +GPUQueue includes GPUObjectBase; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUQuerySet { + undefined destroy(); + + readonly attribute GPUQueryType type; + readonly attribute GPUSize32 count; +}; +GPUQuerySet includes GPUObjectBase; + +dictionary GPUQuerySetDescriptor : GPUObjectDescriptorBase { + required GPUQueryType type; + required GPUSize32 count; +}; + +enum GPUQueryType { + "occlusion", + "timestamp" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUCanvasContext { + readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas; + + undefined configure(GPUCanvasConfiguration configuration); + undefined unconfigure(); + + GPUTexture getCurrentTexture(); +}; + +enum GPUCanvasAlphaMode { + "opaque", + "premultiplied" +}; + +dictionary GPUCanvasConfiguration { + required GPUDevice device; + required GPUTextureFormat format; + GPUTextureUsageFlags usage = 0x10; // GPUTextureUsage.RENDER_ATTACHMENT + sequence<GPUTextureFormat> viewFormats = []; + PredefinedColorSpace colorSpace = "srgb"; + GPUCanvasAlphaMode alphaMode = "opaque"; +}; + +enum GPUDeviceLostReason { + "destroyed" +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUDeviceLostInfo { + readonly attribute (GPUDeviceLostReason or undefined) reason; + readonly attribute DOMString message; +}; + +partial interface GPUDevice { + readonly attribute Promise<GPUDeviceLostInfo> lost; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUError { + readonly attribute DOMString message; +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUValidationError : GPUError { + constructor(DOMString message); +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUOutOfMemoryError : GPUError { + constructor(DOMString message); +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUInternalError : GPUError { + constructor(DOMString message); +}; + +enum GPUErrorFilter { + "validation", + "out-of-memory", + "internal" +}; + +partial interface GPUDevice { + undefined pushErrorScope(GPUErrorFilter filter); + Promise<GPUError?> popErrorScope(); +}; + +[Exposed=(Window, DedicatedWorker), SecureContext] +interface GPUUncapturedErrorEvent : Event { + constructor( + DOMString type, + GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict + ); + [SameObject] readonly attribute GPUError error; +}; + +dictionary GPUUncapturedErrorEventInit : EventInit { + required GPUError error; +}; + +partial interface GPUDevice { + [Exposed=(Window, DedicatedWorker)] + attribute EventHandler onuncapturederror; +}; + +typedef [EnforceRange] unsigned long GPUBufferDynamicOffset; +typedef [EnforceRange] unsigned long GPUStencilValue; +typedef [EnforceRange] unsigned long GPUSampleMask; +typedef [EnforceRange] long GPUDepthBias; + +typedef [EnforceRange] unsigned long long GPUSize64; +typedef [EnforceRange] unsigned long GPUIntegerCoordinate; +typedef [EnforceRange] unsigned long GPUIndex32; +typedef [EnforceRange] unsigned long GPUSize32; +typedef [EnforceRange] long GPUSignedOffset32; + +typedef unsigned long GPUFlagsConstant; + +dictionary GPUColorDict { + required double r; + required double g; + required double b; + required double a; +}; +typedef (sequence<double> or GPUColorDict) GPUColor; + +dictionary GPUOrigin2DDict { + GPUIntegerCoordinate x = 0; + GPUIntegerCoordinate y = 0; +}; +typedef (sequence<GPUIntegerCoordinate> or GPUOrigin2DDict) GPUOrigin2D; + +dictionary GPUOrigin3DDict { + GPUIntegerCoordinate x = 0; + GPUIntegerCoordinate y = 0; + GPUIntegerCoordinate z = 0; +}; +typedef (sequence<GPUIntegerCoordinate> or GPUOrigin3DDict) GPUOrigin3D; + +dictionary GPUExtent3DDict { + required GPUIntegerCoordinate width; + GPUIntegerCoordinate height = 1; + GPUIntegerCoordinate depthOrArrayLayers = 1; +}; +typedef (sequence<GPUIntegerCoordinate> or GPUExtent3DDict) GPUExtent3D; diff --git a/testing/web-platform/tests/interfaces/webhid.idl b/testing/web-platform/tests/interfaces/webhid.idl new file mode 100644 index 0000000000..a1a02d3e43 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webhid.idl @@ -0,0 +1,127 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebHID API (https://wicg.github.io/webhid/) + +[SecureContext] partial interface Navigator { + [SameObject] readonly attribute HID hid; +}; + +[Exposed=ServiceWorker, SecureContext] +partial interface WorkerNavigator { + [SameObject] readonly attribute HID hid; +}; + +[Exposed=(Window,ServiceWorker), SecureContext] +interface HID : EventTarget { + attribute EventHandler onconnect; + attribute EventHandler ondisconnect; + Promise<sequence<HIDDevice>> getDevices(); + Promise<sequence<HIDDevice>> requestDevice( + HIDDeviceRequestOptions options); +}; + +dictionary HIDDeviceRequestOptions { + required sequence<HIDDeviceFilter> filters; + sequence<HIDDeviceFilter> exclusionFilters; +}; + +dictionary HIDDeviceFilter { + unsigned long vendorId; + unsigned short productId; + unsigned short usagePage; + unsigned short usage; +}; + +[Exposed=Window, SecureContext] +interface HIDDevice : EventTarget { + attribute EventHandler oninputreport; + readonly attribute boolean opened; + readonly attribute unsigned short vendorId; + readonly attribute unsigned short productId; + readonly attribute DOMString productName; + readonly attribute FrozenArray<HIDCollectionInfo> collections; + Promise<undefined> open(); + Promise<undefined> close(); + Promise<undefined> forget(); + Promise<undefined> sendReport([EnforceRange] octet reportId, BufferSource data); + Promise<undefined> sendFeatureReport( + [EnforceRange] octet reportId, + BufferSource data); + Promise<DataView> receiveFeatureReport([EnforceRange] octet reportId); +}; + +[Exposed=Window, SecureContext] +interface HIDConnectionEvent : Event { + constructor(DOMString type, HIDConnectionEventInit eventInitDict); + [SameObject] readonly attribute HIDDevice device; +}; + +dictionary HIDConnectionEventInit : EventInit { + required HIDDevice device; +}; + +[Exposed=Window, SecureContext] +interface HIDInputReportEvent : Event { + constructor(DOMString type, HIDInputReportEventInit eventInitDict); + [SameObject] readonly attribute HIDDevice device; + readonly attribute octet reportId; + readonly attribute DataView data; +}; + +dictionary HIDInputReportEventInit : EventInit { + required HIDDevice device; + required octet reportId; + required DataView data; +}; + +dictionary HIDCollectionInfo { + unsigned short usagePage; + unsigned short usage; + octet type; + sequence<HIDCollectionInfo> children; + sequence<HIDReportInfo> inputReports; + sequence<HIDReportInfo> outputReports; + sequence<HIDReportInfo> featureReports; +}; + +dictionary HIDReportInfo { + octet reportId; + sequence<HIDReportItem> items; +}; + +dictionary HIDReportItem { + boolean isAbsolute; + boolean isArray; + boolean isBufferedBytes; + boolean isConstant; + boolean isLinear; + boolean isRange; + boolean isVolatile; + boolean hasNull; + boolean hasPreferredState; + boolean wrap; + sequence<unsigned long> usages; + unsigned long usageMinimum; + unsigned long usageMaximum; + unsigned short reportSize; + unsigned short reportCount; + byte unitExponent; + HIDUnitSystem unitSystem; + byte unitFactorLengthExponent; + byte unitFactorMassExponent; + byte unitFactorTimeExponent; + byte unitFactorTemperatureExponent; + byte unitFactorCurrentExponent; + byte unitFactorLuminousIntensityExponent; + long logicalMinimum; + long logicalMaximum; + long physicalMinimum; + long physicalMaximum; + sequence<DOMString> strings; +}; + +enum HIDUnitSystem { + "none", "si-linear", "si-rotation", "english-linear", + "english-rotation", "vendor-defined", "reserved" +}; diff --git a/testing/web-platform/tests/interfaces/webidl.idl b/testing/web-platform/tests/interfaces/webidl.idl new file mode 100644 index 0000000000..9993673361 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webidl.idl @@ -0,0 +1,50 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web IDL Standard (https://webidl.spec.whatwg.org/) + +typedef (Int8Array or Int16Array or Int32Array or + Uint8Array or Uint16Array or Uint32Array or Uint8ClampedArray or + BigInt64Array or BigUint64Array or + Float32Array or Float64Array or DataView) ArrayBufferView; + +typedef (ArrayBufferView or ArrayBuffer) BufferSource; +[Exposed=*, + Serializable] +interface DOMException { // but see below note about ECMAScript binding + constructor(optional DOMString message = "", optional DOMString name = "Error"); + readonly attribute DOMString name; + readonly attribute DOMString message; + readonly attribute unsigned short code; + + const unsigned short INDEX_SIZE_ERR = 1; + const unsigned short DOMSTRING_SIZE_ERR = 2; + const unsigned short HIERARCHY_REQUEST_ERR = 3; + const unsigned short WRONG_DOCUMENT_ERR = 4; + const unsigned short INVALID_CHARACTER_ERR = 5; + const unsigned short NO_DATA_ALLOWED_ERR = 6; + const unsigned short NO_MODIFICATION_ALLOWED_ERR = 7; + const unsigned short NOT_FOUND_ERR = 8; + const unsigned short NOT_SUPPORTED_ERR = 9; + const unsigned short INUSE_ATTRIBUTE_ERR = 10; + const unsigned short INVALID_STATE_ERR = 11; + const unsigned short SYNTAX_ERR = 12; + const unsigned short INVALID_MODIFICATION_ERR = 13; + const unsigned short NAMESPACE_ERR = 14; + const unsigned short INVALID_ACCESS_ERR = 15; + const unsigned short VALIDATION_ERR = 16; + const unsigned short TYPE_MISMATCH_ERR = 17; + const unsigned short SECURITY_ERR = 18; + const unsigned short NETWORK_ERR = 19; + const unsigned short ABORT_ERR = 20; + const unsigned short URL_MISMATCH_ERR = 21; + const unsigned short QUOTA_EXCEEDED_ERR = 22; + const unsigned short TIMEOUT_ERR = 23; + const unsigned short INVALID_NODE_TYPE_ERR = 24; + const unsigned short DATA_CLONE_ERR = 25; +}; + +callback Function = any (any... arguments); +callback VoidFunction = undefined (); + +typedef unsigned long long DOMTimeStamp; diff --git a/testing/web-platform/tests/interfaces/webmidi.idl b/testing/web-platform/tests/interfaces/webmidi.idl new file mode 100644 index 0000000000..1acf1ac1d4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webmidi.idl @@ -0,0 +1,91 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web MIDI API (https://webaudio.github.io/web-midi-api/) + +dictionary MidiPermissionDescriptor : PermissionDescriptor { + boolean sysex = false; +}; + +partial interface Navigator { + [SecureContext] + Promise <MIDIAccess> requestMIDIAccess(optional MIDIOptions options = {}); +}; + +dictionary MIDIOptions { + boolean sysex; + boolean software; +}; + +[SecureContext, Exposed=Window] interface MIDIInputMap { + readonly maplike <DOMString, MIDIInput>; +}; + +[SecureContext, Exposed=Window] interface MIDIOutputMap { + readonly maplike <DOMString, MIDIOutput>; +}; + +[SecureContext, Exposed=Window] interface MIDIAccess: EventTarget { + readonly attribute MIDIInputMap inputs; + readonly attribute MIDIOutputMap outputs; + attribute EventHandler onstatechange; + readonly attribute boolean sysexEnabled; +}; + +[SecureContext, Exposed=Window] interface MIDIPort: EventTarget { + readonly attribute DOMString id; + readonly attribute DOMString? manufacturer; + readonly attribute DOMString? name; + readonly attribute MIDIPortType type; + readonly attribute DOMString? version; + readonly attribute MIDIPortDeviceState state; + readonly attribute MIDIPortConnectionState connection; + attribute EventHandler onstatechange; + Promise <MIDIPort> open(); + Promise <MIDIPort> close(); +}; + +[SecureContext, Exposed=Window] interface MIDIInput: MIDIPort { + attribute EventHandler onmidimessage; +}; + +[SecureContext, Exposed=Window] interface MIDIOutput : MIDIPort { + undefined send(sequence<octet> data, optional DOMHighResTimeStamp timestamp = 0); + undefined clear(); +}; + +enum MIDIPortType { + "input", + "output", +}; + +enum MIDIPortDeviceState { + "disconnected", + "connected", +}; + +enum MIDIPortConnectionState { + "open", + "closed", + "pending", +}; + +[SecureContext, Exposed=Window] +interface MIDIMessageEvent : Event { + constructor(DOMString type, optional MIDIMessageEventInit eventInitDict = {}); + readonly attribute Uint8Array data; +}; + +dictionary MIDIMessageEventInit: EventInit { + Uint8Array data; +}; + +[SecureContext, Exposed=Window] +interface MIDIConnectionEvent : Event { + constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict = {}); + readonly attribute MIDIPort port; +}; + +dictionary MIDIConnectionEventInit: EventInit { + MIDIPort port; +}; diff --git a/testing/web-platform/tests/interfaces/webnn.idl b/testing/web-platform/tests/interfaces/webnn.idl new file mode 100644 index 0000000000..c8a09aed9e --- /dev/null +++ b/testing/web-platform/tests/interfaces/webnn.idl @@ -0,0 +1,497 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Web Neural Network API (https://webmachinelearning.github.io/webnn/) + +interface mixin NavigatorML { + [SecureContext, SameObject] readonly attribute ML ml; +}; +Navigator includes NavigatorML; +WorkerNavigator includes NavigatorML; + +enum MLDeviceType { + "cpu", + "gpu" +}; + +enum MLPowerPreference { + "default", + "high-performance", + "low-power" +}; + +dictionary MLContextOptions { + MLDeviceType deviceType = "cpu"; + MLPowerPreference powerPreference = "default"; +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface ML { + Promise<MLContext> createContext(optional MLContextOptions options = {}); + Promise<MLContext> createContext(GPUDevice gpuDevice); + + [Exposed=(DedicatedWorker)] + MLContext createContextSync(optional MLContextOptions options = {}); + [Exposed=(DedicatedWorker)] + MLContext createContextSync(GPUDevice gpuDevice); +}; + +typedef record<DOMString, ArrayBufferView> MLNamedArrayBufferViews; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLContext {}; + +partial interface MLContext { + [Exposed=(DedicatedWorker)] + undefined computeSync( + MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); +}; + +partial interface MLContext { + Promise<undefined> compute( + MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); +}; + +partial interface MLContext { + MLCommandEncoder createCommandEncoder(); +}; + +enum MLInputOperandLayout { + "nchw", + "nhwc" +}; + +enum MLOperandType { + "float32", + "float16", + "int32", + "uint32", + "int8", + "uint8" +}; + +dictionary MLOperandDescriptor { + // The operand type. + required MLOperandType type; + + // The dimensions field is only required for tensor operands. + sequence<unsigned long> dimensions; +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLOperand {}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLOperator {}; + +typedef record<DOMString, MLOperand> MLNamedOperands; + +dictionary MLBufferResourceView { + required GPUBuffer resource; + unsigned long long offset = 0; + unsigned long long size; +}; + +typedef (ArrayBufferView or MLBufferResourceView) MLBufferView; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLGraphBuilder { + // Construct the graph builder from the context. + constructor(MLContext context); + + // Create an operand for a graph input. + MLOperand input(DOMString name, MLOperandDescriptor desc); + + // Create an operand for a graph constant. + MLOperand constant(MLOperandDescriptor desc, MLBufferView bufferView); + + // Create a single-value operand from the specified number of the specified type. + MLOperand constant(double value, optional MLOperandType type = "float32"); + + // Compile the graph up to the specified output operands asynchronously. + Promise<MLGraph> build(MLNamedOperands outputs); + + // Compile the graph up to the specified output operands synchronously. + [Exposed=(DedicatedWorker)] + MLGraph buildSync(MLNamedOperands outputs); +}; + +dictionary MLBatchNormalizationOptions { + MLOperand scale; + MLOperand bias; + long axis = 1; + float epsilon = 1e-5; + MLOperator activation; +}; + +partial interface MLGraphBuilder { + MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, + optional MLBatchNormalizationOptions options = {}); +}; + +dictionary MLClampOptions { + float minValue; + float maxValue; +}; + +partial interface MLGraphBuilder { + MLOperand clamp(MLOperand x, optional MLClampOptions options = {}); + MLOperator clamp(optional MLClampOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand concat(sequence<MLOperand> inputs, long axis); +}; + +enum MLConv2dFilterOperandLayout { + "oihw", + "hwio", + "ohwi", + "ihwo" +}; + +enum MLAutoPad { + "explicit", + "same-upper", + "same-lower" +}; + +dictionary MLConv2dOptions { + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + MLAutoPad autoPad = "explicit"; + unsigned long groups = 1; + MLInputOperandLayout inputLayout = "nchw"; + MLConv2dFilterOperandLayout filterLayout = "oihw"; + MLOperand bias; + MLOperator activation; +}; + +partial interface MLGraphBuilder { + MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); +}; + +enum MLConvTranspose2dFilterOperandLayout { + "iohw", + "hwoi", + "ohwi" +}; + +dictionary MLConvTranspose2dOptions { + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + sequence<unsigned long> outputPadding; + sequence<unsigned long> outputSizes; + MLAutoPad autoPad = "explicit"; + unsigned long groups = 1; + MLInputOperandLayout inputLayout = "nchw"; + MLConvTranspose2dFilterOperandLayout filterLayout = "iohw"; + MLOperand bias; + MLOperator activation; +}; + +partial interface MLGraphBuilder { + MLOperand convTranspose2d(MLOperand input, MLOperand filter, + optional MLConvTranspose2dOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand add(MLOperand a, MLOperand b); + MLOperand sub(MLOperand a, MLOperand b); + MLOperand mul(MLOperand a, MLOperand b); + MLOperand div(MLOperand a, MLOperand b); + MLOperand max(MLOperand a, MLOperand b); + MLOperand min(MLOperand a, MLOperand b); + MLOperand pow(MLOperand a, MLOperand b); +}; + +partial interface MLGraphBuilder { + MLOperand abs(MLOperand x); + MLOperand ceil(MLOperand x); + MLOperand cos(MLOperand x); + MLOperand exp(MLOperand x); + MLOperand floor(MLOperand x); + MLOperand log(MLOperand x); + MLOperand neg(MLOperand x); + MLOperand sin(MLOperand x); + MLOperand tan(MLOperand x); +}; + +dictionary MLEluOptions { + float alpha = 1; +}; + +partial interface MLGraphBuilder { + MLOperand elu(MLOperand x, optional MLEluOptions options = {}); + MLOperator elu(optional MLEluOptions options = {}); +}; + +dictionary MLGemmOptions { + MLOperand c; + float alpha = 1.0; + float beta = 1.0; + boolean aTranspose = false; + boolean bTranspose = false; +}; + +partial interface MLGraphBuilder { + MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); +}; + +enum MLRecurrentNetworkWeightLayout { + "zrn", // update-reset-new gate ordering + "rzn" // reset-update-new gate ordering +}; + +enum MLRecurrentNetworkDirection { + "forward", + "backward", + "both" +}; + +dictionary MLGruOptions { + MLOperand bias; + MLOperand recurrentBias; + MLOperand initialHiddenState; + boolean resetAfter = true; + boolean returnSequence = false; + MLRecurrentNetworkDirection direction = "forward"; + MLRecurrentNetworkWeightLayout layout = "zrn"; + sequence<MLOperator> activations; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> gru(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + long steps, long hiddenSize, optional MLGruOptions options = {}); +}; + +dictionary MLGruCellOptions { + MLOperand bias; + MLOperand recurrentBias; + boolean resetAfter = true; + MLRecurrentNetworkWeightLayout layout = "zrn"; + sequence<MLOperator> activations; +}; + +partial interface MLGraphBuilder { + MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, + MLOperand hiddenState, long hiddenSize, optional MLGruCellOptions options = {}); +}; + +dictionary MLHardSigmoidOptions { + float alpha = 0.2; + float beta = 0.5; +}; + +partial interface MLGraphBuilder { + MLOperand hardSigmoid(MLOperand x, optional MLHardSigmoidOptions options = {}); + MLOperator hardSigmoid(optional MLHardSigmoidOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand hardSwish(MLOperand x); + MLOperator hardSwish(); +}; + +dictionary MLInstanceNormalizationOptions { + MLOperand scale; + MLOperand bias; + float epsilon = 1e-5; + MLInputOperandLayout layout = "nchw"; +}; + +partial interface MLGraphBuilder { + MLOperand instanceNormalization(MLOperand input, + optional MLInstanceNormalizationOptions options = {}); +}; + +dictionary MLLeakyReluOptions { + float alpha = 0.01; +}; + +partial interface MLGraphBuilder { + MLOperand leakyRelu(MLOperand x, optional MLLeakyReluOptions options = {}); + MLOperator leakyRelu(optional MLLeakyReluOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand matmul(MLOperand a, MLOperand b); +}; + +dictionary MLLinearOptions { + float alpha = 1; + float beta = 0; +}; + +partial interface MLGraphBuilder { + MLOperand linear(MLOperand x, optional MLLinearOptions options = {}); + MLOperator linear(optional MLLinearOptions options = {}); +}; + +enum MLPaddingMode { + "constant", + "edge", + "reflection", + "symmetric" +}; + +dictionary MLPadOptions { + MLPaddingMode mode = "constant"; + float value = 0; +}; + +partial interface MLGraphBuilder { + MLOperand pad(MLOperand input, MLOperand padding, optional MLPadOptions options = {}); +}; + +enum MLRoundingType { + "floor", + "ceil" +}; + +dictionary MLPool2dOptions { + sequence<unsigned long> windowDimensions; + sequence<unsigned long> padding; + sequence<unsigned long> strides; + sequence<unsigned long> dilations; + MLAutoPad autoPad = "explicit"; + MLInputOperandLayout layout = "nchw"; + MLRoundingType roundingType = "floor"; + sequence<unsigned long> outputSizes; +}; + +partial interface MLGraphBuilder { + MLOperand averagePool2d(MLOperand input, optional MLPool2dOptions options = {}); + MLOperand l2Pool2d(MLOperand input, optional MLPool2dOptions options = {}); + MLOperand maxPool2d(MLOperand input, optional MLPool2dOptions options = {}); +}; + +dictionary MLReduceOptions { + sequence<long> axes = null; + boolean keepDimensions = false; +}; + +partial interface MLGraphBuilder { + MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceLogSumExp(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMax(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMean(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceMin(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceProduct(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {}); + MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand relu(MLOperand x); + MLOperator relu(); +}; + +enum MLInterpolationMode { + "nearest-neighbor", + "linear" +}; + +dictionary MLResample2dOptions { + MLInterpolationMode mode = "nearest-neighbor"; + sequence<float> scales; + sequence<unsigned long> sizes; + sequence<long> axes; +}; + +partial interface MLGraphBuilder { + MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand reshape(MLOperand input, sequence<unsigned long?> newShape); +}; + +partial interface MLGraphBuilder { + MLOperand sigmoid(MLOperand x); + MLOperator sigmoid(); +}; + +dictionary MLSliceOptions { + sequence<long> axes; +}; + +partial interface MLGraphBuilder { + MLOperand slice(MLOperand input, sequence<long> starts, sequence<long> sizes, + optional MLSliceOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand softmax(MLOperand x); +}; + +dictionary MLSoftplusOptions { + float steepness = 1; +}; + +partial interface MLGraphBuilder { + MLOperand softplus(MLOperand x, optional MLSoftplusOptions options = {}); + MLOperator softplus(optional MLSoftplusOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand softsign(MLOperand x); + MLOperator softsign(); +}; + +dictionary MLSplitOptions { + long axis = 0; +}; + +partial interface MLGraphBuilder { + sequence<MLOperand> split(MLOperand input, + (unsigned long or sequence<unsigned long>) splits, + optional MLSplitOptions options = {}); +}; + +dictionary MLSqueezeOptions { + sequence<long> axes; +}; + +partial interface MLGraphBuilder { + MLOperand squeeze(MLOperand input, optional MLSqueezeOptions options = {}); +}; + +partial interface MLGraphBuilder { + MLOperand tanh(MLOperand x); + MLOperator tanh(); +}; + +dictionary MLTransposeOptions { + sequence<long> permutation; +}; + +partial interface MLGraphBuilder { + MLOperand transpose(MLOperand input, optional MLTransposeOptions options = {}); +}; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLGraph {}; + +typedef (GPUBuffer or GPUTexture) MLGPUResource; + +typedef record<DOMString, MLGPUResource> MLNamedGPUResources; + +[SecureContext, Exposed=(Window, DedicatedWorker)] +interface MLCommandEncoder {}; + +partial interface MLCommandEncoder { + undefined initializeGraph(MLGraph graph); +}; + +partial interface MLCommandEncoder { + undefined dispatch(MLGraph graph, MLNamedGPUResources inputs, MLNamedGPUResources outputs); +}; + +partial interface MLCommandEncoder { + GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {}); +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-encoded-transform.idl b/testing/web-platform/tests/interfaces/webrtc-encoded-transform.idl new file mode 100644 index 0000000000..13f3999db1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-encoded-transform.idl @@ -0,0 +1,126 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebRTC Encoded Transform (https://w3c.github.io/webrtc-encoded-transform/) + +typedef (SFrameTransform or RTCRtpScriptTransform) RTCRtpTransform; + +// New methods for RTCRtpSender and RTCRtpReceiver +partial interface RTCRtpSender { + attribute RTCRtpTransform? transform; +}; + +partial interface RTCRtpReceiver { + attribute RTCRtpTransform? transform; +}; + +enum SFrameTransformRole { + "encrypt", + "decrypt" +}; + +dictionary SFrameTransformOptions { + SFrameTransformRole role = "encrypt"; +}; + +typedef [EnforceRange] unsigned long long SmallCryptoKeyID; +typedef (SmallCryptoKeyID or bigint) CryptoKeyID; + +[Exposed=(Window,DedicatedWorker)] +interface SFrameTransform { + constructor(optional SFrameTransformOptions options = {}); + Promise<undefined> setEncryptionKey(CryptoKey key, optional CryptoKeyID keyID); + attribute EventHandler onerror; +}; +SFrameTransform includes GenericTransformStream; + +enum SFrameTransformErrorEventType { + "authentication", + "keyID", + "syntax" +}; + +[Exposed=(Window,DedicatedWorker)] +interface SFrameTransformErrorEvent : Event { + constructor(DOMString type, SFrameTransformErrorEventInit eventInitDict); + + readonly attribute SFrameTransformErrorEventType errorType; + readonly attribute CryptoKeyID? keyID; + readonly attribute any frame; +}; + +dictionary SFrameTransformErrorEventInit : EventInit { + required SFrameTransformErrorEventType errorType; + required any frame; + CryptoKeyID? keyID; +}; + +// New enum for video frame types. Will eventually re-use the equivalent defined +// by WebCodecs. +enum RTCEncodedVideoFrameType { + "empty", + "key", + "delta", +}; + +dictionary RTCEncodedVideoFrameMetadata { + unsigned long long frameId; + sequence<unsigned long long> dependencies; + unsigned short width; + unsigned short height; + unsigned long spatialIndex; + unsigned long temporalIndex; + unsigned long synchronizationSource; + octet payloadType; + sequence<unsigned long> contributingSources; +}; + +// New interfaces to define encoded video and audio frames. Will eventually +// re-use or extend the equivalent defined in WebCodecs. +[Exposed=(Window,DedicatedWorker)] +interface RTCEncodedVideoFrame { + readonly attribute RTCEncodedVideoFrameType type; + readonly attribute unsigned long timestamp; + attribute ArrayBuffer data; + RTCEncodedVideoFrameMetadata getMetadata(); +}; + +dictionary RTCEncodedAudioFrameMetadata { + unsigned long synchronizationSource; + octet payloadType; + sequence<unsigned long> contributingSources; +}; + +[Exposed=(Window,DedicatedWorker)] +interface RTCEncodedAudioFrame { + readonly attribute unsigned long timestamp; + attribute ArrayBuffer data; + RTCEncodedAudioFrameMetadata getMetadata(); +}; + +[Exposed=DedicatedWorker] +interface RTCTransformEvent : Event { + readonly attribute RTCRtpScriptTransformer transformer; +}; + +partial interface DedicatedWorkerGlobalScope { + attribute EventHandler onrtctransform; +}; + +[Exposed=DedicatedWorker] +interface RTCRtpScriptTransformer { + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; + readonly attribute any options; + Promise<unsigned long long> generateKeyFrame(optional DOMString rid); + Promise<undefined> sendKeyFrameRequest(); +}; + +[Exposed=Window] +interface RTCRtpScriptTransform { + constructor(Worker worker, optional any options, optional sequence<object> transfer); +}; + +partial interface RTCRtpSender { + Promise<undefined> generateKeyFrame(optional sequence <DOMString> rids); +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-ice.idl b/testing/web-platform/tests/interfaces/webrtc-ice.idl new file mode 100644 index 0000000000..58f88bade4 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-ice.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: IceTransport Extensions for WebRTC (https://w3c.github.io/webrtc-ice/) + +partial dictionary RTCIceParameters { + boolean iceLite; +}; + +dictionary RTCIceGatherOptions { + RTCIceTransportPolicy gatherPolicy = "all"; + sequence<RTCIceServer> iceServers; +}; + +[Exposed=Window] +partial interface RTCIceTransport { + constructor(); + undefined gather (optional RTCIceGatherOptions options = {}); + undefined start (optional RTCIceParameters remoteParameters = {}, optional RTCIceRole role = "controlled"); + undefined stop (); + undefined addRemoteCandidate (optional RTCIceCandidateInit remoteCandidate = {}); + attribute EventHandler onerror; + attribute EventHandler onicecandidate; +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-identity.idl b/testing/web-platform/tests/interfaces/webrtc-identity.idl new file mode 100644 index 0000000000..108c3ad9b1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-identity.idl @@ -0,0 +1,97 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Identity for WebRTC 1.0 (https://w3c.github.io/webrtc-identity/) + +[Global=(Worker,RTCIdentityProvider), Exposed=RTCIdentityProvider] +interface RTCIdentityProviderGlobalScope : WorkerGlobalScope { + readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider; +}; + +[Exposed=RTCIdentityProvider] +interface RTCIdentityProviderRegistrar { + undefined register (RTCIdentityProvider idp); +}; + +dictionary RTCIdentityProvider { + required GenerateAssertionCallback generateAssertion; + required ValidateAssertionCallback validateAssertion; +}; + +callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult> +(DOMString contents, DOMString origin, RTCIdentityProviderOptions options); + +callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult> +(DOMString assertion, DOMString origin); + +dictionary RTCIdentityAssertionResult { + required RTCIdentityProviderDetails idp; + required DOMString assertion; +}; + +dictionary RTCIdentityProviderDetails { + required DOMString domain; + DOMString protocol = "default"; +}; + +dictionary RTCIdentityValidationResult { + required DOMString identity; + required DOMString contents; +}; + +partial interface RTCPeerConnection { + undefined setIdentityProvider (DOMString provider, optional RTCIdentityProviderOptions options = {}); + Promise<DOMString> getIdentityAssertion (); + readonly attribute Promise<RTCIdentityAssertion> peerIdentity; + readonly attribute DOMString? idpLoginUrl; + readonly attribute DOMString? idpErrorInfo; +}; + +partial dictionary RTCConfiguration { + DOMString peerIdentity; +}; + +dictionary RTCIdentityProviderOptions { + DOMString protocol = "default"; + DOMString usernameHint; + DOMString peerIdentity; +}; + +[Exposed=Window] +interface RTCIdentityAssertion { + constructor(DOMString idp, DOMString name); + attribute DOMString idp; + attribute DOMString name; +}; + +partial interface RTCError { + readonly attribute long? httpRequestStatusCode; +}; + +partial dictionary RTCErrorInit { + long httpRequestStatusCode; +}; + +// This is an extension of RTCErrorDetailType from [[WEBRTC-PC]] +// Unfortunately, WebIDL does not support partial enums (yet). +// +// partial enum RTCErrorDetailType { +enum RTCErrorDetailTypeIdp { + "idp-bad-script-failure", + "idp-execution-failure", + "idp-load-failure", + "idp-need-login", + "idp-timeout", + "idp-tls-failure", + "idp-token-expired", + "idp-token-invalid", +}; + +partial dictionary MediaStreamConstraints { + DOMString peerIdentity; +}; + +partial interface MediaStreamTrack { + readonly attribute boolean isolated; + attribute EventHandler onisolationchange; +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-priority.idl b/testing/web-platform/tests/interfaces/webrtc-priority.idl new file mode 100644 index 0000000000..a76952b9b0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-priority.idl @@ -0,0 +1,24 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebRTC Priority Control API (https://w3c.github.io/webrtc-priority/) + +enum RTCPriorityType { + "very-low", + "low", + "medium", + "high" +}; + +partial dictionary RTCRtpEncodingParameters { + RTCPriorityType priority = "low"; + RTCPriorityType networkPriority; +}; + +partial interface RTCDataChannel { + readonly attribute RTCPriorityType priority; +}; + +partial dictionary RTCDataChannelInit { + RTCPriorityType priority = "low"; +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-stats.idl b/testing/web-platform/tests/interfaces/webrtc-stats.idl new file mode 100644 index 0000000000..397d7838b7 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-stats.idl @@ -0,0 +1,287 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Identifiers for WebRTC's Statistics API (https://w3c.github.io/webrtc-stats/) + +enum RTCStatsType { +"codec", +"inbound-rtp", +"outbound-rtp", +"remote-inbound-rtp", +"remote-outbound-rtp", +"media-source", +"media-playout", +"peer-connection", +"data-channel", +"stream", +"track", +"transport", +"candidate-pair", +"local-candidate", +"remote-candidate", +"certificate" +}; + +dictionary RTCRtpStreamStats : RTCStats { + required unsigned long ssrc; + required DOMString kind; + DOMString transportId; + DOMString codecId; +}; + +dictionary RTCCodecStats : RTCStats { + required unsigned long payloadType; + required DOMString transportId; + required DOMString mimeType; + unsigned long clockRate; + unsigned long channels; + DOMString sdpFmtpLine; +}; + +dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats { + unsigned long long packetsReceived; + long long packetsLost; + double jitter; +}; + +dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats { + required DOMString trackIdentifier; + required DOMString kind; + DOMString mid; + DOMString remoteId; + unsigned long framesDecoded; + unsigned long keyFramesDecoded; + unsigned long framesRendered; + unsigned long framesDropped; + unsigned long frameWidth; + unsigned long frameHeight; + double framesPerSecond; + unsigned long long qpSum; + double totalDecodeTime; + double totalInterFrameDelay; + double totalSquaredInterFrameDelay; + unsigned long pauseCount; + double totalPausesDuration; + unsigned long freezeCount; + double totalFreezesDuration; + DOMHighResTimeStamp lastPacketReceivedTimestamp; + unsigned long long headerBytesReceived; + unsigned long long packetsDiscarded; + unsigned long long fecPacketsReceived; + unsigned long long fecPacketsDiscarded; + unsigned long long bytesReceived; + unsigned long nackCount; + unsigned long firCount; + unsigned long pliCount; + double totalProcessingDelay; + DOMHighResTimeStamp estimatedPlayoutTimestamp; + double jitterBufferDelay; + double jitterBufferTargetDelay; + unsigned long long jitterBufferEmittedCount; + double jitterBufferMinimumDelay; + unsigned long long totalSamplesReceived; + unsigned long long concealedSamples; + unsigned long long silentConcealedSamples; + unsigned long long concealmentEvents; + unsigned long long insertedSamplesForDeceleration; + unsigned long long removedSamplesForAcceleration; + double audioLevel; + double totalAudioEnergy; + double totalSamplesDuration; + unsigned long framesReceived; + DOMString decoderImplementation; + DOMString playoutId; + boolean powerEfficientDecoder; + unsigned long framesAssembledFromMultiplePackets; + double totalAssemblyTime; +}; + +dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats { + DOMString localId; + double roundTripTime; + double totalRoundTripTime; + double fractionLost; + unsigned long long roundTripTimeMeasurements; +}; + +dictionary RTCSentRtpStreamStats : RTCRtpStreamStats { + unsigned long packetsSent; + unsigned long long bytesSent; +}; + +dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats { + DOMString mid; + DOMString mediaSourceId; + DOMString remoteId; + DOMString rid; + unsigned long long headerBytesSent; + unsigned long long retransmittedPacketsSent; + unsigned long long retransmittedBytesSent; + double targetBitrate; + unsigned long long totalEncodedBytesTarget; + unsigned long frameWidth; + unsigned long frameHeight; + double framesPerSecond; + unsigned long framesSent; + unsigned long hugeFramesSent; + unsigned long framesEncoded; + unsigned long keyFramesEncoded; + unsigned long long qpSum; + double totalEncodeTime; + double totalPacketSendDelay; + RTCQualityLimitationReason qualityLimitationReason; + record<DOMString, double> qualityLimitationDurations; + unsigned long qualityLimitationResolutionChanges; + unsigned long nackCount; + unsigned long firCount; + unsigned long pliCount; + DOMString encoderImplementation; + boolean powerEfficientEncoder; + boolean active; + DOMString scalabilityMode; +}; + +enum RTCQualityLimitationReason { + "none", + "cpu", + "bandwidth", + "other", +}; + +dictionary RTCRemoteOutboundRtpStreamStats : RTCSentRtpStreamStats { + DOMString localId; + DOMHighResTimeStamp remoteTimestamp; + unsigned long long reportsSent; + double roundTripTime; + double totalRoundTripTime; + unsigned long long roundTripTimeMeasurements; +}; + +dictionary RTCMediaSourceStats : RTCStats { + required DOMString trackIdentifier; + required DOMString kind; +}; + +dictionary RTCAudioSourceStats : RTCMediaSourceStats { + double audioLevel; + double totalAudioEnergy; + double totalSamplesDuration; + double echoReturnLoss; + double echoReturnLossEnhancement; + double droppedSamplesDuration; + unsigned long droppedSamplesEvents; + double totalCaptureDelay; + unsigned long long totalSamplesCaptured; +}; + +dictionary RTCVideoSourceStats : RTCMediaSourceStats { + unsigned long width; + unsigned long height; + unsigned long frames; + double framesPerSecond; +}; + +dictionary RTCAudioPlayoutStats : RTCStats { + double synthesizedSamplesDuration; + unsigned long synthesizedSamplesEvents; + double totalSamplesDuration; + double totalPlayoutDelay; + unsigned long long totalSamplesCount; +}; + +dictionary RTCPeerConnectionStats : RTCStats { + unsigned long dataChannelsOpened; + unsigned long dataChannelsClosed; +}; + +dictionary RTCDataChannelStats : RTCStats { + DOMString label; + DOMString protocol; + unsigned short dataChannelIdentifier; + required RTCDataChannelState state; + unsigned long messagesSent; + unsigned long long bytesSent; + unsigned long messagesReceived; + unsigned long long bytesReceived; +}; + +dictionary RTCTransportStats : RTCStats { + unsigned long long packetsSent; + unsigned long long packetsReceived; + unsigned long long bytesSent; + unsigned long long bytesReceived; + RTCIceRole iceRole; + DOMString iceLocalUsernameFragment; + required RTCDtlsTransportState dtlsState; + RTCIceTransportState iceState; + DOMString selectedCandidatePairId; + DOMString localCertificateId; + DOMString remoteCertificateId; + DOMString tlsVersion; + DOMString dtlsCipher; + RTCDtlsRole dtlsRole; + DOMString srtpCipher; + unsigned long selectedCandidatePairChanges; +}; + +enum RTCDtlsRole { + "client", + "server", + "unknown", +}; + +dictionary RTCIceCandidateStats : RTCStats { + required DOMString transportId; + DOMString? address; + long port; + DOMString protocol; + required RTCIceCandidateType candidateType; + long priority; + DOMString url; + RTCIceServerTransportProtocol relayProtocol; + DOMString foundation; + DOMString relatedAddress; + long relatedPort; + DOMString usernameFragment; + RTCIceTcpCandidateType tcpType; +}; + +dictionary RTCIceCandidatePairStats : RTCStats { + required DOMString transportId; + required DOMString localCandidateId; + required DOMString remoteCandidateId; + required RTCStatsIceCandidatePairState state; + boolean nominated; + unsigned long long packetsSent; + unsigned long long packetsReceived; + unsigned long long bytesSent; + unsigned long long bytesReceived; + DOMHighResTimeStamp lastPacketSentTimestamp; + DOMHighResTimeStamp lastPacketReceivedTimestamp; + double totalRoundTripTime; + double currentRoundTripTime; + double availableOutgoingBitrate; + double availableIncomingBitrate; + unsigned long long requestsReceived; + unsigned long long requestsSent; + unsigned long long responsesReceived; + unsigned long long responsesSent; + unsigned long long consentRequestsSent; + unsigned long packetsDiscardedOnSend; + unsigned long long bytesDiscardedOnSend; +}; + +enum RTCStatsIceCandidatePairState { + "frozen", + "waiting", + "in-progress", + "failed", + "succeeded" +}; + +dictionary RTCCertificateStats : RTCStats { + required DOMString fingerprint; + required DOMString fingerprintAlgorithm; + required DOMString base64Certificate; + DOMString issuerCertificateId; +}; diff --git a/testing/web-platform/tests/interfaces/webrtc-svc.idl b/testing/web-platform/tests/interfaces/webrtc-svc.idl new file mode 100644 index 0000000000..e42efe03b6 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc-svc.idl @@ -0,0 +1,12 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Scalable Video Coding (SVC) Extension for WebRTC (https://w3c.github.io/webrtc-svc/) + +partial dictionary RTCRtpEncodingParameters { + DOMString scalabilityMode; +}; + +partial dictionary RTCRtpCodecCapability { + sequence<DOMString> scalabilityModes; +}; diff --git a/testing/web-platform/tests/interfaces/webrtc.idl b/testing/web-platform/tests/interfaces/webrtc.idl new file mode 100644 index 0000000000..d631169f46 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webrtc.idl @@ -0,0 +1,628 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebRTC 1.0: Real-Time Communication Between Browsers (https://w3c.github.io/webrtc-pc/) + +dictionary RTCConfiguration { + sequence<RTCIceServer> iceServers = []; + RTCIceTransportPolicy iceTransportPolicy = "all"; + RTCBundlePolicy bundlePolicy = "balanced"; + RTCRtcpMuxPolicy rtcpMuxPolicy = "require"; + sequence<RTCCertificate> certificates = []; + [EnforceRange] octet iceCandidatePoolSize = 0; +}; + +dictionary RTCIceServer { + required (DOMString or sequence<DOMString>) urls; + DOMString username; + DOMString credential; +}; + +enum RTCIceTransportPolicy { + "relay", + "all" +}; + +enum RTCBundlePolicy { + "balanced", + "max-compat", + "max-bundle" +}; + +enum RTCRtcpMuxPolicy { + "require" +}; + +dictionary RTCOfferAnswerOptions {}; + +dictionary RTCOfferOptions : RTCOfferAnswerOptions { + boolean iceRestart = false; +}; + +dictionary RTCAnswerOptions : RTCOfferAnswerOptions {}; + +enum RTCSignalingState { + "stable", + "have-local-offer", + "have-remote-offer", + "have-local-pranswer", + "have-remote-pranswer", + "closed" +}; + +enum RTCIceGatheringState { +"new", +"gathering", +"complete" + }; + +enum RTCPeerConnectionState { +"closed", +"failed", +"disconnected", +"new", +"connecting", +"connected" + }; + +enum RTCIceConnectionState { +"closed", +"failed", +"disconnected", +"new", +"checking", +"completed", +"connected" + }; + +[Exposed=Window] +interface RTCPeerConnection : EventTarget { + constructor(optional RTCConfiguration configuration = {}); + Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options = {}); + Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options = {}); + Promise<undefined> setLocalDescription(optional RTCLocalSessionDescriptionInit description = {}); + readonly attribute RTCSessionDescription? localDescription; + readonly attribute RTCSessionDescription? currentLocalDescription; + readonly attribute RTCSessionDescription? pendingLocalDescription; + Promise<undefined> setRemoteDescription(RTCSessionDescriptionInit description); + readonly attribute RTCSessionDescription? remoteDescription; + readonly attribute RTCSessionDescription? currentRemoteDescription; + readonly attribute RTCSessionDescription? pendingRemoteDescription; + Promise<undefined> addIceCandidate(optional RTCIceCandidateInit candidate = {}); + readonly attribute RTCSignalingState signalingState; + readonly attribute RTCIceGatheringState iceGatheringState; + readonly attribute RTCIceConnectionState iceConnectionState; + readonly attribute RTCPeerConnectionState connectionState; + readonly attribute boolean? canTrickleIceCandidates; + undefined restartIce(); + RTCConfiguration getConfiguration(); + undefined setConfiguration(optional RTCConfiguration configuration = {}); + undefined close(); + attribute EventHandler onnegotiationneeded; + attribute EventHandler onicecandidate; + attribute EventHandler onicecandidateerror; + attribute EventHandler onsignalingstatechange; + attribute EventHandler oniceconnectionstatechange; + attribute EventHandler onicegatheringstatechange; + attribute EventHandler onconnectionstatechange; + + // Legacy Interface Extensions + // Supporting the methods in this section is optional. + // If these methods are supported + // they must be implemented as defined + // in section "Legacy Interface Extensions" + Promise<undefined> createOffer(RTCSessionDescriptionCallback successCallback, + RTCPeerConnectionErrorCallback failureCallback, + optional RTCOfferOptions options = {}); + Promise<undefined> setLocalDescription(RTCLocalSessionDescriptionInit description, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<undefined> createAnswer(RTCSessionDescriptionCallback successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<undefined> setRemoteDescription(RTCSessionDescriptionInit description, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); + Promise<undefined> addIceCandidate(RTCIceCandidateInit candidate, + VoidFunction successCallback, + RTCPeerConnectionErrorCallback failureCallback); +}; + +callback RTCPeerConnectionErrorCallback = undefined (DOMException error); + +callback RTCSessionDescriptionCallback = undefined (RTCSessionDescriptionInit description); + +partial dictionary RTCOfferOptions { + boolean offerToReceiveAudio; + boolean offerToReceiveVideo; +}; + +enum RTCSdpType { + "offer", + "pranswer", + "answer", + "rollback" +}; + +[Exposed=Window] +interface RTCSessionDescription { + constructor(RTCSessionDescriptionInit descriptionInitDict); + readonly attribute RTCSdpType type; + readonly attribute DOMString sdp; + [Default] object toJSON(); +}; + +dictionary RTCSessionDescriptionInit { + required RTCSdpType type; + DOMString sdp = ""; +}; + +dictionary RTCLocalSessionDescriptionInit { + RTCSdpType type; + DOMString sdp = ""; +}; + +[Exposed=Window] +interface RTCIceCandidate { + constructor(optional RTCIceCandidateInit candidateInitDict = {}); + readonly attribute DOMString candidate; + readonly attribute DOMString? sdpMid; + readonly attribute unsigned short? sdpMLineIndex; + readonly attribute DOMString? foundation; + readonly attribute RTCIceComponent? component; + readonly attribute unsigned long? priority; + readonly attribute DOMString? address; + readonly attribute RTCIceProtocol? protocol; + readonly attribute unsigned short? port; + readonly attribute RTCIceCandidateType? type; + readonly attribute RTCIceTcpCandidateType? tcpType; + readonly attribute DOMString? relatedAddress; + readonly attribute unsigned short? relatedPort; + readonly attribute DOMString? usernameFragment; + readonly attribute RTCIceServerTransportProtocol? relayProtocol; + readonly attribute DOMString? url; + RTCIceCandidateInit toJSON(); +}; + +dictionary RTCIceCandidateInit { + DOMString candidate = ""; + DOMString? sdpMid = null; + unsigned short? sdpMLineIndex = null; + DOMString? usernameFragment = null; +}; + +enum RTCIceProtocol { + "udp", + "tcp" +}; + +enum RTCIceTcpCandidateType { + "active", + "passive", + "so" +}; + +enum RTCIceCandidateType { + "host", + "srflx", + "prflx", + "relay" +}; + +enum RTCIceServerTransportProtocol { + "udp", + "tcp", + "tls", +}; + +[Exposed=Window] +interface RTCPeerConnectionIceEvent : Event { + constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict = {}); + readonly attribute RTCIceCandidate? candidate; + readonly attribute DOMString? url; +}; + +dictionary RTCPeerConnectionIceEventInit : EventInit { + RTCIceCandidate? candidate; + DOMString? url; +}; + +[Exposed=Window] +interface RTCPeerConnectionIceErrorEvent : Event { + constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict); + readonly attribute DOMString? address; + readonly attribute unsigned short? port; + readonly attribute DOMString url; + readonly attribute unsigned short errorCode; + readonly attribute USVString errorText; +}; + +dictionary RTCPeerConnectionIceErrorEventInit : EventInit { + DOMString? address; + unsigned short? port; + DOMString url; + required unsigned short errorCode; + USVString errorText; +}; + +partial interface RTCPeerConnection { + static Promise<RTCCertificate> + generateCertificate(AlgorithmIdentifier keygenAlgorithm); +}; + +dictionary RTCCertificateExpiration { + [EnforceRange] unsigned long long expires; +}; + +[Exposed=Window, Serializable] +interface RTCCertificate { + readonly attribute EpochTimeStamp expires; + sequence<RTCDtlsFingerprint> getFingerprints(); +}; + +partial interface RTCPeerConnection { + sequence<RTCRtpSender> getSenders(); + sequence<RTCRtpReceiver> getReceivers(); + sequence<RTCRtpTransceiver> getTransceivers(); + RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams); + undefined removeTrack(RTCRtpSender sender); + RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind, + optional RTCRtpTransceiverInit init = {}); + attribute EventHandler ontrack; +}; + +dictionary RTCRtpTransceiverInit { + RTCRtpTransceiverDirection direction = "sendrecv"; + sequence<MediaStream> streams = []; + sequence<RTCRtpEncodingParameters> sendEncodings = []; +}; + +enum RTCRtpTransceiverDirection { + "sendrecv", + "sendonly", + "recvonly", + "inactive", + "stopped" +}; + +[Exposed=Window] +interface RTCRtpSender { + readonly attribute MediaStreamTrack? track; + readonly attribute RTCDtlsTransport? transport; + static RTCRtpCapabilities? getCapabilities(DOMString kind); + Promise<undefined> setParameters(RTCRtpSendParameters parameters); + RTCRtpSendParameters getParameters(); + Promise<undefined> replaceTrack(MediaStreamTrack? withTrack); + undefined setStreams(MediaStream... streams); + Promise<RTCStatsReport> getStats(); +}; + +dictionary RTCRtpParameters { + required sequence<RTCRtpHeaderExtensionParameters> headerExtensions; + required RTCRtcpParameters rtcp; + required sequence<RTCRtpCodecParameters> codecs; +}; + +dictionary RTCRtpSendParameters : RTCRtpParameters { + required DOMString transactionId; + required sequence<RTCRtpEncodingParameters> encodings; +}; + +dictionary RTCRtpReceiveParameters : RTCRtpParameters { +}; + +dictionary RTCRtpCodingParameters { + DOMString rid; +}; + +dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters { + boolean active = true; + unsigned long maxBitrate; + double maxFramerate; + double scaleResolutionDownBy; +}; + +dictionary RTCRtcpParameters { + DOMString cname; + boolean reducedSize; +}; + +dictionary RTCRtpHeaderExtensionParameters { + required DOMString uri; + required unsigned short id; + boolean encrypted = false; +}; + +dictionary RTCRtpCodecParameters { + required octet payloadType; + required DOMString mimeType; + required unsigned long clockRate; + unsigned short channels; + DOMString sdpFmtpLine; +}; + +dictionary RTCRtpCapabilities { + required sequence<RTCRtpCodecCapability> codecs; + required sequence<RTCRtpHeaderExtensionCapability> headerExtensions; +}; + +dictionary RTCRtpCodecCapability { + required DOMString mimeType; + required unsigned long clockRate; + unsigned short channels; + DOMString sdpFmtpLine; +}; + +dictionary RTCRtpHeaderExtensionCapability { + DOMString uri; +}; + +[Exposed=Window] +interface RTCRtpReceiver { + readonly attribute MediaStreamTrack track; + readonly attribute RTCDtlsTransport? transport; + static RTCRtpCapabilities? getCapabilities(DOMString kind); + RTCRtpReceiveParameters getParameters(); + sequence<RTCRtpContributingSource> getContributingSources(); + sequence<RTCRtpSynchronizationSource> getSynchronizationSources(); + Promise<RTCStatsReport> getStats(); +}; + +dictionary RTCRtpContributingSource { + required DOMHighResTimeStamp timestamp; + required unsigned long source; + double audioLevel; + required unsigned long rtpTimestamp; +}; + +dictionary RTCRtpSynchronizationSource : RTCRtpContributingSource {}; + +[Exposed=Window] +interface RTCRtpTransceiver { + readonly attribute DOMString? mid; + [SameObject] readonly attribute RTCRtpSender sender; + [SameObject] readonly attribute RTCRtpReceiver receiver; + attribute RTCRtpTransceiverDirection direction; + readonly attribute RTCRtpTransceiverDirection? currentDirection; + undefined stop(); + undefined setCodecPreferences(sequence<RTCRtpCodecCapability> codecs); +}; + +[Exposed=Window] +interface RTCDtlsTransport : EventTarget { + [SameObject] readonly attribute RTCIceTransport iceTransport; + readonly attribute RTCDtlsTransportState state; + sequence<ArrayBuffer> getRemoteCertificates(); + attribute EventHandler onstatechange; + attribute EventHandler onerror; +}; + +enum RTCDtlsTransportState { + "new", + "connecting", + "connected", + "closed", + "failed" +}; + +dictionary RTCDtlsFingerprint { + DOMString algorithm; + DOMString value; +}; + +[Exposed=Window] +interface RTCIceTransport : EventTarget { + readonly attribute RTCIceRole role; + readonly attribute RTCIceComponent component; + readonly attribute RTCIceTransportState state; + readonly attribute RTCIceGathererState gatheringState; + sequence<RTCIceCandidate> getLocalCandidates(); + sequence<RTCIceCandidate> getRemoteCandidates(); + RTCIceCandidatePair? getSelectedCandidatePair(); + RTCIceParameters? getLocalParameters(); + RTCIceParameters? getRemoteParameters(); + attribute EventHandler onstatechange; + attribute EventHandler ongatheringstatechange; + attribute EventHandler onselectedcandidatepairchange; +}; + +dictionary RTCIceParameters { + DOMString usernameFragment; + DOMString password; +}; + +dictionary RTCIceCandidatePair { + RTCIceCandidate local; + RTCIceCandidate remote; +}; + +enum RTCIceGathererState { + "new", + "gathering", + "complete" +}; + +enum RTCIceTransportState { + "new", + "checking", + "connected", + "completed", + "disconnected", + "failed", + "closed" +}; + +enum RTCIceRole { + "unknown", + "controlling", + "controlled" +}; + +enum RTCIceComponent { + "rtp", + "rtcp" +}; + +[Exposed=Window] +interface RTCTrackEvent : Event { + constructor(DOMString type, RTCTrackEventInit eventInitDict); + readonly attribute RTCRtpReceiver receiver; + readonly attribute MediaStreamTrack track; + [SameObject] readonly attribute FrozenArray<MediaStream> streams; + readonly attribute RTCRtpTransceiver transceiver; +}; + +dictionary RTCTrackEventInit : EventInit { + required RTCRtpReceiver receiver; + required MediaStreamTrack track; + sequence<MediaStream> streams = []; + required RTCRtpTransceiver transceiver; +}; + +partial interface RTCPeerConnection { + readonly attribute RTCSctpTransport? sctp; + RTCDataChannel createDataChannel(USVString label, + optional RTCDataChannelInit dataChannelDict = {}); + attribute EventHandler ondatachannel; +}; + +[Exposed=Window] +interface RTCSctpTransport : EventTarget { + readonly attribute RTCDtlsTransport transport; + readonly attribute RTCSctpTransportState state; + readonly attribute unrestricted double maxMessageSize; + readonly attribute unsigned short? maxChannels; + attribute EventHandler onstatechange; +}; + +enum RTCSctpTransportState { + "connecting", + "connected", + "closed" +}; + +[Exposed=Window] +interface RTCDataChannel : EventTarget { + readonly attribute USVString label; + readonly attribute boolean ordered; + readonly attribute unsigned short? maxPacketLifeTime; + readonly attribute unsigned short? maxRetransmits; + readonly attribute USVString protocol; + readonly attribute boolean negotiated; + readonly attribute unsigned short? id; + readonly attribute RTCDataChannelState readyState; + readonly attribute unsigned long bufferedAmount; + [EnforceRange] attribute unsigned long bufferedAmountLowThreshold; + attribute EventHandler onopen; + attribute EventHandler onbufferedamountlow; + attribute EventHandler onerror; + attribute EventHandler onclosing; + attribute EventHandler onclose; + undefined close(); + attribute EventHandler onmessage; + attribute BinaryType binaryType; + undefined send(USVString data); + undefined send(Blob data); + undefined send(ArrayBuffer data); + undefined send(ArrayBufferView data); +}; + +dictionary RTCDataChannelInit { + boolean ordered = true; + [EnforceRange] unsigned short maxPacketLifeTime; + [EnforceRange] unsigned short maxRetransmits; + USVString protocol = ""; + boolean negotiated = false; + [EnforceRange] unsigned short id; +}; + +enum RTCDataChannelState { + "connecting", + "open", + "closing", + "closed" +}; + +[Exposed=Window] +interface RTCDataChannelEvent : Event { + constructor(DOMString type, RTCDataChannelEventInit eventInitDict); + readonly attribute RTCDataChannel channel; +}; + +dictionary RTCDataChannelEventInit : EventInit { + required RTCDataChannel channel; +}; + +partial interface RTCRtpSender { + readonly attribute RTCDTMFSender? dtmf; +}; + +[Exposed=Window] +interface RTCDTMFSender : EventTarget { + undefined insertDTMF(DOMString tones, optional unsigned long duration = 100, optional unsigned long interToneGap = 70); + attribute EventHandler ontonechange; + readonly attribute boolean canInsertDTMF; + readonly attribute DOMString toneBuffer; +}; + +[Exposed=Window] +interface RTCDTMFToneChangeEvent : Event { + constructor(DOMString type, optional RTCDTMFToneChangeEventInit eventInitDict = {}); + readonly attribute DOMString tone; +}; + +dictionary RTCDTMFToneChangeEventInit : EventInit { + DOMString tone = ""; +}; + +partial interface RTCPeerConnection { + Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null); +}; + +[Exposed=Window] +interface RTCStatsReport { + readonly maplike<DOMString, object>; +}; + +dictionary RTCStats { + required DOMHighResTimeStamp timestamp; + required RTCStatsType type; + required DOMString id; +}; + +[Exposed=Window] +interface RTCError : DOMException { + constructor(RTCErrorInit init, optional DOMString message = ""); + readonly attribute RTCErrorDetailType errorDetail; + readonly attribute long? sdpLineNumber; + readonly attribute long? sctpCauseCode; + readonly attribute unsigned long? receivedAlert; + readonly attribute unsigned long? sentAlert; +}; + +dictionary RTCErrorInit { + required RTCErrorDetailType errorDetail; + long sdpLineNumber; + long sctpCauseCode; + unsigned long receivedAlert; + unsigned long sentAlert; +}; + +enum RTCErrorDetailType { + "data-channel-failure", + "dtls-failure", + "fingerprint-failure", + "sctp-failure", + "sdp-syntax-error", + "hardware-encoder-not-available", + "hardware-encoder-error" +}; + +[Exposed=Window] +interface RTCErrorEvent : Event { + constructor(DOMString type, RTCErrorEventInit eventInitDict); + [SameObject] readonly attribute RTCError error; +}; + +dictionary RTCErrorEventInit : EventInit { + required RTCError error; +}; diff --git a/testing/web-platform/tests/interfaces/websockets.idl b/testing/web-platform/tests/interfaces/websockets.idl new file mode 100644 index 0000000000..6ff16790b0 --- /dev/null +++ b/testing/web-platform/tests/interfaces/websockets.idl @@ -0,0 +1,48 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebSockets Standard (https://websockets.spec.whatwg.org/) + +enum BinaryType { "blob", "arraybuffer" }; + +[Exposed=(Window,Worker)] +interface WebSocket : EventTarget { + constructor(USVString url, optional (DOMString or sequence<DOMString>) protocols = []); + readonly attribute USVString url; + + // ready state + const unsigned short CONNECTING = 0; + const unsigned short OPEN = 1; + const unsigned short CLOSING = 2; + const unsigned short CLOSED = 3; + readonly attribute unsigned short readyState; + readonly attribute unsigned long long bufferedAmount; + + // networking + attribute EventHandler onopen; + attribute EventHandler onerror; + attribute EventHandler onclose; + readonly attribute DOMString extensions; + readonly attribute DOMString protocol; + undefined close(optional [Clamp] unsigned short code, optional USVString reason); + + // messaging + attribute EventHandler onmessage; + attribute BinaryType binaryType; + undefined send((BufferSource or Blob or USVString) data); +}; + +[Exposed=(Window,Worker)] +interface CloseEvent : Event { + constructor(DOMString type, optional CloseEventInit eventInitDict = {}); + + readonly attribute boolean wasClean; + readonly attribute unsigned short code; + readonly attribute USVString reason; +}; + +dictionary CloseEventInit : EventInit { + boolean wasClean = false; + unsigned short code = 0; + USVString reason = ""; +}; diff --git a/testing/web-platform/tests/interfaces/webtransport.idl b/testing/web-platform/tests/interfaces/webtransport.idl new file mode 100644 index 0000000000..ba705807f1 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webtransport.idl @@ -0,0 +1,142 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebTransport (https://w3c.github.io/webtransport/) + +[Exposed=(Window,Worker), SecureContext] +interface WebTransportDatagramDuplexStream { + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; + + readonly attribute unsigned long maxDatagramSize; + attribute double? incomingMaxAge; + attribute double? outgoingMaxAge; + attribute long incomingHighWaterMark; + attribute long outgoingHighWaterMark; +}; + +[Exposed=(Window,Worker), SecureContext] +interface WebTransport { + constructor(USVString url, optional WebTransportOptions options = {}); + + Promise<WebTransportStats> getStats(); + readonly attribute Promise<undefined> ready; + readonly attribute WebTransportReliabilityMode reliability; + readonly attribute WebTransportCongestionControl congestionControl; + readonly attribute Promise<WebTransportCloseInfo> closed; + undefined close(optional WebTransportCloseInfo closeInfo = {}); + + readonly attribute WebTransportDatagramDuplexStream datagrams; + + Promise<WebTransportBidirectionalStream> createBidirectionalStream( + optional WebTransportSendStreamOptions options = {}); + /* a ReadableStream of WebTransportBidirectionalStream objects */ + readonly attribute ReadableStream incomingBidirectionalStreams; + + Promise<WebTransportSendStream> createUnidirectionalStream( + optional WebTransportSendStreamOptions options = {}); + /* a ReadableStream of WebTransportReceiveStream objects */ + readonly attribute ReadableStream incomingUnidirectionalStreams; +}; + +enum WebTransportReliabilityMode { + "pending", + "reliable-only", + "supports-unreliable", +}; + +dictionary WebTransportHash { + DOMString algorithm; + BufferSource value; +}; + +dictionary WebTransportOptions { + boolean allowPooling = false; + boolean requireUnreliable = false; + sequence<WebTransportHash> serverCertificateHashes; + WebTransportCongestionControl congestionControl = "default"; +}; + +enum WebTransportCongestionControl { + "default", + "throughput", + "low-latency", +}; + +dictionary WebTransportCloseInfo { + unsigned long closeCode = 0; + USVString reason = ""; +}; + +dictionary WebTransportSendStreamOptions { + long long? sendOrder = null; +}; + +dictionary WebTransportStats { + DOMHighResTimeStamp timestamp; + unsigned long long bytesSent; + unsigned long long packetsSent; + unsigned long long packetsLost; + unsigned long numOutgoingStreamsCreated; + unsigned long numIncomingStreamsCreated; + unsigned long long bytesReceived; + unsigned long long packetsReceived; + DOMHighResTimeStamp smoothedRtt; + DOMHighResTimeStamp rttVariation; + DOMHighResTimeStamp minRtt; + WebTransportDatagramStats datagrams; +}; + +dictionary WebTransportDatagramStats { + DOMHighResTimeStamp timestamp; + unsigned long long expiredOutgoing; + unsigned long long droppedIncoming; + unsigned long long lostOutgoing; +}; + +[Exposed=(Window,Worker), SecureContext, Transferable] +interface WebTransportSendStream : WritableStream { + Promise<WebTransportSendStreamStats> getStats(); +}; + +dictionary WebTransportSendStreamStats { + DOMHighResTimeStamp timestamp; + unsigned long long bytesWritten; + unsigned long long bytesSent; + unsigned long long bytesAcknowledged; +}; + +[Exposed=(Window,Worker), SecureContext, Transferable] +interface WebTransportReceiveStream : ReadableStream { + Promise<WebTransportReceiveStreamStats> getStats(); +}; + +dictionary WebTransportReceiveStreamStats { + DOMHighResTimeStamp timestamp; + unsigned long long bytesReceived; + unsigned long long bytesRead; +}; + +[Exposed=(Window,Worker), SecureContext] +interface WebTransportBidirectionalStream { + readonly attribute WebTransportReceiveStream readable; + readonly attribute WebTransportSendStream writable; +}; + +[Exposed=(Window,Worker), SecureContext] +interface WebTransportError : DOMException { + constructor(optional WebTransportErrorInit init = {}); + + readonly attribute WebTransportErrorSource source; + readonly attribute octet? streamErrorCode; +}; + +dictionary WebTransportErrorInit { + [Clamp] octet streamErrorCode; + DOMString message; +}; + +enum WebTransportErrorSource { + "stream", + "session", +}; diff --git a/testing/web-platform/tests/interfaces/webusb.idl b/testing/web-platform/tests/interfaces/webusb.idl new file mode 100644 index 0000000000..fb0a71f307 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webusb.idl @@ -0,0 +1,249 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebUSB API (https://wicg.github.io/webusb/) + +dictionary USBDeviceFilter { + unsigned short vendorId; + unsigned short productId; + octet classCode; + octet subclassCode; + octet protocolCode; + DOMString serialNumber; +}; + +dictionary USBDeviceRequestOptions { + required sequence<USBDeviceFilter> filters; +}; + +[Exposed=(Worker,Window), SecureContext] +interface USB : EventTarget { + attribute EventHandler onconnect; + attribute EventHandler ondisconnect; + Promise<sequence<USBDevice>> getDevices(); + [Exposed=Window] Promise<USBDevice> requestDevice(USBDeviceRequestOptions options); +}; + +[Exposed=Window, SecureContext] +partial interface Navigator { + [SameObject] readonly attribute USB usb; +}; + +[Exposed=Worker, SecureContext] +partial interface WorkerNavigator { + [SameObject] readonly attribute USB usb; +}; + +dictionary USBConnectionEventInit : EventInit { + required USBDevice device; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBConnectionEvent : Event { + constructor(DOMString type, USBConnectionEventInit eventInitDict); + [SameObject] readonly attribute USBDevice device; +}; + +enum USBTransferStatus { + "ok", + "stall", + "babble" +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBInTransferResult { + constructor(USBTransferStatus status, optional DataView? data); + readonly attribute DataView? data; + readonly attribute USBTransferStatus status; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBOutTransferResult { + constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0); + readonly attribute unsigned long bytesWritten; + readonly attribute USBTransferStatus status; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBIsochronousInTransferPacket { + constructor(USBTransferStatus status, optional DataView? data); + readonly attribute DataView? data; + readonly attribute USBTransferStatus status; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBIsochronousInTransferResult { + constructor(sequence<USBIsochronousInTransferPacket> packets, optional DataView? data); + readonly attribute DataView? data; + readonly attribute FrozenArray<USBIsochronousInTransferPacket> packets; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBIsochronousOutTransferPacket { + constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0); + readonly attribute unsigned long bytesWritten; + readonly attribute USBTransferStatus status; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBIsochronousOutTransferResult { + constructor(sequence<USBIsochronousOutTransferPacket> packets); + readonly attribute FrozenArray<USBIsochronousOutTransferPacket> packets; +}; + +[Exposed=(DedicatedWorker,SharedWorker,Window), SecureContext] +interface USBDevice { + readonly attribute octet usbVersionMajor; + readonly attribute octet usbVersionMinor; + readonly attribute octet usbVersionSubminor; + readonly attribute octet deviceClass; + readonly attribute octet deviceSubclass; + readonly attribute octet deviceProtocol; + readonly attribute unsigned short vendorId; + readonly attribute unsigned short productId; + readonly attribute octet deviceVersionMajor; + readonly attribute octet deviceVersionMinor; + readonly attribute octet deviceVersionSubminor; + readonly attribute DOMString? manufacturerName; + readonly attribute DOMString? productName; + readonly attribute DOMString? serialNumber; + readonly attribute USBConfiguration? configuration; + readonly attribute FrozenArray<USBConfiguration> configurations; + readonly attribute boolean opened; + Promise<undefined> open(); + Promise<undefined> close(); + Promise<undefined> forget(); + Promise<undefined> selectConfiguration(octet configurationValue); + Promise<undefined> claimInterface(octet interfaceNumber); + Promise<undefined> releaseInterface(octet interfaceNumber); + Promise<undefined> selectAlternateInterface(octet interfaceNumber, octet alternateSetting); + Promise<USBInTransferResult> controlTransferIn(USBControlTransferParameters setup, unsigned short length); + Promise<USBOutTransferResult> controlTransferOut(USBControlTransferParameters setup, optional BufferSource data); + Promise<undefined> clearHalt(USBDirection direction, octet endpointNumber); + Promise<USBInTransferResult> transferIn(octet endpointNumber, unsigned long length); + Promise<USBOutTransferResult> transferOut(octet endpointNumber, BufferSource data); + Promise<USBIsochronousInTransferResult> isochronousTransferIn(octet endpointNumber, sequence<unsigned long> packetLengths); + Promise<USBIsochronousOutTransferResult> isochronousTransferOut(octet endpointNumber, BufferSource data, sequence<unsigned long> packetLengths); + Promise<undefined> reset(); +}; + +enum USBRequestType { + "standard", + "class", + "vendor" +}; + +enum USBRecipient { + "device", + "interface", + "endpoint", + "other" +}; + +dictionary USBControlTransferParameters { + required USBRequestType requestType; + required USBRecipient recipient; + required octet request; + required unsigned short value; + required unsigned short index; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBConfiguration { + constructor(USBDevice device, octet configurationValue); + readonly attribute octet configurationValue; + readonly attribute DOMString? configurationName; + readonly attribute FrozenArray<USBInterface> interfaces; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBInterface { + constructor(USBConfiguration configuration, octet interfaceNumber); + readonly attribute octet interfaceNumber; + readonly attribute USBAlternateInterface alternate; + readonly attribute FrozenArray<USBAlternateInterface> alternates; + readonly attribute boolean claimed; +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBAlternateInterface { + constructor(USBInterface deviceInterface, octet alternateSetting); + readonly attribute octet alternateSetting; + readonly attribute octet interfaceClass; + readonly attribute octet interfaceSubclass; + readonly attribute octet interfaceProtocol; + readonly attribute DOMString? interfaceName; + readonly attribute FrozenArray<USBEndpoint> endpoints; +}; + +enum USBDirection { + "in", + "out" +}; + +enum USBEndpointType { + "bulk", + "interrupt", + "isochronous" +}; + +[ + Exposed=(DedicatedWorker,SharedWorker,Window), + SecureContext +] +interface USBEndpoint { + constructor(USBAlternateInterface alternate, octet endpointNumber, USBDirection direction); + readonly attribute octet endpointNumber; + readonly attribute USBDirection direction; + readonly attribute USBEndpointType type; + readonly attribute unsigned long packetSize; +}; + +dictionary USBPermissionDescriptor : PermissionDescriptor { + sequence<USBDeviceFilter> filters; +}; + +dictionary AllowedUSBDevice { + required octet vendorId; + required octet productId; + DOMString serialNumber; +}; + +dictionary USBPermissionStorage { + sequence<AllowedUSBDevice> allowedDevices = []; +}; + +[Exposed=(DedicatedWorker,SharedWorker,Window)] +interface USBPermissionResult : PermissionStatus { + attribute FrozenArray<USBDevice> devices; +}; diff --git a/testing/web-platform/tests/interfaces/webvr.tentative.idl b/testing/web-platform/tests/interfaces/webvr.tentative.idl new file mode 100644 index 0000000000..2fc5f4e52b --- /dev/null +++ b/testing/web-platform/tests/interfaces/webvr.tentative.idl @@ -0,0 +1,204 @@ +// Archived version of the WebVR spec from +// https://w3c.github.io/webvr/archive/prerelease/1.1/index.html + +[Exposed=Window] +interface VRDisplay : EventTarget { + readonly attribute boolean isPresenting; + + /** + * Dictionary of capabilities describing the VRDisplay. + */ + [SameObject] readonly attribute VRDisplayCapabilities capabilities; + + /** + * If this VRDisplay supports room-scale experiences, the optional + * stage attribute contains details on the room-scale parameters. + * The stageParameters attribute can not change between null + * and non-null once the VRDisplay is enumerated; however, + * the values within VRStageParameters may change after + * any call to VRDisplay.submitFrame as the user may re-configure + * their environment at any time. + */ + readonly attribute VRStageParameters? stageParameters; + + /** + * Return the current VREyeParameters for the given eye. + */ + VREyeParameters getEyeParameters(VREye whichEye); + + /** + * An identifier for this distinct VRDisplay. Used as an + * association point in the Gamepad API. + */ + readonly attribute unsigned long displayId; + + /** + * A display name, a user-readable name identifying it. + */ + readonly attribute DOMString displayName; + + /** + * Populates the passed VRFrameData with the information required to render + * the current frame. + */ + boolean getFrameData(VRFrameData frameData); + + /** + * z-depth defining the near plane of the eye view frustum + * enables mapping of values in the render target depth + * attachment to scene coordinates. Initially set to 0.01. + */ + attribute double depthNear; + + /** + * z-depth defining the far plane of the eye view frustum + * enables mapping of values in the render target depth + * attachment to scene coordinates. Initially set to 10000.0. + */ + attribute double depthFar; + + /** + * The callback passed to `requestAnimationFrame` will be called + * any time a new frame should be rendered. When the VRDisplay is + * presenting the callback will be called at the native refresh + * rate of the HMD. When not presenting this function acts + * identically to how window.requestAnimationFrame acts. Content should + * make no assumptions of frame rate or vsync behavior as the HMD runs + * asynchronously from other displays and at differing refresh rates. + */ + long requestAnimationFrame(FrameRequestCallback callback); + + /** + * Passing the value returned by `requestAnimationFrame` to + * `cancelAnimationFrame` will unregister the callback. + */ + undefined cancelAnimationFrame(long handle); + + /** + * Begin presenting to the VRDisplay. Must be called in response to a user gesture. + * Repeat calls while already presenting will update the layers being displayed. + * If the number of values in the leftBounds/rightBounds arrays is not 0 or 4 for any of the passed layers the promise is rejected + * If the source of any of the layers is not present (null), the promise is rejected. + */ + Promise<undefined> requestPresent(sequence<VRLayerInit> layers); + + /** + * Stops presenting to the VRDisplay. + */ + Promise<undefined> exitPresent(); + + /** + * Get the layers currently being presented. + */ + sequence<VRLayerInit> getLayers(); + + /** + * The layer provided to the VRDisplay will be captured and presented + * in the HMD. Calling this function has the same effect on the source + * canvas as any other operation that uses its source image, and canvases + * created without preserveDrawingBuffer set to true will be cleared. + */ + undefined submitFrame(); +}; + +typedef (HTMLCanvasElement or + OffscreenCanvas) VRSource; + +dictionary VRLayerInit { + VRSource? source = null; + + sequence<float> leftBounds = []; + sequence<float> rightBounds = []; +}; + +[Exposed=Window] +interface VRDisplayCapabilities { + readonly attribute boolean hasPosition; + readonly attribute boolean hasExternalDisplay; + readonly attribute boolean canPresent; + readonly attribute unsigned long maxLayers; +}; + +enum VREye { + "left", + "right" +}; + +[Exposed=Window] +interface VRPose { + readonly attribute Float32Array? position; + readonly attribute Float32Array? linearVelocity; + readonly attribute Float32Array? linearAcceleration; + + readonly attribute Float32Array? orientation; + readonly attribute Float32Array? angularVelocity; + readonly attribute Float32Array? angularAcceleration; +}; + +[Exposed=Window] +interface VRFrameData { + constructor(); + + readonly attribute Float32Array leftProjectionMatrix; + readonly attribute Float32Array leftViewMatrix; + + readonly attribute Float32Array rightProjectionMatrix; + readonly attribute Float32Array rightViewMatrix; + + readonly attribute VRPose pose; +}; + +[Exposed=Window] +interface VREyeParameters { + readonly attribute Float32Array offset; + + readonly attribute unsigned long renderWidth; + readonly attribute unsigned long renderHeight; +}; + +[Exposed=Window] +interface VRStageParameters { + readonly attribute Float32Array sittingToStandingTransform; + + readonly attribute float sizeX; + readonly attribute float sizeZ; +}; + +partial interface Navigator { + Promise<sequence<VRDisplay>> getVRDisplays(); + readonly attribute FrozenArray<VRDisplay> activeVRDisplays; + readonly attribute boolean vrEnabled; +}; + +enum VRDisplayEventReason { + "mounted", + "navigation", + "requested", + "unmounted" +}; + +[Exposed=Window] +interface VRDisplayEvent : Event { + constructor(DOMString type, VRDisplayEventInit eventInitDict); + readonly attribute VRDisplay display; + readonly attribute VRDisplayEventReason? reason; +}; + +dictionary VRDisplayEventInit : EventInit { + required VRDisplay display; + VRDisplayEventReason reason; +}; + +partial interface Window { + attribute EventHandler onvrdisplayconnect; + attribute EventHandler onvrdisplaydisconnect; + attribute EventHandler onvrdisplayactivate; + attribute EventHandler onvrdisplaydeactivate; + attribute EventHandler onvrdisplayblur; + attribute EventHandler onvrdisplayfocus; + attribute EventHandler onvrdisplaypresentchange; +}; + +partial interface Gamepad { + readonly attribute unsigned long displayId; +}; diff --git a/testing/web-platform/tests/interfaces/webvtt.idl b/testing/web-platform/tests/interfaces/webvtt.idl new file mode 100644 index 0000000000..730e893e98 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webvtt.idl @@ -0,0 +1,40 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebVTT: The Web Video Text Tracks Format (https://w3c.github.io/webvtt/) + +enum AutoKeyword { "auto" }; +typedef (double or AutoKeyword) LineAndPositionSetting; +enum DirectionSetting { "" /* horizontal */, "rl", "lr" }; +enum LineAlignSetting { "start", "center", "end" }; +enum PositionAlignSetting { "line-left", "center", "line-right", "auto" }; +enum AlignSetting { "start", "center", "end", "left", "right" }; +[Exposed=Window] +interface VTTCue : TextTrackCue { + constructor(double startTime, unrestricted double endTime, DOMString text); + attribute VTTRegion? region; + attribute DirectionSetting vertical; + attribute boolean snapToLines; + attribute LineAndPositionSetting line; + attribute LineAlignSetting lineAlign; + attribute LineAndPositionSetting position; + attribute PositionAlignSetting positionAlign; + attribute double size; + attribute AlignSetting align; + attribute DOMString text; + DocumentFragment getCueAsHTML(); +}; + +enum ScrollSetting { "" /* none */, "up" }; +[Exposed=Window] +interface VTTRegion { + constructor(); + attribute DOMString id; + attribute double width; + attribute unsigned long lines; + attribute double regionAnchorX; + attribute double regionAnchorY; + attribute double viewportAnchorX; + attribute double viewportAnchorY; + attribute ScrollSetting scroll; +}; diff --git a/testing/web-platform/tests/interfaces/webxr-ar-module.idl b/testing/web-platform/tests/interfaces/webxr-ar-module.idl new file mode 100644 index 0000000000..c3677fecdc --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-ar-module.idl @@ -0,0 +1,29 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Augmented Reality Module - Level 1 (https://immersive-web.github.io/webxr-ar-module/) + +enum XREnvironmentBlendMode { + "opaque", + "alpha-blend", + "additive" +}; + +partial interface XRSession { + // Attributes + readonly attribute XREnvironmentBlendMode environmentBlendMode; +}; + +enum XRInteractionMode { + "screen-space", + "world-space", +}; + +partial interface XRSession { + // Attributes + readonly attribute XRInteractionMode interactionMode; +}; + +partial interface XRView { + readonly attribute boolean isFirstPersonObserver; +}; diff --git a/testing/web-platform/tests/interfaces/webxr-depth-sensing.idl b/testing/web-platform/tests/interfaces/webxr-depth-sensing.idl new file mode 100644 index 0000000000..c44f029436 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-depth-sensing.idl @@ -0,0 +1,57 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Depth Sensing Module (https://immersive-web.github.io/depth-sensing/) + +enum XRDepthUsage { + "cpu-optimized", + "gpu-optimized", +}; + +enum XRDepthDataFormat { + "luminance-alpha", + "float32" +}; + +dictionary XRDepthStateInit { + required sequence<XRDepthUsage> usagePreference; + required sequence<XRDepthDataFormat> dataFormatPreference; +}; + +partial dictionary XRSessionInit { + XRDepthStateInit depthSensing; +}; + +partial interface XRSession { + readonly attribute XRDepthUsage depthUsage; + readonly attribute XRDepthDataFormat depthDataFormat; +}; + +[SecureContext, Exposed=Window] +interface XRDepthInformation { + readonly attribute unsigned long width; + readonly attribute unsigned long height; + + [SameObject] readonly attribute XRRigidTransform normDepthBufferFromNormView; + readonly attribute float rawValueToMeters; +}; + +[Exposed=Window] +interface XRCPUDepthInformation : XRDepthInformation { + [SameObject] readonly attribute ArrayBuffer data; + + float getDepthInMeters(float x, float y); +}; + +partial interface XRFrame { + XRCPUDepthInformation? getDepthInformation(XRView view); +}; + +[Exposed=Window] +interface XRWebGLDepthInformation : XRDepthInformation { + [SameObject] readonly attribute WebGLTexture texture; +}; + +partial interface XRWebGLBinding { + XRWebGLDepthInformation? getDepthInformation(XRView view); +}; diff --git a/testing/web-platform/tests/interfaces/webxr-dom-overlays.idl b/testing/web-platform/tests/interfaces/webxr-dom-overlays.idl new file mode 100644 index 0000000000..5e358c233c --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-dom-overlays.idl @@ -0,0 +1,31 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR DOM Overlays Module (https://immersive-web.github.io/dom-overlays/) + +partial interface mixin GlobalEventHandlers { + attribute EventHandler onbeforexrselect; +}; + +partial dictionary XRSessionInit { + XRDOMOverlayInit? domOverlay; +}; + +partial interface XRSession { + readonly attribute XRDOMOverlayState? domOverlayState; +}; + +dictionary XRDOMOverlayInit { + required Element root; +}; + +enum XRDOMOverlayType { + "screen", + "floating", + "head-locked" +}; + +dictionary XRDOMOverlayState { + XRDOMOverlayType type; + +}; diff --git a/testing/web-platform/tests/interfaces/webxr-gamepads-module.idl b/testing/web-platform/tests/interfaces/webxr-gamepads-module.idl new file mode 100644 index 0000000000..f63921c015 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-gamepads-module.idl @@ -0,0 +1,8 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Gamepads Module - Level 1 (https://immersive-web.github.io/webxr-gamepads-module/) + +partial interface XRInputSource { + [SameObject] readonly attribute Gamepad? gamepad; +}; diff --git a/testing/web-platform/tests/interfaces/webxr-hand-input.idl b/testing/web-platform/tests/interfaces/webxr-hand-input.idl new file mode 100644 index 0000000000..9a1127724e --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-hand-input.idl @@ -0,0 +1,66 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Hand Input Module - Level 1 (https://immersive-web.github.io/webxr-hand-input/) + +partial interface XRInputSource { + [SameObject] readonly attribute XRHand? hand; +}; + +enum XRHandJoint { + "wrist", + + "thumb-metacarpal", + "thumb-phalanx-proximal", + "thumb-phalanx-distal", + "thumb-tip", + + "index-finger-metacarpal", + "index-finger-phalanx-proximal", + "index-finger-phalanx-intermediate", + "index-finger-phalanx-distal", + "index-finger-tip", + + "middle-finger-metacarpal", + "middle-finger-phalanx-proximal", + "middle-finger-phalanx-intermediate", + "middle-finger-phalanx-distal", + "middle-finger-tip", + + "ring-finger-metacarpal", + "ring-finger-phalanx-proximal", + "ring-finger-phalanx-intermediate", + "ring-finger-phalanx-distal", + "ring-finger-tip", + + "pinky-finger-metacarpal", + "pinky-finger-phalanx-proximal", + "pinky-finger-phalanx-intermediate", + "pinky-finger-phalanx-distal", + "pinky-finger-tip" +}; + +[Exposed=Window] +interface XRHand { + iterable<XRHandJoint, XRJointSpace>; + + readonly attribute unsigned long size; + XRJointSpace get(XRHandJoint key); +}; + +[Exposed=Window] +interface XRJointSpace: XRSpace { + readonly attribute XRHandJoint jointName; +}; + +partial interface XRFrame { + XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace); + boolean fillJointRadii(sequence<XRJointSpace> jointSpaces, Float32Array radii); + + boolean fillPoses(sequence<XRSpace> spaces, XRSpace baseSpace, Float32Array transforms); +}; + +[Exposed=Window] +interface XRJointPose: XRPose { + readonly attribute float radius; +}; diff --git a/testing/web-platform/tests/interfaces/webxr-hit-test.idl b/testing/web-platform/tests/interfaces/webxr-hit-test.idl new file mode 100644 index 0000000000..fa4fb71c9d --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-hit-test.idl @@ -0,0 +1,69 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Hit Test Module (https://immersive-web.github.io/hit-test/) + +enum XRHitTestTrackableType { + "point", + "plane", + "mesh" +}; + +dictionary XRHitTestOptionsInit { + required XRSpace space; + FrozenArray<XRHitTestTrackableType> entityTypes; + XRRay offsetRay; +}; + +dictionary XRTransientInputHitTestOptionsInit { + required DOMString profile; + FrozenArray<XRHitTestTrackableType> entityTypes; + XRRay offsetRay; +}; + +[SecureContext, Exposed=Window] +interface XRHitTestSource { + undefined cancel(); +}; + +[SecureContext, Exposed=Window] +interface XRTransientInputHitTestSource { + undefined cancel(); +}; + +[SecureContext, Exposed=Window] +interface XRHitTestResult { + XRPose? getPose(XRSpace baseSpace); +}; + +[SecureContext, Exposed=Window] +interface XRTransientInputHitTestResult { + [SameObject] readonly attribute XRInputSource inputSource; + readonly attribute FrozenArray<XRHitTestResult> results; +}; + +partial interface XRSession { + Promise<XRHitTestSource> requestHitTestSource(XRHitTestOptionsInit options); + Promise<XRTransientInputHitTestSource> requestHitTestSourceForTransientInput(XRTransientInputHitTestOptionsInit options); +}; + +partial interface XRFrame { + FrozenArray<XRHitTestResult> getHitTestResults(XRHitTestSource hitTestSource); + FrozenArray<XRTransientInputHitTestResult> getHitTestResultsForTransientInput(XRTransientInputHitTestSource hitTestSource); +}; + +dictionary XRRayDirectionInit { + double x = 0; + double y = 0; + double z = -1; + double w = 0; +}; + +[SecureContext, Exposed=Window] +interface XRRay { + constructor(optional DOMPointInit origin = {}, optional XRRayDirectionInit direction = {}); + constructor(XRRigidTransform transform); + [SameObject] readonly attribute DOMPointReadOnly origin; + [SameObject] readonly attribute DOMPointReadOnly direction; + [SameObject] readonly attribute Float32Array matrix; +}; diff --git a/testing/web-platform/tests/interfaces/webxr-lighting-estimation.idl b/testing/web-platform/tests/interfaces/webxr-lighting-estimation.idl new file mode 100644 index 0000000000..35aa1d746a --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr-lighting-estimation.idl @@ -0,0 +1,39 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Lighting Estimation API Level 1 (https://immersive-web.github.io/lighting-estimation/) + +[SecureContext, Exposed=Window] +interface XRLightProbe : EventTarget { + readonly attribute XRSpace probeSpace; + attribute EventHandler onreflectionchange; +}; + +enum XRReflectionFormat { + "srgba8", + "rgba16f", +}; + +[SecureContext, Exposed=Window] +interface XRLightEstimate { + readonly attribute Float32Array sphericalHarmonicsCoefficients; + readonly attribute DOMPointReadOnly primaryLightDirection; + readonly attribute DOMPointReadOnly primaryLightIntensity; +}; + +dictionary XRLightProbeInit { + XRReflectionFormat reflectionFormat = "srgba8"; +}; + +partial interface XRSession { + Promise<XRLightProbe> requestLightProbe(optional XRLightProbeInit options = {}); + readonly attribute XRReflectionFormat preferredReflectionFormat; +}; + +partial interface XRFrame { + XRLightEstimate? getLightEstimate(XRLightProbe lightProbe); +}; + +partial interface XRWebGLBinding { + WebGLTexture? getReflectionCubeMap(XRLightProbe lightProbe); +}; diff --git a/testing/web-platform/tests/interfaces/webxr.idl b/testing/web-platform/tests/interfaces/webxr.idl new file mode 100644 index 0000000000..939da53364 --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxr.idl @@ -0,0 +1,294 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Device API (https://immersive-web.github.io/webxr/) + +partial interface Navigator { + [SecureContext, SameObject] readonly attribute XRSystem xr; +}; + +[SecureContext, Exposed=Window] interface XRSystem : EventTarget { + // Methods + Promise<boolean> isSessionSupported(XRSessionMode mode); + [NewObject] Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit options = {}); + + // Events + attribute EventHandler ondevicechange; +}; + +enum XRSessionMode { + "inline", + "immersive-vr", + "immersive-ar" +}; + +dictionary XRSessionInit { + sequence<DOMString> requiredFeatures; + sequence<DOMString> optionalFeatures; +}; + +enum XRVisibilityState { + "visible", + "visible-blurred", + "hidden", +}; + +[SecureContext, Exposed=Window] interface XRSession : EventTarget { + // Attributes + readonly attribute XRVisibilityState visibilityState; + readonly attribute float? frameRate; + readonly attribute Float32Array? supportedFrameRates; + [SameObject] readonly attribute XRRenderState renderState; + [SameObject] readonly attribute XRInputSourceArray inputSources; + readonly attribute FrozenArray<DOMString> enabledFeatures; + + // Methods + undefined updateRenderState(optional XRRenderStateInit state = {}); + Promise<undefined> updateTargetFrameRate(float rate); + [NewObject] Promise<XRReferenceSpace> requestReferenceSpace(XRReferenceSpaceType type); + + unsigned long requestAnimationFrame(XRFrameRequestCallback callback); + undefined cancelAnimationFrame(unsigned long handle); + + Promise<undefined> end(); + + // Events + attribute EventHandler onend; + attribute EventHandler oninputsourceschange; + attribute EventHandler onselect; + attribute EventHandler onselectstart; + attribute EventHandler onselectend; + attribute EventHandler onsqueeze; + attribute EventHandler onsqueezestart; + attribute EventHandler onsqueezeend; + attribute EventHandler onvisibilitychange; + attribute EventHandler onframeratechange; +}; + +dictionary XRRenderStateInit { + double depthNear; + double depthFar; + double inlineVerticalFieldOfView; + XRWebGLLayer? baseLayer; + sequence<XRLayer>? layers; +}; + +[SecureContext, Exposed=Window] interface XRRenderState { + readonly attribute double depthNear; + readonly attribute double depthFar; + readonly attribute double? inlineVerticalFieldOfView; + readonly attribute XRWebGLLayer? baseLayer; +}; + +callback XRFrameRequestCallback = undefined (DOMHighResTimeStamp time, XRFrame frame); + +[SecureContext, Exposed=Window] interface XRFrame { + [SameObject] readonly attribute XRSession session; + readonly attribute DOMHighResTimeStamp predictedDisplayTime; + + XRViewerPose? getViewerPose(XRReferenceSpace referenceSpace); + XRPose? getPose(XRSpace space, XRSpace baseSpace); +}; + +[SecureContext, Exposed=Window] interface XRSpace : EventTarget { + +}; + +enum XRReferenceSpaceType { + "viewer", + "local", + "local-floor", + "bounded-floor", + "unbounded" +}; + +[SecureContext, Exposed=Window] +interface XRReferenceSpace : XRSpace { + [NewObject] XRReferenceSpace getOffsetReferenceSpace(XRRigidTransform originOffset); + + attribute EventHandler onreset; +}; + +[SecureContext, Exposed=Window] +interface XRBoundedReferenceSpace : XRReferenceSpace { + readonly attribute FrozenArray<DOMPointReadOnly> boundsGeometry; +}; + +enum XREye { + "none", + "left", + "right" +}; + +[SecureContext, Exposed=Window] interface XRView { + readonly attribute XREye eye; + readonly attribute Float32Array projectionMatrix; + [SameObject] readonly attribute XRRigidTransform transform; + readonly attribute double? recommendedViewportScale; + + undefined requestViewportScale(double? scale); +}; + +[SecureContext, Exposed=Window] interface XRViewport { + readonly attribute long x; + readonly attribute long y; + readonly attribute long width; + readonly attribute long height; +}; + +[SecureContext, Exposed=Window] +interface XRRigidTransform { + constructor(optional DOMPointInit position = {}, optional DOMPointInit orientation = {}); + [SameObject] readonly attribute DOMPointReadOnly position; + [SameObject] readonly attribute DOMPointReadOnly orientation; + readonly attribute Float32Array matrix; + [SameObject] readonly attribute XRRigidTransform inverse; +}; + +[SecureContext, Exposed=Window] interface XRPose { + [SameObject] readonly attribute XRRigidTransform transform; + [SameObject] readonly attribute DOMPointReadOnly? linearVelocity; + [SameObject] readonly attribute DOMPointReadOnly? angularVelocity; + + readonly attribute boolean emulatedPosition; +}; + +[SecureContext, Exposed=Window] interface XRViewerPose : XRPose { + [SameObject] readonly attribute FrozenArray<XRView> views; +}; + +enum XRHandedness { + "none", + "left", + "right" +}; + +enum XRTargetRayMode { + "gaze", + "tracked-pointer", + "screen" +}; + +[SecureContext, Exposed=Window] +interface XRInputSource { + readonly attribute XRHandedness handedness; + readonly attribute XRTargetRayMode targetRayMode; + [SameObject] readonly attribute XRSpace targetRaySpace; + [SameObject] readonly attribute XRSpace? gripSpace; + [SameObject] readonly attribute FrozenArray<DOMString> profiles; +}; + +[SecureContext, Exposed=Window] +interface XRInputSourceArray { + iterable<XRInputSource>; + readonly attribute unsigned long length; + getter XRInputSource(unsigned long index); +}; + +[SecureContext, Exposed=Window] +interface XRLayer : EventTarget {}; + +typedef (WebGLRenderingContext or + WebGL2RenderingContext) XRWebGLRenderingContext; + +dictionary XRWebGLLayerInit { + boolean antialias = true; + boolean depth = true; + boolean stencil = false; + boolean alpha = true; + boolean ignoreDepthValues = false; + double framebufferScaleFactor = 1.0; +}; + +[SecureContext, Exposed=Window] +interface XRWebGLLayer: XRLayer { + constructor(XRSession session, + XRWebGLRenderingContext context, + optional XRWebGLLayerInit layerInit = {}); + // Attributes + readonly attribute boolean antialias; + readonly attribute boolean ignoreDepthValues; + attribute float? fixedFoveation; + + [SameObject] readonly attribute WebGLFramebuffer? framebuffer; + readonly attribute unsigned long framebufferWidth; + readonly attribute unsigned long framebufferHeight; + + // Methods + XRViewport? getViewport(XRView view); + + // Static Methods + static double getNativeFramebufferScaleFactor(XRSession session); +}; + +partial dictionary WebGLContextAttributes { + boolean xrCompatible = false; +}; + +partial interface mixin WebGLRenderingContextBase { + [NewObject] Promise<undefined> makeXRCompatible(); +}; + +[SecureContext, Exposed=Window] +interface XRSessionEvent : Event { + constructor(DOMString type, XRSessionEventInit eventInitDict); + [SameObject] readonly attribute XRSession session; +}; + +dictionary XRSessionEventInit : EventInit { + required XRSession session; +}; + +[SecureContext, Exposed=Window] +interface XRInputSourceEvent : Event { + constructor(DOMString type, XRInputSourceEventInit eventInitDict); + [SameObject] readonly attribute XRFrame frame; + [SameObject] readonly attribute XRInputSource inputSource; +}; + +dictionary XRInputSourceEventInit : EventInit { + required XRFrame frame; + required XRInputSource inputSource; +}; + +[SecureContext, Exposed=Window] +interface XRInputSourcesChangeEvent : Event { + constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict); + [SameObject] readonly attribute XRSession session; + [SameObject] readonly attribute FrozenArray<XRInputSource> added; + [SameObject] readonly attribute FrozenArray<XRInputSource> removed; +}; + +dictionary XRInputSourcesChangeEventInit : EventInit { + required XRSession session; + required FrozenArray<XRInputSource> added; + required FrozenArray<XRInputSource> removed; + +}; + +[SecureContext, Exposed=Window] +interface XRReferenceSpaceEvent : Event { + constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict); + [SameObject] readonly attribute XRReferenceSpace referenceSpace; + [SameObject] readonly attribute XRRigidTransform? transform; +}; + +dictionary XRReferenceSpaceEventInit : EventInit { + required XRReferenceSpace referenceSpace; + XRRigidTransform? transform = null; +}; + +dictionary XRSessionSupportedPermissionDescriptor: PermissionDescriptor { + XRSessionMode mode; +}; + +dictionary XRPermissionDescriptor: PermissionDescriptor { + XRSessionMode mode; + sequence<DOMString> requiredFeatures; + sequence<DOMString> optionalFeatures; +}; + +[Exposed=Window] +interface XRPermissionStatus: PermissionStatus { + attribute FrozenArray<DOMString> granted; +}; diff --git a/testing/web-platform/tests/interfaces/webxrlayers.idl b/testing/web-platform/tests/interfaces/webxrlayers.idl new file mode 100644 index 0000000000..785a742e0b --- /dev/null +++ b/testing/web-platform/tests/interfaces/webxrlayers.idl @@ -0,0 +1,213 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: WebXR Layers API Level 1 (https://immersive-web.github.io/layers/) + +enum XRLayerLayout { + "default", + "mono", + "stereo", + "stereo-left-right", + "stereo-top-bottom" +}; + +[Exposed=Window] interface XRCompositionLayer : XRLayer { + readonly attribute XRLayerLayout layout; + + attribute boolean blendTextureSourceAlpha; + attribute boolean? chromaticAberrationCorrection; + attribute boolean forceMonoPresentation; + attribute float opacity; + readonly attribute unsigned long mipLevels; + + readonly attribute boolean needsRedraw; + + undefined destroy(); +}; + +[Exposed=Window] interface XRProjectionLayer : XRCompositionLayer { + readonly attribute unsigned long textureWidth; + readonly attribute unsigned long textureHeight; + readonly attribute unsigned long textureArrayLength; + + readonly attribute boolean ignoreDepthValues; + attribute float? fixedFoveation; + attribute XRRigidTransform? deltaPose; +}; + +[Exposed=Window] interface XRQuadLayer : XRCompositionLayer { + attribute XRSpace space; + attribute XRRigidTransform transform; + + attribute float width; + attribute float height; + + // Events + attribute EventHandler onredraw; +}; + +[Exposed=Window] interface XRCylinderLayer : XRCompositionLayer { + attribute XRSpace space; + attribute XRRigidTransform transform; + + attribute float radius; + attribute float centralAngle; + attribute float aspectRatio; + + // Events + attribute EventHandler onredraw; +}; + +[Exposed=Window] interface XREquirectLayer : XRCompositionLayer { + attribute XRSpace space; + attribute XRRigidTransform transform; + + attribute float radius; + attribute float centralHorizontalAngle; + attribute float upperVerticalAngle; + attribute float lowerVerticalAngle; + + // Events + attribute EventHandler onredraw; +}; + +[Exposed=Window] interface XRCubeLayer : XRCompositionLayer { + attribute XRSpace space; + attribute DOMPointReadOnly orientation; + + // Events + attribute EventHandler onredraw; +}; + +[Exposed=Window] interface XRSubImage { + [SameObject] readonly attribute XRViewport viewport; +}; + +[Exposed=Window] interface XRWebGLSubImage : XRSubImage { + [SameObject] readonly attribute WebGLTexture colorTexture; + [SameObject] readonly attribute WebGLTexture? depthStencilTexture; + [SameObject] readonly attribute WebGLTexture? motionVectorTexture; + + readonly attribute unsigned long? imageIndex; + readonly attribute unsigned long colorTextureWidth; + readonly attribute unsigned long colorTextureHeight; + readonly attribute unsigned long? depthStencilTextureWidth; + readonly attribute unsigned long? depthStencilTextureHeight; + readonly attribute unsigned long? motionVectorTextureWidth; + readonly attribute unsigned long? motionVectorTextureHeight; +}; + +enum XRTextureType { + "texture", + "texture-array" +}; + +dictionary XRProjectionLayerInit { + XRTextureType textureType = "texture"; + GLenum colorFormat = 0x1908; // RGBA + GLenum depthFormat = 0x1902; // DEPTH_COMPONENT + double scaleFactor = 1.0; +}; + +dictionary XRLayerInit { + required XRSpace space; + GLenum colorFormat = 0x1908; // RGBA + GLenum? depthFormat; + unsigned long mipLevels = 1; + required unsigned long viewPixelWidth; + required unsigned long viewPixelHeight; + XRLayerLayout layout = "mono"; + boolean isStatic = false; +}; + +dictionary XRQuadLayerInit : XRLayerInit { + XRTextureType textureType = "texture"; + XRRigidTransform? transform; + float width = 1.0; + float height = 1.0; +}; + +dictionary XRCylinderLayerInit : XRLayerInit { + XRTextureType textureType = "texture"; + XRRigidTransform? transform; + float radius = 2.0; + float centralAngle = 0.78539; + float aspectRatio = 2.0; +}; + +dictionary XREquirectLayerInit : XRLayerInit { + XRTextureType textureType = "texture"; + XRRigidTransform? transform; + float radius = 0; + float centralHorizontalAngle = 6.28318; + float upperVerticalAngle = 1.570795; + float lowerVerticalAngle = -1.570795; +}; + +dictionary XRCubeLayerInit : XRLayerInit { + DOMPointReadOnly? orientation; +}; + +[Exposed=Window] interface XRWebGLBinding { + constructor(XRSession session, XRWebGLRenderingContext context); + + readonly attribute double nativeProjectionScaleFactor; + readonly attribute boolean usesDepthValues; + + XRProjectionLayer createProjectionLayer(optional XRProjectionLayerInit init = {}); + XRQuadLayer createQuadLayer(optional XRQuadLayerInit init = {}); + XRCylinderLayer createCylinderLayer(optional XRCylinderLayerInit init = {}); + XREquirectLayer createEquirectLayer(optional XREquirectLayerInit init = {}); + XRCubeLayer createCubeLayer(optional XRCubeLayerInit init = {}); + + XRWebGLSubImage getSubImage(XRCompositionLayer layer, XRFrame frame, optional XREye eye = "none"); + XRWebGLSubImage getViewSubImage(XRProjectionLayer layer, XRView view); +}; + +dictionary XRMediaLayerInit { + required XRSpace space; + XRLayerLayout layout = "mono"; + boolean invertStereo = false; +}; + +dictionary XRMediaQuadLayerInit : XRMediaLayerInit { + XRRigidTransform? transform; + float? width; + float? height; +}; + +dictionary XRMediaCylinderLayerInit : XRMediaLayerInit { + XRRigidTransform? transform; + float radius = 2.0; + float centralAngle = 0.78539; + float? aspectRatio; +}; + +dictionary XRMediaEquirectLayerInit : XRMediaLayerInit { + XRRigidTransform? transform; + float radius = 0.0; + float centralHorizontalAngle = 6.28318; + float upperVerticalAngle = 1.570795; + float lowerVerticalAngle = -1.570795; +}; + +[Exposed=Window] interface XRMediaBinding { + constructor(XRSession session); + + XRQuadLayer createQuadLayer(HTMLVideoElement video, optional XRMediaQuadLayerInit init = {}); + XRCylinderLayer createCylinderLayer(HTMLVideoElement video, optional XRMediaCylinderLayerInit init = {}); + XREquirectLayer createEquirectLayer(HTMLVideoElement video, optional XRMediaEquirectLayerInit init = {}); +}; + +[SecureContext, Exposed=Window] interface XRLayerEvent : Event { + constructor(DOMString type, XRLayerEventInit eventInitDict); + [SameObject] readonly attribute XRLayer layer; +}; + +dictionary XRLayerEventInit : EventInit { + required XRLayer layer; +}; + +[SecureContext, Exposed=Window] partial interface XRRenderState { + readonly attribute FrozenArray<XRLayer> layers; +}; diff --git a/testing/web-platform/tests/interfaces/window-controls-overlay.idl b/testing/web-platform/tests/interfaces/window-controls-overlay.idl new file mode 100644 index 0000000000..051978d693 --- /dev/null +++ b/testing/web-platform/tests/interfaces/window-controls-overlay.idl @@ -0,0 +1,28 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Window Controls Overlay (https://wicg.github.io/window-controls-overlay/) + +[SecureContext, Exposed=(Window)] +partial interface Navigator { + [SameObject] readonly attribute WindowControlsOverlay windowControlsOverlay; +}; + +[Exposed=Window] +interface WindowControlsOverlay : EventTarget { + readonly attribute boolean visible; + DOMRect getTitlebarAreaRect(); + attribute EventHandler ongeometrychange; +}; + +[Exposed=Window] +interface WindowControlsOverlayGeometryChangeEvent : Event { + constructor(DOMString type, WindowControlsOverlayGeometryChangeEventInit eventInitDict); + [SameObject] readonly attribute DOMRect titlebarAreaRect; + readonly attribute boolean visible; +}; + +dictionary WindowControlsOverlayGeometryChangeEventInit : EventInit { + required DOMRect titlebarAreaRect; + boolean visible = false; +}; diff --git a/testing/web-platform/tests/interfaces/window-placement.idl b/testing/web-platform/tests/interfaces/window-placement.idl new file mode 100644 index 0000000000..ac86c1d502 --- /dev/null +++ b/testing/web-platform/tests/interfaces/window-placement.idl @@ -0,0 +1,42 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Multi-Screen Window Placement (https://w3c.github.io/window-placement/) + +partial interface Screen /* : EventTarget */ { + [SecureContext] + readonly attribute boolean isExtended; + + [SecureContext] + attribute EventHandler onchange; +}; + +partial interface Window { + [SecureContext] + Promise<ScreenDetails> getScreenDetails(); +}; + +[Exposed=Window, SecureContext] +interface ScreenDetails : EventTarget { + readonly attribute FrozenArray<ScreenDetailed> screens; + readonly attribute ScreenDetailed currentScreen; + + attribute EventHandler onscreenschange; + attribute EventHandler oncurrentscreenchange; +}; + +[Exposed=Window, SecureContext] +interface ScreenDetailed : Screen { + readonly attribute long availLeft; + readonly attribute long availTop; + readonly attribute long left; + readonly attribute long top; + readonly attribute boolean isPrimary; + readonly attribute boolean isInternal; + readonly attribute float devicePixelRatio; + readonly attribute DOMString label; +}; + +partial dictionary FullscreenOptions { + ScreenDetailed screen; +}; diff --git a/testing/web-platform/tests/interfaces/xhr.idl b/testing/web-platform/tests/interfaces/xhr.idl new file mode 100644 index 0000000000..3abd09ce5e --- /dev/null +++ b/testing/web-platform/tests/interfaces/xhr.idl @@ -0,0 +1,99 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: XMLHttpRequest Standard (https://xhr.spec.whatwg.org/) + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequestEventTarget : EventTarget { + // event handlers + attribute EventHandler onloadstart; + attribute EventHandler onprogress; + attribute EventHandler onabort; + attribute EventHandler onerror; + attribute EventHandler onload; + attribute EventHandler ontimeout; + attribute EventHandler onloadend; +}; + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequestUpload : XMLHttpRequestEventTarget { +}; + +enum XMLHttpRequestResponseType { + "", + "arraybuffer", + "blob", + "document", + "json", + "text" +}; + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +interface XMLHttpRequest : XMLHttpRequestEventTarget { + constructor(); + + // event handler + attribute EventHandler onreadystatechange; + + // states + const unsigned short UNSENT = 0; + const unsigned short OPENED = 1; + const unsigned short HEADERS_RECEIVED = 2; + const unsigned short LOADING = 3; + const unsigned short DONE = 4; + readonly attribute unsigned short readyState; + + // request + undefined open(ByteString method, USVString url); + undefined open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null); + undefined setRequestHeader(ByteString name, ByteString value); + attribute unsigned long timeout; + attribute boolean withCredentials; + [SameObject] readonly attribute XMLHttpRequestUpload upload; + undefined send(optional (Document or XMLHttpRequestBodyInit)? body = null); + undefined abort(); + + // response + readonly attribute USVString responseURL; + readonly attribute unsigned short status; + readonly attribute ByteString statusText; + ByteString? getResponseHeader(ByteString name); + ByteString getAllResponseHeaders(); + undefined overrideMimeType(DOMString mime); + attribute XMLHttpRequestResponseType responseType; + readonly attribute any response; + readonly attribute USVString responseText; + [Exposed=Window] readonly attribute Document? responseXML; +}; + +typedef (File or USVString) FormDataEntryValue; + +[Exposed=(Window,Worker)] +interface FormData { + constructor(optional HTMLFormElement form); + + undefined append(USVString name, USVString value); + undefined append(USVString name, Blob blobValue, optional USVString filename); + undefined delete(USVString name); + FormDataEntryValue? get(USVString name); + sequence<FormDataEntryValue> getAll(USVString name); + boolean has(USVString name); + undefined set(USVString name, USVString value); + undefined set(USVString name, Blob blobValue, optional USVString filename); + iterable<USVString, FormDataEntryValue>; +}; + +[Exposed=(Window,Worker)] +interface ProgressEvent : Event { + constructor(DOMString type, optional ProgressEventInit eventInitDict = {}); + + readonly attribute boolean lengthComputable; + readonly attribute unsigned long long loaded; + readonly attribute unsigned long long total; +}; + +dictionary ProgressEventInit : EventInit { + boolean lengthComputable = false; + unsigned long long loaded = 0; + unsigned long long total = 0; +}; |