summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/interfaces')
-rw-r--r--testing/web-platform/tests/interfaces/ANGLE_instanced_arrays.idl12
-rw-r--r--testing/web-platform/tests/interfaces/CSP.idl56
-rw-r--r--testing/web-platform/tests/interfaces/DOM-Parsing.idl26
-rw-r--r--testing/web-platform/tests/interfaces/EXT_blend_minmax.idl10
-rw-r--r--testing/web-platform/tests/interfaces/EXT_color_buffer_float.idl8
-rw-r--r--testing/web-platform/tests/interfaces/EXT_color_buffer_half_float.idl12
-rw-r--r--testing/web-platform/tests/interfaces/EXT_disjoint_timer_query.idl30
-rw-r--r--testing/web-platform/tests/interfaces/EXT_disjoint_timer_query_webgl2.idl14
-rw-r--r--testing/web-platform/tests/interfaces/EXT_float_blend.idl8
-rw-r--r--testing/web-platform/tests/interfaces/EXT_frag_depth.idl8
-rw-r--r--testing/web-platform/tests/interfaces/EXT_sRGB.idl12
-rw-r--r--testing/web-platform/tests/interfaces/EXT_shader_texture_lod.idl8
-rw-r--r--testing/web-platform/tests/interfaces/EXT_texture_compression_bptc.idl12
-rw-r--r--testing/web-platform/tests/interfaces/EXT_texture_compression_rgtc.idl12
-rw-r--r--testing/web-platform/tests/interfaces/EXT_texture_filter_anisotropic.idl10
-rw-r--r--testing/web-platform/tests/interfaces/EXT_texture_norm16.idl16
-rw-r--r--testing/web-platform/tests/interfaces/FedCM.idl121
-rw-r--r--testing/web-platform/tests/interfaces/FileAPI.idl100
-rw-r--r--testing/web-platform/tests/interfaces/IndexedDB.idl226
-rw-r--r--testing/web-platform/tests/interfaces/KHR_parallel_shader_compile.idl9
-rw-r--r--testing/web-platform/tests/interfaces/META.yml2
-rw-r--r--testing/web-platform/tests/interfaces/OES_draw_buffers_indexed.idl26
-rw-r--r--testing/web-platform/tests/interfaces/OES_element_index_uint.idl8
-rw-r--r--testing/web-platform/tests/interfaces/OES_fbo_render_mipmap.idl8
-rw-r--r--testing/web-platform/tests/interfaces/OES_standard_derivatives.idl9
-rw-r--r--testing/web-platform/tests/interfaces/OES_texture_float.idl7
-rw-r--r--testing/web-platform/tests/interfaces/OES_texture_float_linear.idl7
-rw-r--r--testing/web-platform/tests/interfaces/OES_texture_half_float.idl9
-rw-r--r--testing/web-platform/tests/interfaces/OES_texture_half_float_linear.idl7
-rw-r--r--testing/web-platform/tests/interfaces/OES_vertex_array_object.idl18
-rw-r--r--testing/web-platform/tests/interfaces/OVR_multiview2.idl14
-rw-r--r--testing/web-platform/tests/interfaces/README.md3
-rw-r--r--testing/web-platform/tests/interfaces/SVG.idl693
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_blend_equation_advanced_coherent.idl23
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_clip_cull_distance.idl20
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_color_buffer_float.idl11
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_astc.idl41
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc.idl19
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_etc1.idl10
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_pvrtc.idl13
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc.idl13
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_compressed_texture_s3tc_srgb.idl13
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_debug_renderer_info.idl12
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_debug_shaders.idl11
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_depth_texture.idl9
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_draw_buffers.idl46
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_draw_instanced_base_vertex_base_instance.idl14
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_lose_context.idl10
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_multi_draw.idl32
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_multi_draw_instanced_base_vertex_base_instance.idl26
-rw-r--r--testing/web-platform/tests/interfaces/WEBGL_provoking_vertex.idl13
-rw-r--r--testing/web-platform/tests/interfaces/WebCryptoAPI.idl237
-rw-r--r--testing/web-platform/tests/interfaces/accelerometer.idl28
-rw-r--r--testing/web-platform/tests/interfaces/ambient-light.idl10
-rw-r--r--testing/web-platform/tests/interfaces/anchors.idl37
-rw-r--r--testing/web-platform/tests/interfaces/anonymous-iframe.idl12
-rw-r--r--testing/web-platform/tests/interfaces/attribution-reporting-api.idl26
-rw-r--r--testing/web-platform/tests/interfaces/audio-output.idl17
-rw-r--r--testing/web-platform/tests/interfaces/audio-session.idl33
-rw-r--r--testing/web-platform/tests/interfaces/autoplay-detection.idl19
-rw-r--r--testing/web-platform/tests/interfaces/background-fetch.idl89
-rw-r--r--testing/web-platform/tests/interfaces/background-sync.idl30
-rw-r--r--testing/web-platform/tests/interfaces/badging.idl15
-rw-r--r--testing/web-platform/tests/interfaces/battery-status.idl21
-rw-r--r--testing/web-platform/tests/interfaces/beacon.idl8
-rw-r--r--testing/web-platform/tests/interfaces/capture-handle-identity.idl27
-rw-r--r--testing/web-platform/tests/interfaces/captured-mouse-events.idl20
-rw-r--r--testing/web-platform/tests/interfaces/captured-mouse-events.tentative.idl25
-rw-r--r--testing/web-platform/tests/interfaces/clipboard-apis.idl57
-rw-r--r--testing/web-platform/tests/interfaces/compat.idl13
-rw-r--r--testing/web-platform/tests/interfaces/compression.idl22
-rw-r--r--testing/web-platform/tests/interfaces/compute-pressure.idl37
-rw-r--r--testing/web-platform/tests/interfaces/console.idl34
-rw-r--r--testing/web-platform/tests/interfaces/contact-picker.idl44
-rw-r--r--testing/web-platform/tests/interfaces/content-index.idl46
-rw-r--r--testing/web-platform/tests/interfaces/cookie-store.idl113
-rw-r--r--testing/web-platform/tests/interfaces/crash-reporting.idl10
-rw-r--r--testing/web-platform/tests/interfaces/credential-management.idl105
-rw-r--r--testing/web-platform/tests/interfaces/csp-embedded-enforcement.idl8
-rw-r--r--testing/web-platform/tests/interfaces/csp-next.idl21
-rw-r--r--testing/web-platform/tests/interfaces/css-anchor-position.idl14
-rw-r--r--testing/web-platform/tests/interfaces/css-animation-worklet.idl37
-rw-r--r--testing/web-platform/tests/interfaces/css-animations-2.idl9
-rw-r--r--testing/web-platform/tests/interfaces/css-animations.idl47
-rw-r--r--testing/web-platform/tests/interfaces/css-cascade-6.idl10
-rw-r--r--testing/web-platform/tests/interfaces/css-cascade.idl14
-rw-r--r--testing/web-platform/tests/interfaces/css-color-5.idl12
-rw-r--r--testing/web-platform/tests/interfaces/css-conditional.idl27
-rw-r--r--testing/web-platform/tests/interfaces/css-contain-3.idl10
-rw-r--r--testing/web-platform/tests/interfaces/css-contain.idl13
-rw-r--r--testing/web-platform/tests/interfaces/css-counter-styles.idl23
-rw-r--r--testing/web-platform/tests/interfaces/css-font-loading.idl132
-rw-r--r--testing/web-platform/tests/interfaces/css-fonts.idl36
-rw-r--r--testing/web-platform/tests/interfaces/css-highlight-api.idl27
-rw-r--r--testing/web-platform/tests/interfaces/css-images-4.idl8
-rw-r--r--testing/web-platform/tests/interfaces/css-layout-api.idl144
-rw-r--r--testing/web-platform/tests/interfaces/css-masking.idl20
-rw-r--r--testing/web-platform/tests/interfaces/css-nav.idl48
-rw-r--r--testing/web-platform/tests/interfaces/css-paint-api.idl39
-rw-r--r--testing/web-platform/tests/interfaces/css-parser-api.idl76
-rw-r--r--testing/web-platform/tests/interfaces/css-properties-values-api.idl23
-rw-r--r--testing/web-platform/tests/interfaces/css-pseudo.idl16
-rw-r--r--testing/web-platform/tests/interfaces/css-regions.idl29
-rw-r--r--testing/web-platform/tests/interfaces/css-scroll-snap-2.idl33
-rw-r--r--testing/web-platform/tests/interfaces/css-shadow-parts.idl8
-rw-r--r--testing/web-platform/tests/interfaces/css-transitions-2.idl13
-rw-r--r--testing/web-platform/tests/interfaces/css-transitions.idl25
-rw-r--r--testing/web-platform/tests/interfaces/css-typed-om.idl428
-rw-r--r--testing/web-platform/tests/interfaces/css-view-transitions-2.idl25
-rw-r--r--testing/web-platform/tests/interfaces/css-view-transitions.idl14
-rw-r--r--testing/web-platform/tests/interfaces/cssom-view.idl203
-rw-r--r--testing/web-platform/tests/interfaces/cssom.idl169
-rw-r--r--testing/web-platform/tests/interfaces/datacue.idl12
-rw-r--r--testing/web-platform/tests/interfaces/deprecation-reporting.idl15
-rw-r--r--testing/web-platform/tests/interfaces/device-memory.idl14
-rw-r--r--testing/web-platform/tests/interfaces/device-posture.idl20
-rw-r--r--testing/web-platform/tests/interfaces/digital-goods.idl44
-rw-r--r--testing/web-platform/tests/interfaces/document-picture-in-picture.idl33
-rw-r--r--testing/web-platform/tests/interfaces/dom.idl648
-rw-r--r--testing/web-platform/tests/interfaces/edit-context.idl101
-rw-r--r--testing/web-platform/tests/interfaces/element-capture.idl14
-rw-r--r--testing/web-platform/tests/interfaces/element-timing.idl22
-rw-r--r--testing/web-platform/tests/interfaces/encoding.idl59
-rw-r--r--testing/web-platform/tests/interfaces/encrypted-media.idl142
-rw-r--r--testing/web-platform/tests/interfaces/entries-api.idl71
-rw-r--r--testing/web-platform/tests/interfaces/event-timing.idl29
-rw-r--r--testing/web-platform/tests/interfaces/eyedropper-api.idl18
-rw-r--r--testing/web-platform/tests/interfaces/fenced-frame.idl78
-rw-r--r--testing/web-platform/tests/interfaces/fetch.idl117
-rw-r--r--testing/web-platform/tests/interfaces/fido.idl47
-rw-r--r--testing/web-platform/tests/interfaces/file-system-access.idl72
-rw-r--r--testing/web-platform/tests/interfaces/filter-effects.idl341
-rw-r--r--testing/web-platform/tests/interfaces/font-metrics-api.idl42
-rw-r--r--testing/web-platform/tests/interfaces/fs.idl97
-rw-r--r--testing/web-platform/tests/interfaces/fullscreen.idl35
-rw-r--r--testing/web-platform/tests/interfaces/gamepad-extensions.idl43
-rw-r--r--testing/web-platform/tests/interfaces/gamepad.idl76
-rw-r--r--testing/web-platform/tests/interfaces/generic-sensor.idl30
-rw-r--r--testing/web-platform/tests/interfaces/geolocation-sensor.idl37
-rw-r--r--testing/web-platform/tests/interfaces/geolocation.idl65
-rw-r--r--testing/web-platform/tests/interfaces/geometry.idl290
-rw-r--r--testing/web-platform/tests/interfaces/get-installed-related-apps.idl16
-rw-r--r--testing/web-platform/tests/interfaces/gyroscope.idl18
-rw-r--r--testing/web-platform/tests/interfaces/hr-time.idl19
-rw-r--r--testing/web-platform/tests/interfaces/html-media-capture.idl8
-rw-r--r--testing/web-platform/tests/interfaces/html.idl2940
-rw-r--r--testing/web-platform/tests/interfaces/idle-detection.idl31
-rw-r--r--testing/web-platform/tests/interfaces/image-capture.idl160
-rw-r--r--testing/web-platform/tests/interfaces/image-resource.idl11
-rw-r--r--testing/web-platform/tests/interfaces/ink-enhancement.idl32
-rw-r--r--testing/web-platform/tests/interfaces/input-device-capabilities.idl24
-rw-r--r--testing/web-platform/tests/interfaces/input-events.idl14
-rw-r--r--testing/web-platform/tests/interfaces/intersection-observer.idl48
-rw-r--r--testing/web-platform/tests/interfaces/intervention-reporting.idl14
-rw-r--r--testing/web-platform/tests/interfaces/invokers.tentative.idl15
-rw-r--r--testing/web-platform/tests/interfaces/is-input-pending.idl16
-rw-r--r--testing/web-platform/tests/interfaces/js-self-profiling.idl44
-rw-r--r--testing/web-platform/tests/interfaces/keyboard-lock.idl14
-rw-r--r--testing/web-platform/tests/interfaces/keyboard-map.idl15
-rw-r--r--testing/web-platform/tests/interfaces/largest-contentful-paint.idl15
-rw-r--r--testing/web-platform/tests/interfaces/layout-instability.idl20
-rw-r--r--testing/web-platform/tests/interfaces/local-font-access.idl24
-rw-r--r--testing/web-platform/tests/interfaces/longtasks.idl79
-rw-r--r--testing/web-platform/tests/interfaces/magnetometer.idl31
-rw-r--r--testing/web-platform/tests/interfaces/managed-configuration.idl20
-rw-r--r--testing/web-platform/tests/interfaces/manifest-incubations.idl24
-rw-r--r--testing/web-platform/tests/interfaces/mathml-core.idl9
-rw-r--r--testing/web-platform/tests/interfaces/media-capabilities.idl115
-rw-r--r--testing/web-platform/tests/interfaces/media-playback-quality.idl18
-rw-r--r--testing/web-platform/tests/interfaces/media-source.idl117
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-automation.idl36
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-fromelement.idl17
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-handle-actions.idl31
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-region.idl15
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-streams.idl244
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-transform.idl23
-rw-r--r--testing/web-platform/tests/interfaces/mediacapture-viewport.idl14
-rw-r--r--testing/web-platform/tests/interfaces/mediasession.idl85
-rw-r--r--testing/web-platform/tests/interfaces/mediastream-recording.idl62
-rw-r--r--testing/web-platform/tests/interfaces/model-element.idl9
-rw-r--r--testing/web-platform/tests/interfaces/mst-content-hint.idl18
-rw-r--r--testing/web-platform/tests/interfaces/navigation-timing.idl72
-rw-r--r--testing/web-platform/tests/interfaces/netinfo.idl43
-rw-r--r--testing/web-platform/tests/interfaces/notifications.idl101
-rw-r--r--testing/web-platform/tests/interfaces/observable.tentative.idl31
-rw-r--r--testing/web-platform/tests/interfaces/orientation-event.idl78
-rw-r--r--testing/web-platform/tests/interfaces/orientation-sensor.idl28
-rw-r--r--testing/web-platform/tests/interfaces/page-lifecycle.idl19
-rw-r--r--testing/web-platform/tests/interfaces/paint-timing.idl7
-rw-r--r--testing/web-platform/tests/interfaces/parakeet.tentative.idl32
-rw-r--r--testing/web-platform/tests/interfaces/payment-handler.idl131
-rw-r--r--testing/web-platform/tests/interfaces/payment-request.idl112
-rw-r--r--testing/web-platform/tests/interfaces/performance-measure-memory.idl30
-rw-r--r--testing/web-platform/tests/interfaces/performance-timeline.idl51
-rw-r--r--testing/web-platform/tests/interfaces/periodic-background-sync.idl34
-rw-r--r--testing/web-platform/tests/interfaces/permissions-policy.idl29
-rw-r--r--testing/web-platform/tests/interfaces/permissions-request.idl8
-rw-r--r--testing/web-platform/tests/interfaces/permissions-revoke.idl8
-rw-r--r--testing/web-platform/tests/interfaces/permissions.idl41
-rw-r--r--testing/web-platform/tests/interfaces/picture-in-picture.idl41
-rw-r--r--testing/web-platform/tests/interfaces/pointerevents.idl64
-rw-r--r--testing/web-platform/tests/interfaces/pointerlock.idl28
-rw-r--r--testing/web-platform/tests/interfaces/portals.idl50
-rw-r--r--testing/web-platform/tests/interfaces/prefer-current-tab.idl8
-rw-r--r--testing/web-platform/tests/interfaces/prerendering-revamped.idl15
-rw-r--r--testing/web-platform/tests/interfaces/presentation-api.idl95
-rw-r--r--testing/web-platform/tests/interfaces/private-click-measurement.idl8
-rw-r--r--testing/web-platform/tests/interfaces/private-network-access.idl19
-rw-r--r--testing/web-platform/tests/interfaces/proximity.idl12
-rw-r--r--testing/web-platform/tests/interfaces/push-api.idl93
-rw-r--r--testing/web-platform/tests/interfaces/raw-camera-access.idl18
-rw-r--r--testing/web-platform/tests/interfaces/real-world-meshing.idl21
-rw-r--r--testing/web-platform/tests/interfaces/referrer-policy.idl16
-rw-r--r--testing/web-platform/tests/interfaces/remote-playback.idl32
-rw-r--r--testing/web-platform/tests/interfaces/reporting.idl39
-rw-r--r--testing/web-platform/tests/interfaces/requestStorageAccessFor.idl12
-rw-r--r--testing/web-platform/tests/interfaces/requestidlecallback.idl20
-rw-r--r--testing/web-platform/tests/interfaces/resize-observer.idl37
-rw-r--r--testing/web-platform/tests/interfaces/resource-timing.idl42
-rw-r--r--testing/web-platform/tests/interfaces/sanitizer-api.idl38
-rw-r--r--testing/web-platform/tests/interfaces/sanitizer-api.tentative.idl17
-rw-r--r--testing/web-platform/tests/interfaces/savedata.idl10
-rw-r--r--testing/web-platform/tests/interfaces/scheduling-apis.idl63
-rw-r--r--testing/web-platform/tests/interfaces/screen-capture.idl92
-rw-r--r--testing/web-platform/tests/interfaces/screen-orientation.idl35
-rw-r--r--testing/web-platform/tests/interfaces/screen-wake-lock.idl24
-rw-r--r--testing/web-platform/tests/interfaces/scroll-animations.idl37
-rw-r--r--testing/web-platform/tests/interfaces/scroll-to-text-fragment.idl12
-rw-r--r--testing/web-platform/tests/interfaces/secure-payment-confirmation.idl56
-rw-r--r--testing/web-platform/tests/interfaces/selection-api.idl46
-rw-r--r--testing/web-platform/tests/interfaces/serial.idl89
-rw-r--r--testing/web-platform/tests/interfaces/server-timing.idl17
-rw-r--r--testing/web-platform/tests/interfaces/service-workers.idl240
-rw-r--r--testing/web-platform/tests/interfaces/shape-detection-api.idl69
-rw-r--r--testing/web-platform/tests/interfaces/shared-storage.idl97
-rw-r--r--testing/web-platform/tests/interfaces/speech-api.idl202
-rw-r--r--testing/web-platform/tests/interfaces/storage-access.idl9
-rw-r--r--testing/web-platform/tests/interfaces/storage-buckets.idl45
-rw-r--r--testing/web-platform/tests/interfaces/storage.idl25
-rw-r--r--testing/web-platform/tests/interfaces/streams.idl230
-rw-r--r--testing/web-platform/tests/interfaces/svg-animations.idl68
-rw-r--r--testing/web-platform/tests/interfaces/testutils.idl9
-rw-r--r--testing/web-platform/tests/interfaces/text-detection-api.idl18
-rw-r--r--testing/web-platform/tests/interfaces/touch-events.idl79
-rw-r--r--testing/web-platform/tests/interfaces/trust-token-api.idl34
-rw-r--r--testing/web-platform/tests/interfaces/trusted-types.idl71
-rw-r--r--testing/web-platform/tests/interfaces/turtledove.idl239
-rw-r--r--testing/web-platform/tests/interfaces/ua-client-hints.idl45
-rw-r--r--testing/web-platform/tests/interfaces/uievents.idl250
-rw-r--r--testing/web-platform/tests/interfaces/url.idl46
-rw-r--r--testing/web-platform/tests/interfaces/urlpattern.idl63
-rw-r--r--testing/web-platform/tests/interfaces/user-timing.idl34
-rw-r--r--testing/web-platform/tests/interfaces/vibration.idl10
-rw-r--r--testing/web-platform/tests/interfaces/video-rvfc.idl27
-rw-r--r--testing/web-platform/tests/interfaces/virtual-keyboard.idl21
-rw-r--r--testing/web-platform/tests/interfaces/virtual-keyboard.tentative.idl15
-rw-r--r--testing/web-platform/tests/interfaces/wai-aria.idl61
-rw-r--r--testing/web-platform/tests/interfaces/wasm-js-api.idl110
-rw-r--r--testing/web-platform/tests/interfaces/wasm-web-api.idl11
-rw-r--r--testing/web-platform/tests/interfaces/web-animations-2.idl112
-rw-r--r--testing/web-platform/tests/interfaces/web-animations.idl149
-rw-r--r--testing/web-platform/tests/interfaces/web-app-launch.idl19
-rw-r--r--testing/web-platform/tests/interfaces/web-bluetooth-scanning.idl67
-rw-r--r--testing/web-platform/tests/interfaces/web-bluetooth.idl252
-rw-r--r--testing/web-platform/tests/interfaces/web-locks.idl50
-rw-r--r--testing/web-platform/tests/interfaces/web-nfc.idl81
-rw-r--r--testing/web-platform/tests/interfaces/web-otp.idl21
-rw-r--r--testing/web-platform/tests/interfaces/web-share.idl16
-rw-r--r--testing/web-platform/tests/interfaces/webaudio.idl683
-rw-r--r--testing/web-platform/tests/interfaces/webauthn.idl387
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-aac-codec-registration.idl17
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-av1-codec-registration.idl20
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-avc-codec-registration.idl25
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-flac-codec-registration.idl13
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-hevc-codec-registration.idl25
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-opus-codec-registration.idl22
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs-vp9-codec-registration.idl12
-rw-r--r--testing/web-platform/tests/interfaces/webcodecs.idl508
-rw-r--r--testing/web-platform/tests/interfaces/webcrypto-secure-curves.idl8
-rw-r--r--testing/web-platform/tests/interfaces/webdriver.idl9
-rw-r--r--testing/web-platform/tests/interfaces/webgl1.idl749
-rw-r--r--testing/web-platform/tests/interfaces/webgl2.idl581
-rw-r--r--testing/web-platform/tests/interfaces/webgpu.idl1305
-rw-r--r--testing/web-platform/tests/interfaces/webhid.idl127
-rw-r--r--testing/web-platform/tests/interfaces/webidl.idl49
-rw-r--r--testing/web-platform/tests/interfaces/webmidi.idl91
-rw-r--r--testing/web-platform/tests/interfaces/webnn.idl611
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-encoded-transform.idl140
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-ice.idl24
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-identity.idl97
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-priority.idl24
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-stats.idl287
-rw-r--r--testing/web-platform/tests/interfaces/webrtc-svc.idl8
-rw-r--r--testing/web-platform/tests/interfaces/webrtc.idl631
-rw-r--r--testing/web-platform/tests/interfaces/websockets.idl48
-rw-r--r--testing/web-platform/tests/interfaces/webtransport.idl151
-rw-r--r--testing/web-platform/tests/interfaces/webusb.idl258
-rw-r--r--testing/web-platform/tests/interfaces/webvr.tentative.idl204
-rw-r--r--testing/web-platform/tests/interfaces/webvtt.idl40
-rw-r--r--testing/web-platform/tests/interfaces/webxr-ar-module.idl29
-rw-r--r--testing/web-platform/tests/interfaces/webxr-depth-sensing.idl57
-rw-r--r--testing/web-platform/tests/interfaces/webxr-dom-overlays.idl31
-rw-r--r--testing/web-platform/tests/interfaces/webxr-gamepads-module.idl8
-rw-r--r--testing/web-platform/tests/interfaces/webxr-hand-input.idl66
-rw-r--r--testing/web-platform/tests/interfaces/webxr-hit-test.idl69
-rw-r--r--testing/web-platform/tests/interfaces/webxr-lighting-estimation.idl39
-rw-r--r--testing/web-platform/tests/interfaces/webxr-plane-detection.idl32
-rw-r--r--testing/web-platform/tests/interfaces/webxr.idl296
-rw-r--r--testing/web-platform/tests/interfaces/webxrlayers.idl221
-rw-r--r--testing/web-platform/tests/interfaces/window-controls-overlay.idl28
-rw-r--r--testing/web-platform/tests/interfaces/window-management.idl42
-rw-r--r--testing/web-platform/tests/interfaces/xhr.idl99
312 files changed, 24957 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_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..4070d50fcd
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/FedCM.idl
@@ -0,0 +1,121 @@
+// 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/)
+
+enum LoginStatus {
+ "logged-in",
+ "logged-out",
+};
+
+[Exposed=Window, SecureContext]
+
+interface NavigatorLogin {
+ Promise<undefined> setStatus(LoginStatus status);
+};
+
+partial interface Navigator {
+ [SecureContext] readonly attribute NavigatorLogin login;
+};
+
+dictionary IdentityCredentialDisconnectOptions : IdentityProviderConfig {
+ required USVString accountHint;
+};
+
+[Exposed=Window, SecureContext]
+interface IdentityCredential : Credential {
+ static Promise<undefined> disconnect(optional IdentityCredentialDisconnectOptions options = {});
+ readonly attribute USVString? token;
+ readonly attribute boolean isAutoSelected;
+};
+
+dictionary DisconnectedAccount {
+ required USVString account_id;
+};
+
+partial dictionary CredentialRequestOptions {
+ IdentityCredentialRequestOptions identity;
+};
+
+enum IdentityCredentialRequestOptionsContext {
+ "signin",
+ "signup",
+ "use",
+ "continue"
+};
+
+dictionary IdentityCredentialRequestOptions {
+ required sequence<IdentityProviderRequestOptions> providers;
+ IdentityCredentialRequestOptionsContext context = "signin";
+};
+
+dictionary IdentityProviderConfig {
+ required USVString configURL;
+ required USVString clientId;
+};
+
+dictionary IdentityProviderRequestOptions : IdentityProviderConfig {
+ USVString nonce;
+ DOMString loginHint;
+ DOMString domainHint;
+};
+
+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;
+ USVString name;
+};
+
+dictionary IdentityProviderAPIConfig {
+ required USVString accounts_endpoint;
+ required USVString client_metadata_endpoint;
+ required USVString id_assertion_endpoint;
+ required USVString login_url;
+ USVString disconnect_endpoint;
+ IdentityProviderBranding branding;
+};
+
+dictionary IdentityProviderAccount {
+ required USVString id;
+ required USVString name;
+ required USVString email;
+ USVString given_name;
+ USVString picture;
+ sequence<USVString> approved_clients;
+ sequence<DOMString> login_hints;
+ sequence<DOMString> domain_hints;
+};
+dictionary IdentityProviderAccountList {
+ sequence<IdentityProviderAccount> accounts;
+};
+
+dictionary IdentityProviderToken {
+ required USVString token;
+};
+
+dictionary IdentityProviderClientMetadata {
+ USVString privacy_policy_url;
+ USVString terms_of_service_url;
+};
+
+dictionary IdentityUserInfo {
+ USVString email;
+ USVString name;
+ USVString givenName;
+ USVString picture;
+};
+
+[Exposed=Window, SecureContext] interface IdentityProvider {
+ static undefined close();
+ static Promise<sequence<IdentityUserInfo>> getUserInfo(IdentityProviderConfig config);
+};
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_clip_cull_distance.idl b/testing/web-platform/tests/interfaces/WEBGL_clip_cull_distance.idl
new file mode 100644
index 0000000000..a3a6dd869f
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/WEBGL_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 WEBGL_clip_cull_distance Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_clip_cull_distance/)
+
+[Exposed=(Window,Worker), LegacyNoInterfaceObject]
+interface WEBGL_clip_cull_distance {
+ const GLenum MAX_CLIP_DISTANCES_WEBGL = 0x0D32;
+ const GLenum MAX_CULL_DISTANCES_WEBGL = 0x82F9;
+ const GLenum MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL = 0x82FA;
+
+ const GLenum CLIP_DISTANCE0_WEBGL = 0x3000;
+ const GLenum CLIP_DISTANCE1_WEBGL = 0x3001;
+ const GLenum CLIP_DISTANCE2_WEBGL = 0x3002;
+ const GLenum CLIP_DISTANCE3_WEBGL = 0x3003;
+ const GLenum CLIP_DISTANCE4_WEBGL = 0x3004;
+ const GLenum CLIP_DISTANCE5_WEBGL = 0x3005;
+ const GLenum CLIP_DISTANCE6_WEBGL = 0x3006;
+ const GLenum CLIP_DISTANCE7_WEBGL = 0x3007;
+};
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..fc2270029b
--- /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, unsigned long long firstsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ GLsizei drawcount);
+ undefined multiDrawElementsWEBGL(
+ GLenum mode,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ GLenum type,
+ ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
+ GLsizei drawcount);
+ undefined multiDrawArraysInstancedWEBGL(
+ GLenum mode,
+ ([AllowShared] Int32Array or sequence<GLint>) firstsList, unsigned long long firstsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
+ GLsizei drawcount);
+ undefined multiDrawElementsInstancedWEBGL(
+ GLenum mode,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ GLenum type,
+ ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long 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..7e4515cc36
--- /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, unsigned long long firstsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
+ ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, unsigned long long baseInstancesOffset,
+ GLsizei drawcount
+ );
+ undefined multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(
+ GLenum mode,
+ ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
+ GLenum type,
+ ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
+ ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
+ ([AllowShared] Int32Array or sequence<GLint>) baseVerticesList, unsigned long long baseVerticesOffset,
+ ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, unsigned long long baseInstancesOffset,
+ GLsizei drawcount
+ );
+};
diff --git a/testing/web-platform/tests/interfaces/WEBGL_provoking_vertex.idl b/testing/web-platform/tests/interfaces/WEBGL_provoking_vertex.idl
new file mode 100644
index 0000000000..035e1d233d
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/WEBGL_provoking_vertex.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_provoking_vertex Extension Specification (https://registry.khronos.org/webgl/extensions/WEBGL_provoking_vertex/)
+
+[Exposed=(Window,Worker), LegacyNoInterfaceObject]
+interface WEBGL_provoking_vertex {
+ const GLenum FIRST_VERTEX_CONVENTION_WEBGL = 0x8E4D;
+ const GLenum LAST_VERTEX_CONVENTION_WEBGL = 0x8E4E; // default
+ const GLenum PROVOKING_VERTEX_WEBGL = 0x8E4F;
+
+ undefined provokingVertexWEBGL(GLenum provokeMode);
+};
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..a082224dc8
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/accelerometer.idl
@@ -0,0 +1,28 @@
+// 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 = {});
+};
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..011cd934fc
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/ambient-light.idl
@@ -0,0 +1,10 @@
+// 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;
+};
diff --git a/testing/web-platform/tests/interfaces/anchors.idl b/testing/web-platform/tests/interfaces/anchors.idl
new file mode 100644
index 0000000000..d8c5aa69a8
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/anchors.idl
@@ -0,0 +1,37 @@
+// 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 {
+ readonly attribute FrozenArray<DOMString> persistentAnchors;
+
+ 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/anonymous-iframe.idl b/testing/web-platform/tests/interfaces/anonymous-iframe.idl
new file mode 100644
index 0000000000..11d19e320a
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/anonymous-iframe.idl
@@ -0,0 +1,12 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Iframe credentialless (https://wicg.github.io/anonymous-iframe/)
+
+partial interface HTMLIFrameElement {
+ attribute boolean credentialless;
+};
+
+partial interface Window {
+ readonly attribute boolean credentialless;
+};
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..ed4497b56f
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/attribution-reporting-api.idl
@@ -0,0 +1,26 @@
+// 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, SecureContext] attribute USVString attributionSrc;
+};
+
+HTMLAnchorElement includes HTMLAttributionSrcElementUtils;
+HTMLImageElement includes HTMLAttributionSrcElementUtils;
+HTMLScriptElement includes HTMLAttributionSrcElementUtils;
+
+dictionary AttributionReportingRequestOptions {
+ required boolean eventSourceEligible;
+ required boolean triggerEligible;
+};
+
+partial dictionary RequestInit {
+ AttributionReportingRequestOptions attributionReporting;
+};
+
+partial interface XMLHttpRequest {
+ [SecureContext]
+ undefined setAttributionReporting(AttributionReportingRequestOptions options);
+};
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/audio-session.idl b/testing/web-platform/tests/interfaces/audio-session.idl
new file mode 100644
index 0000000000..f542347c71
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/audio-session.idl
@@ -0,0 +1,33 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Audio Session (https://w3c.github.io/audio-session/)
+
+enum AudioSessionState {
+ "inactive",
+ "active",
+ "interrupted"
+};
+
+enum AudioSessionType {
+ "auto",
+ "playback",
+ "transient",
+ "transient-solo",
+ "ambient",
+ "play-and-record"
+};
+
+[Exposed=Window]
+partial interface Navigator {
+ // The default audio session that the user agent will use when media elements start/stop playing.
+ readonly attribute AudioSession audioSession;
+};
+
+[Exposed=Window]
+interface AudioSession : EventTarget {
+ attribute AudioSessionType type;
+
+ readonly attribute AudioSessionState state;
+ attribute EventHandler onstatechange;
+};
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..8b401e057a
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/badging.idl
@@ -0,0 +1,15 @@
+// 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]
+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/captured-mouse-events.idl b/testing/web-platform/tests/interfaces/captured-mouse-events.idl
new file mode 100644
index 0000000000..64c73b906d
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/captured-mouse-events.idl
@@ -0,0 +1,20 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Captured Mouse Events (https://screen-share.github.io/captured-mouse-events/)
+
+[Exposed=Window]
+interface CapturedMouseEvent : Event {
+ constructor(DOMString type, optional CapturedMouseEventInit eventInitDict = {});
+ readonly attribute long surfaceX;
+ readonly attribute long surfaceY;
+};
+
+dictionary CapturedMouseEventInit : EventInit {
+ long surfaceX = -1;
+ long surfaceY = -1;
+};
+
+partial interface CaptureController {
+ attribute EventHandler oncapturedmousechange;
+};
diff --git a/testing/web-platform/tests/interfaces/captured-mouse-events.tentative.idl b/testing/web-platform/tests/interfaces/captured-mouse-events.tentative.idl
new file mode 100644
index 0000000000..7b081cd9fd
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/captured-mouse-events.tentative.idl
@@ -0,0 +1,25 @@
+// https://screen-share.github.io/mouse-events/
+
+enum CaptureStartFocusBehavior {
+ "focus-captured-surface",
+ "no-focus-change"
+};
+
+[Exposed=Window, SecureContext]
+interface CaptureController : EventTarget {
+ constructor();
+ undefined setFocusBehavior(CaptureStartFocusBehavior focusBehavior);
+ attribute EventHandler oncapturedmousechange;
+};
+
+[Exposed=Window]
+interface CapturedMouseEvent : Event {
+ constructor(DOMString type, optional CapturedMouseEventInit eventInitDict = {});
+ readonly attribute long surfaceX;
+ readonly attribute long surfaceY;
+};
+
+dictionary CapturedMouseEventInit : EventInit {
+ long surfaceX = -1;
+ long surfaceY = -1;
+};
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..594484ced6
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/clipboard-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: 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);
+
+ static boolean supports(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(optional ClipboardUnsanitizedFormats formats = {});
+ Promise<DOMString> readText();
+ Promise<undefined> write(ClipboardItems data);
+ Promise<undefined> writeText(DOMString data);
+};
+
+dictionary ClipboardUnsanitizedFormats {
+ sequence<DOMString> unsanitized;
+};
+
+dictionary ClipboardPermissionDescriptor : PermissionDescriptor {
+ boolean allowWithoutGesture = false;
+};
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..7525d7c984
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/compression.idl
@@ -0,0 +1,22 @@
+// 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/)
+
+enum CompressionFormat {
+ "deflate",
+ "deflate-raw",
+ "gzip",
+};
+
+[Exposed=*]
+interface CompressionStream {
+ constructor(CompressionFormat format);
+};
+CompressionStream includes GenericTransformStream;
+
+[Exposed=*]
+interface DecompressionStream {
+ constructor(CompressionFormat 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..3e35dc4ee2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/compute-pressure.idl
@@ -0,0 +1,37 @@
+// 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 PressureSource { "thermals", "cpu" };
+
+enum PressureState { "nominal", "fair", "serious", "critical" };
+
+callback PressureUpdateCallback = undefined (
+ sequence<PressureRecord> changes,
+ PressureObserver observer
+);
+
+[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 DOMHighResTimeStamp time;
+ [Default] object toJSON();
+};
+
+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-picker.idl b/testing/web-platform/tests/interfaces/contact-picker.idl
new file mode 100644
index 0000000000..0119d0e2ce
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/contact-picker.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/)
+
+[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..8a000cac0b
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/cookie-store.idl
@@ -0,0 +1,113 @@
+// 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;
+ DOMHighResTimeStamp? expires = null;
+ USVString? domain = null;
+ USVString path = "/";
+ CookieSameSite sameSite = "strict";
+ boolean partitioned = false;
+};
+
+dictionary CookieStoreDeleteOptions {
+ required USVString name;
+ USVString? domain = null;
+ USVString path = "/";
+ boolean partitioned = false;
+};
+
+dictionary CookieListItem {
+ USVString name;
+ USVString value;
+ USVString? domain;
+ USVString path;
+ DOMHighResTimeStamp? expires;
+ boolean secure;
+ CookieSameSite sameSite;
+ boolean partitioned;
+};
+
+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..75e1831919
--- /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<undefined> 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-anchor-position.idl b/testing/web-platform/tests/interfaces/css-anchor-position.idl
new file mode 100644
index 0000000000..5d3973eff3
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-anchor-position.idl
@@ -0,0 +1,14 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: CSS Anchor Positioning (https://drafts.csswg.org/css-anchor-position-1/)
+
+[Exposed=Window]
+interface CSSPositionFallbackRule : CSSGroupingRule {
+ readonly attribute CSSOMString name;
+};
+
+[Exposed=Window]
+interface CSSTryRule : CSSRule {
+ [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
+};
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-6.idl b/testing/web-platform/tests/interfaces/css-cascade-6.idl
new file mode 100644
index 0000000000..3bdf6ba3a6
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-cascade-6.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 Cascading and Inheritance Level 6 (https://drafts.csswg.org/css-cascade-6/)
+
+[Exposed=Window]
+interface CSSScopeRule : CSSGroupingRule {
+ readonly attribute CSSOMString? start;
+ readonly attribute CSSOMString? end;
+};
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..0dd9969f6e
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-cascade.idl
@@ -0,0 +1,14 @@
+// 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/)
+
+[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..be2137a4a6
--- /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 ContentVisibilityAutoStateChangeEvent : Event {
+ constructor(DOMString type, optional ContentVisibilityAutoStateChangeEventInit eventInitDict = {});
+ readonly attribute boolean skipped;
+};
+dictionary ContentVisibilityAutoStateChangeEventInit : 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..100f1f7fed
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-font-loading.idl
@@ -0,0 +1,132 @@
+// 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 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 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..070cbc58f5
--- /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-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-scroll-snap-2.idl b/testing/web-platform/tests/interfaces/css-scroll-snap-2.idl
new file mode 100644
index 0000000000..50cbf6940a
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-scroll-snap-2.idl
@@ -0,0 +1,33 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: CSS Scroll Snap Module Level 2 (https://drafts.csswg.org/css-scroll-snap-2/)
+
+[Exposed=Window]
+interface SnapEvent : Event {
+ constructor(DOMString type, optional SnapEventInit eventInitDict = {});
+ readonly attribute EventTarget? target;
+ readonly attribute SnapTargetList snappedTargets;
+ readonly attribute SnapTargetList snapTargets;
+ readonly attribute boolean invokedProgrammatically;
+ readonly attribute boolean smoothlyScrolled;
+};
+
+[Exposed=Window]
+interface SnapTargetList {
+ readonly attribute SnapTargetArray x;
+ readonly attribute SnapTargetArray y;
+};
+
+[Exposed=Window]
+interface SnapTargetArray {
+ readonly attribute unsigned long length;
+ getter EventTarget? item (unsigned long index);
+};
+
+dictionary SnapEventInit : EventModifierInit {
+ sequence<EventTarget> snappedTargetsX = [];
+ sequence<EventTarget> snappedTargetsY = [];
+ sequence<EventTarget> snapTargetsListX = [];
+ sequence<EventTarget> snapTargetsListY = [];
+};
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-transitions-2.idl b/testing/web-platform/tests/interfaces/css-transitions-2.idl
new file mode 100644
index 0000000000..223810f761
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-transitions-2.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 Transitions Level 2 (https://drafts.csswg.org/css-transitions-2/)
+
+[Exposed=Window]
+interface CSSStartingStyleRule : CSSGroupingRule {
+};
+
+[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..d4ff45e486
--- /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 Level 1 (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..b0f26ea83c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-typed-om.idl
@@ -0,0 +1,428 @@
+// 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>>;
+ (undefined or CSSStyleValue) get(USVString property);
+ 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 cap(double value);
+ CSSUnitValue ch(double value);
+ CSSUnitValue em(double value);
+ CSSUnitValue ex(double value);
+ CSSUnitValue ic(double value);
+ CSSUnitValue lh(double value);
+ CSSUnitValue rcap(double value);
+ CSSUnitValue rch(double value);
+ CSSUnitValue rem(double value);
+ CSSUnitValue rex(double value);
+ CSSUnitValue ric(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-2.idl b/testing/web-platform/tests/interfaces/css-view-transitions-2.idl
new file mode 100644
index 0000000000..7435605cda
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-view-transitions-2.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 View Transitions Module Level 2 (https://drafts.csswg.org/css-view-transitions-2/)
+
+dictionary StartViewTransitionOptions {
+ UpdateCallback? update = null;
+ sequence<DOMString>? type = null;
+};
+
+partial interface Document {
+
+ ViewTransition startViewTransition(optional (UpdateCallback or StartViewTransitionOptions) callbackOptions = {});
+};
+
+partial interface CSSRule {
+ const unsigned short VIEW_TRANSITION_RULE = 15;
+};
+
+enum ViewTransitionNavigation { "auto", "none" };
+[Exposed=Window]
+interface CSSViewTransitionRule : CSSRule {
+ attribute ViewTransitionNavigation navigation;
+ attribute DOMTokenList type;
+};
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..ce39b7dcfc
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/css-view-transitions.idl
@@ -0,0 +1,14 @@
+// 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/)
+
+callback UpdateCallback = Promise<any> ();
+
+[Exposed=Window]
+interface ViewTransition {
+ readonly attribute Promise<undefined> updateCallbackDone;
+ readonly attribute Promise<undefined> ready;
+ readonly attribute Promise<undefined> finished;
+ undefined skipTransition();
+};
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..3f64113f57
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/cssom-view.idl
@@ -0,0 +1,203 @@
+// 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", "instant", "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;
+ boolean contentVisibilityAuto = false;
+ boolean opacityProperty = false;
+ boolean visibilityProperty = 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..94cd1912b9
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/cssom.idl
@@ -0,0 +1,169 @@
+// 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 : CSSGroupingRule {
+ 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;
+ readonly attribute CSSOMString? layerName;
+ readonly attribute CSSOMString? supportsText;
+};
+
+[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/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..0f1dded631
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/device-posture.idl
@@ -0,0 +1,20 @@
+// 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"
+};
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/document-picture-in-picture.idl b/testing/web-platform/tests/interfaces/document-picture-in-picture.idl
new file mode 100644
index 0000000000..f54f437a93
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/document-picture-in-picture.idl
@@ -0,0 +1,33 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Document Picture-in-Picture Specification (https://wicg.github.io/document-picture-in-picture/)
+
+[Exposed=Window]
+partial interface Window {
+ [SameObject, SecureContext] readonly attribute DocumentPictureInPicture
+ documentPictureInPicture;
+};
+
+[Exposed=Window, SecureContext]
+interface DocumentPictureInPicture : EventTarget {
+ [NewObject] Promise<Window> requestWindow(
+ optional DocumentPictureInPictureOptions options = {});
+ readonly attribute Window window;
+ attribute EventHandler onenter;
+};
+
+dictionary DocumentPictureInPictureOptions {
+ [EnforceRange] unsigned long long width = 0;
+ [EnforceRange] unsigned long long height = 0;
+};
+
+[Exposed=Window, SecureContext]
+interface DocumentPictureInPictureEvent : Event {
+ constructor(DOMString type, DocumentPictureInPictureEventInit eventInitDict);
+ [SameObject] readonly attribute Window window;
+};
+
+dictionary DocumentPictureInPictureEventInit : EventInit {
+ required Window window;
+};
diff --git a/testing/web-platform/tests/interfaces/dom.idl b/testing/web-platform/tests/interfaces/dom.idl
new file mode 100644
index 0000000000..cf2d4e4adc
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/dom.idl
@@ -0,0 +1,648 @@
+// 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);
+ [NewObject] static AbortSignal _any(sequence<AbortSignal> signals);
+
+ 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 boolean clonable;
+ 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";
+ boolean clonable = false;
+};
+
+[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);
+ Node createNSResolver(Node nodeResolver); // legacy
+ // 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..eb3174e25f
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/edit-context.idl
@@ -0,0 +1,101 @@
+// 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 HTMLElement {
+ 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 updateControlBounds(DOMRect controlBounds);
+ undefined updateSelectionBounds(DOMRect selectionBounds);
+ undefined updateCharacterBounds(unsigned long rangeStart, sequence<DOMRect> characterBounds);
+
+ sequence<HTMLElement> attachedElements();
+
+ readonly attribute DOMString text;
+ readonly attribute unsigned long selectionStart;
+ readonly attribute unsigned long selectionEnd;
+ 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 : EventInit {
+ 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(DOMString type, 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;
+};
+
+enum UnderlineStyle { "none", "solid", "double", "dotted", "dashed", "wavy" };
+enum UnderlineThickness { "none", "thin", "thick" };
+
+dictionary TextFormatInit {
+ unsigned long rangeStart;
+ unsigned long rangeEnd;
+ UnderlineStyle underlineStyle;
+ UnderlineThickness underlineThickness;
+};
+
+[Exposed=Window]
+interface TextFormat {
+ constructor(optional TextFormatInit options = {});
+ readonly attribute unsigned long rangeStart;
+ readonly attribute unsigned long rangeEnd;
+ readonly attribute UnderlineStyle underlineStyle;
+ readonly attribute UnderlineThickness underlineThickness;
+};
+
+dictionary TextFormatUpdateEventInit : EventInit {
+ sequence<TextFormat> textFormats;
+};
+
+[Exposed=Window]
+interface TextFormatUpdateEvent : Event {
+ constructor(DOMString type, optional TextFormatUpdateEventInit options = {});
+ sequence<TextFormat> getTextFormats();
+};
+
+dictionary CharacterBoundsUpdateEventInit : EventInit {
+ unsigned long rangeStart;
+ unsigned long rangeEnd;
+};
+
+[Exposed=Window]
+interface CharacterBoundsUpdateEvent : Event {
+ constructor(DOMString type, optional CharacterBoundsUpdateEventInit options = {});
+ readonly attribute unsigned long rangeStart;
+ readonly attribute unsigned long rangeEnd;
+};
diff --git a/testing/web-platform/tests/interfaces/element-capture.idl b/testing/web-platform/tests/interfaces/element-capture.idl
new file mode 100644
index 0000000000..619a0fd2f4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/element-capture.idl
@@ -0,0 +1,14 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Element Capture (https://screen-share.github.io/element-capture/)
+
+[Exposed=(Window,Worker), Serializable]
+interface RestrictionTarget {
+ [Exposed=Window, SecureContext] static Promise<RestrictionTarget> fromElement(Element element);
+};
+
+[Exposed = Window]
+partial interface BrowserCaptureMediaStreamTrack {
+ Promise<undefined> restrictTo(RestrictionTarget? RestrictionTarget);
+};
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..a9499f6237
--- /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 AllowSharedBufferSource 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..f5d5aa8d6c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/encrypted-media.idl
@@ -0,0 +1,142 @@
+// 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<MediaKeyStatus> getStatusForPolicy (optional MediaKeysPolicy policy = {});
+ Promise<boolean> setServerCertificate (BufferSource serverCertificate);
+};
+
+dictionary MediaKeysPolicy {
+ HDCPVersion minHdcpVersion;
+};
+
+enum HDCPVersion {
+ "1.0",
+ "1.1",
+ "1.2",
+ "1.3",
+ "1.4",
+ "2.0",
+ "2.1",
+ "2.2",
+ "2.3",
+};
+
+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..ad2cb7b831
--- /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/fenced-frame.idl b/testing/web-platform/tests/interfaces/fenced-frame.idl
new file mode 100644
index 0000000000..2107655aa9
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/fenced-frame.idl
@@ -0,0 +1,78 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Fenced Frame (https://wicg.github.io/fenced-frame/)
+
+[Exposed=Window]
+interface HTMLFencedFrameElement : HTMLElement {
+ [HTMLConstructor] constructor();
+
+ [CEReactions] attribute FencedFrameConfig? config;
+ [CEReactions] attribute DOMString width;
+ [CEReactions] attribute DOMString height;
+ [CEReactions] attribute DOMString allow;
+};
+
+enum OpaqueProperty {"opaque"};
+
+typedef (unsigned long or OpaqueProperty) FencedFrameConfigSize;
+typedef USVString FencedFrameConfigURL;
+
+[Exposed=Window, Serializable]
+interface FencedFrameConfig {
+ readonly attribute FencedFrameConfigSize? containerWidth;
+ readonly attribute FencedFrameConfigSize? containerHeight;
+ readonly attribute FencedFrameConfigSize? contentWidth;
+ readonly attribute FencedFrameConfigSize? contentHeight;
+
+ undefined setSharedStorageContext(DOMString contextString);
+};
+
+typedef (USVString or FencedFrameConfig) UrnOrConfig;
+
+partial interface Navigator {
+ Promise<undefined> deprecatedReplaceInURN(
+ UrnOrConfig urnOrConfig, record<USVString, USVString> replacements);
+};
+
+enum FenceReportingDestination {
+ "buyer",
+ "seller",
+ "component-seller",
+ "direct-seller",
+ "shared-storage-select-url",
+};
+
+dictionary FenceEvent {
+ // This dictionary has two mutually exclusive modes that aren’t represented as
+ // distinct IDL types due to distinguishability issues:
+ //
+ // When reporting to a preregistered destination (specified by enum), the following
+ // properties are used:
+ DOMString eventType;
+ DOMString eventData;
+ sequence<FenceReportingDestination> destination;
+
+ // When setting event data to be used later in an automatic beacon, the
+ // following properties are used:
+ boolean once = false;
+ boolean crossOriginExposed = false;
+
+ // When reporting to a custom destination URL (with substitution of macros defined by
+ // the Protected Audience buyer), the following property is used:
+ USVString destinationURL;
+};
+
+typedef (FenceEvent or DOMString) ReportEventType;
+
+[Exposed=Window]
+interface Fence {
+ undefined reportEvent(optional ReportEventType event = {});
+ undefined setReportEventDataForAutomaticBeacons(optional FenceEvent event = {});
+ sequence<FencedFrameConfig> getNestedConfigs();
+};
+
+partial interface Window {
+ // Collection of fenced frame APIs
+ readonly attribute Fence? fence;
+};
diff --git a/testing/web-platform/tests/interfaces/fetch.idl b/testing/web-platform/tests/interfaces/fetch.idl
new file mode 100644
index 0000000000..5038aeba6c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/fetch.idl
@@ -0,0 +1,117 @@
+// 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);
+ sequence<ByteString> getSetCookie();
+ 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", "json", "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..f1d8606507
--- /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..46a59dd1ac
--- /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;
+};
+
+[Exposed=DedicatedWorker, SecureContext]
+interface FileSystemSyncAccessHandle {
+ unsigned long long read(AllowSharedBufferSource buffer,
+ optional FileSystemReadWriteOptions options = {});
+ unsigned long long write(AllowSharedBufferSource 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..81776a46ec
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/gamepad-extensions.idl
@@ -0,0 +1,43 @@
+// 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 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;
+};
+
+[Exposed=Window]
+partial interface GamepadHapticActuator {
+ Promise<boolean> pulse(double value, double duration);
+};
diff --git a/testing/web-platform/tests/interfaces/gamepad.idl b/testing/web-platform/tests/interfaces/gamepad.idl
new file mode 100644
index 0000000000..77a22c1d85
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/gamepad.idl
@@ -0,0 +1,76 @@
+// 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;
+ [SameObject] readonly attribute GamepadHapticActuator vibrationActuator;
+};
+
+[Exposed=Window, SecureContext]
+interface GamepadButton {
+ readonly attribute boolean pressed;
+ readonly attribute boolean touched;
+ readonly attribute double value;
+};
+
+enum GamepadMappingType {
+ "",
+ "standard",
+ "xr-standard",
+};
+
+[Exposed=Window]
+interface GamepadHapticActuator {
+ [SameObject] readonly attribute FrozenArray<GamepadHapticEffectType> effects;
+ Promise<GamepadHapticsResult> playEffect(
+ GamepadHapticEffectType type,
+ optional GamepadEffectParameters params = {}
+ );
+ Promise<GamepadHapticsResult> reset();
+};
+
+enum GamepadHapticsResult {
+ "complete",
+ "preempted"
+};
+
+enum GamepadHapticEffectType {
+ "dual-rumble"
+};
+
+dictionary GamepadEffectParameters {
+ unsigned long long duration = 0;
+ unsigned long long startDelay = 0;
+ double strongMagnitude = 0.0;
+ double weakMagnitude = 0.0;
+};
+
+[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..a997bb62c2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/generic-sensor.idl
@@ -0,0 +1,30 @@
+// 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;
+};
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..89117af375
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/geolocation-sensor.idl
@@ -0,0 +1,37 @@
+// 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;
+};
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..fd80669bfc
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/gyroscope.idl
@@ -0,0 +1,18 @@
+// 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";
+};
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..9193a7487e
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/html.idl
@@ -0,0 +1,2940 @@
+// 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 {
+ static Document parseHTMLUnsafe(DOMString html);
+
+ // 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();
+
+ // The popover API
+ undefined showPopover();
+ undefined hidePopover();
+ boolean togglePopover(optional boolean force);
+ [CEReactions] attribute DOMString? popover;
+};
+
+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;
+ [CEReactions] attribute DOMString fetchPriority;
+
+ // 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;
+ [CEReactions] attribute DOMString fetchPriority;
+
+ 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
+};
+HTMLInputElement includes PopoverInvokerElement;
+
+[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;
+};
+HTMLButtonElement includes PopoverInvokerElement;
+
+[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);
+
+ undefined showPicker();
+
+ 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 DOMString name;
+ [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;
+ [CEReactions] attribute DOMString fetchPriority;
+
+ static boolean supports(DOMString type);
+
+ // also has obsolete members
+};
+
+[Exposed=Window]
+interface HTMLTemplateElement : HTMLElement {
+ [HTMLConstructor] constructor();
+
+ readonly attribute DocumentFragment content;
+ [CEReactions] attribute DOMString shadowRootMode;
+ [CEReactions] attribute boolean shadowRootDelegatesFocus;
+};
+
+[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);
+ DOMString? getName(CustomElementConstructor constructor);
+ 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;
+
+ // Custom state pseudo-class
+ [SameObject] readonly attribute CustomStateSet states;
+};
+
+// 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 CustomStateSet {
+ setlike<DOMString>;
+};
+
+[Exposed=(Window)]
+interface VisibilityStateEntry : PerformanceEntry {
+ readonly attribute DOMString name; // shadows inherited name
+ readonly attribute DOMString entryType; // shadows inherited entryType
+ readonly attribute DOMHighResTimeStamp startTime; // shadows inherited startTime
+ readonly attribute unsigned long duration; // shadows inherited duration
+};
+
+[Exposed=Window]
+interface UserActivation {
+ readonly attribute boolean hasBeenActive;
+ readonly attribute boolean isActive;
+};
+
+partial interface Navigator {
+ [SameObject] readonly attribute UserActivation userActivation;
+};
+
+[Exposed=Window]
+interface ToggleEvent : Event {
+ constructor(DOMString type, optional ToggleEventInit eventInitDict = {});
+ readonly attribute DOMString oldState;
+ readonly attribute DOMString newState;
+};
+
+dictionary ToggleEventInit : EventInit {
+ DOMString oldState = "";
+ DOMString newState = "";
+};
+
+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 CloseWatcher : EventTarget {
+ constructor(optional CloseWatcherOptions options = {});
+
+ undefined requestClose();
+ undefined close();
+ undefined destroy();
+
+ attribute EventHandler oncancel;
+ attribute EventHandler onclose;
+};
+
+dictionary CloseWatcherOptions {
+ AbortSignal signal;
+};
+
+[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;
+};
+
+interface mixin PopoverInvokerElement {
+ [CEReactions] attribute Element? popoverTargetElement;
+ [CEReactions] attribute DOMString popoverTargetAction;
+};
+
+[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 Navigation navigation;
+ 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 = "");
+
+ // 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.
+ getter object (DOMString name);
+
+ // the user agent
+ readonly attribute Navigator navigator;
+ [Replaceable] 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 Navigation : EventTarget {
+ sequence<NavigationHistoryEntry> entries();
+ readonly attribute NavigationHistoryEntry? currentEntry;
+ undefined updateCurrentEntry(NavigationUpdateCurrentEntryOptions options);
+ readonly attribute NavigationTransition? transition;
+ readonly attribute NavigationActivation? activation;
+
+ 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"
+};
+
+enum NavigationType {
+ "push",
+ "replace",
+ "reload",
+ "traverse"
+};
+
+[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;
+};
+
+[Exposed=Window]
+interface NavigationTransition {
+ readonly attribute NavigationType navigationType;
+ readonly attribute NavigationHistoryEntry from;
+ readonly attribute Promise<undefined> finished;
+};
+
+[Exposed=Window]
+interface NavigationActivation {
+ readonly attribute NavigationHistoryEntry? from;
+ readonly attribute NavigationHistoryEntry entry;
+ readonly attribute NavigationType navigationType;
+};
+
+[Exposed=Window]
+interface NavigateEvent : Event {
+ constructor(DOMString type, NavigateEventInit eventInitDict);
+
+ 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;
+ readonly attribute boolean hasUAVisualTransition;
+
+ 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;
+ boolean hasUAVisualTransition = false;
+};
+
+dictionary NavigationInterceptOptions {
+ NavigationInterceptHandler handler;
+ NavigationFocusReset focusReset;
+ NavigationScrollBehavior scroll;
+};
+
+enum NavigationFocusReset {
+ "after-transition",
+ "manual"
+};
+
+enum NavigationScrollBehavior {
+ "after-transition",
+ "manual"
+};
+
+callback NavigationInterceptHandler = Promise<undefined> ();
+
+[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 NavigationCurrentEntryChangeEvent : Event {
+ constructor(DOMString type, NavigationCurrentEntryChangeEventInit eventInitDict);
+
+ readonly attribute NavigationType? navigationType;
+ readonly attribute NavigationHistoryEntry from;
+};
+
+dictionary NavigationCurrentEntryChangeEventInit : EventInit {
+ NavigationType? navigationType = null;
+ required NavigationHistoryEntry from;
+};
+
+[Exposed=Window]
+interface PopStateEvent : Event {
+ constructor(DOMString type, optional PopStateEventInit eventInitDict = {});
+
+ readonly attribute any state;
+ readonly attribute boolean hasUAVisualTransition;
+};
+
+dictionary PopStateEventInit : EventInit {
+ any state = null;
+ boolean hasUAVisualTransition = false;
+};
+
+[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 PageRevealEvent : Event {
+ constructor(DOMString type, optional PageRevealEventInit eventInitDict = {});
+ readonly attribute ViewTransition? viewTransition;
+};
+
+dictionary PageRevealEventInit : EventInit {
+ ViewTransition? viewTransition = null;
+};
+
+[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 object promise;
+ readonly attribute any reason;
+};
+
+dictionary PromiseRejectionEventInit : EventInit {
+ required object 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 onbeforetoggle;
+ 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 onpagereveal;
+ 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"
+};
+
+partial interface Element {
+ [CEReactions] undefined setHTMLUnsafe(DOMString html);
+};
+
+partial interface ShadowRoot {
+ [CEReactions] undefined setHTMLUnsafe(DOMString html);
+};
+
+[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 { "from-image", "flipY" };
+enum PremultiplyAlpha { "none", "premultiply", "default" };
+enum ColorSpaceConversion { "none", "default" };
+enum ResizeQuality { "pixelated", "low", "medium", "high" };
+
+dictionary ImageBitmapOptions {
+ ImageOrientation imageOrientation = "from-image";
+ 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;
+ attribute EventHandler onclose;
+};
+
+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..21e03d4db8
--- /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;
+
+ sequence<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..8502a11357
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/intersection-observer.idl
@@ -0,0 +1,48 @@
+// 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 DOMString scrollMargin;
+ 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";
+ DOMString scrollMargin = "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/invokers.tentative.idl b/testing/web-platform/tests/interfaces/invokers.tentative.idl
new file mode 100644
index 0000000000..62f7398b82
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/invokers.tentative.idl
@@ -0,0 +1,15 @@
+interface mixin InvokerElement {
+ [CEReactions,Reflect=invoketarget] attribute Element? invokeTargetElement;
+ [CEReactions,Reflect,ReflectMissing="auto",ReflectEmpty="auto"] attribute DOMString invokeAction;
+};
+
+interface InvokeEvent : Event {
+ constructor(DOMString type, optional InvokeEventInit eventInitDict = {});
+ readonly attribute Element? invoker;
+ readonly attribute DOMString action;
+};
+
+dictionary InvokeEventInit : EventInit {
+ Element? invoker = null;
+ DOMString action = "auto";
+};
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..13d4940c1c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/longtasks.idl
@@ -0,0 +1,79 @@
+// 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 {
+ /* Overloading PerformanceEntry */
+ readonly attribute DOMHighResTimeStamp startTime;
+ readonly attribute DOMHighResTimeStamp duration;
+ readonly attribute DOMString name;
+ readonly attribute DOMString entryType;
+
+ readonly attribute FrozenArray<TaskAttributionTiming> attribution;
+ [Default] object toJSON();
+};
+
+[Exposed=Window]
+interface TaskAttributionTiming : PerformanceEntry {
+ /* Overloading PerformanceEntry */
+ readonly attribute DOMHighResTimeStamp startTime;
+ readonly attribute DOMHighResTimeStamp duration;
+ readonly attribute DOMString name;
+ readonly attribute DOMString entryType;
+
+ readonly attribute DOMString containerType;
+ readonly attribute DOMString containerSrc;
+ readonly attribute DOMString containerId;
+ readonly attribute DOMString containerName;
+ [Default] object toJSON();
+};
+
+[Exposed=Window]
+interface PerformanceLongAnimationFrameTiming : PerformanceEntry {
+ /* Overloading PerformanceEntry */
+ readonly attribute DOMHighResTimeStamp startTime;
+ readonly attribute DOMHighResTimeStamp duration;
+ readonly attribute DOMString name;
+ readonly attribute DOMString entryType;
+
+ readonly attribute DOMHighResTimeStamp renderStart;
+ readonly attribute DOMHighResTimeStamp styleAndLayoutStart;
+ readonly attribute DOMHighResTimeStamp blockingDuration;
+ readonly attribute DOMHighResTimeStamp firstUIEventTimestamp;
+ [SameObject] readonly attribute FrozenArray<PerformanceScriptTiming> scripts;
+ [Default] object toJSON();
+};
+
+enum ScriptInvokerType {
+ "classic-script",
+ "module-script",
+ "event-listener",
+ "user-callback",
+ "resolve-promise",
+ "reject-promise"
+};
+
+enum ScriptWindowAttribution {
+ "self", "descendant", "ancestor", "same-page", "other"
+};
+
+[Exposed=Window]
+interface PerformanceScriptTiming : PerformanceEntry {
+ /* Overloading PerformanceEntry */
+ readonly attribute DOMHighResTimeStamp startTime;
+ readonly attribute DOMHighResTimeStamp duration;
+ readonly attribute DOMString name;
+ readonly attribute DOMString entryType;
+
+ readonly attribute ScriptInvokerType invokerType;
+ readonly attribute DOMString invoker;
+ readonly attribute DOMHighResTimeStamp executionStart;
+ readonly attribute DOMString sourceLocation;
+ readonly attribute DOMHighResTimeStamp pauseDuration;
+ readonly attribute DOMHighResTimeStamp forcedStyleAndLayoutDuration;
+ readonly attribute Window? window;
+ readonly attribute ScriptWindowAttribution windowAttribution;
+ [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..ded7e3cba8
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/magnetometer.idl
@@ -0,0 +1,31 @@
+// 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;
+};
diff --git a/testing/web-platform/tests/interfaces/managed-configuration.idl b/testing/web-platform/tests/interfaces/managed-configuration.idl
new file mode 100644
index 0000000000..c04bf787cd
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/managed-configuration.idl
@@ -0,0 +1,20 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Managed Configuration API (https://wicg.github.io/WebApiDevice/managed_config/)
+
+[
+ SecureContext
+] partial interface Navigator {
+ [SecureContext, SameObject]
+ readonly attribute NavigatorManagedData managed;
+};
+
+[
+ SecureContext,
+ Exposed=Window
+] interface NavigatorManagedData : EventTarget {
+ // Managed Configuration API.
+ Promise<record<DOMString, object>> getManagedConfiguration(sequence<DOMString> keys);
+ attribute EventHandler onmanagedconfigurationchange;
+};
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..7a86a7a43c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/media-source.idl
@@ -0,0 +1,117 @@
+// 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)]
+interface ManagedMediaSource : MediaSource {
+ constructor();
+ readonly attribute boolean streaming;
+ attribute EventHandler onstartstreaming;
+ attribute EventHandler onendstreaming;
+};
+
+[Exposed=(Window,DedicatedWorker)]
+interface BufferedChangeEvent : Event {
+ constructor(DOMString type, optional BufferedChangeEventInit eventInitDict = {});
+
+ [SameObject] readonly attribute TimeRanges addedRanges;
+ [SameObject] readonly attribute TimeRanges removedRanges;
+};
+
+dictionary BufferedChangeEventInit : EventInit {
+ TimeRanges addedRanges;
+ TimeRanges removedRanges;
+};
+
+[Exposed=(Window,DedicatedWorker)]
+interface ManagedSourceBuffer : SourceBuffer {
+ attribute EventHandler onbufferedchange;
+};
+
+[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..373f0c328d
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/mediacapture-streams.idl
@@ -0,0 +1,244 @@
+// 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 {
+ unsigned long width;
+ unsigned long height;
+ double aspectRatio;
+ double frameRate;
+ DOMString facingMode;
+ DOMString resizeMode;
+ unsigned long sampleRate;
+ unsigned long sampleSize;
+ boolean echoCancellation;
+ boolean autoGainControl;
+ boolean noiseSuppression;
+ double latency;
+ unsigned 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 CameraDevicePermissionDescriptor : PermissionDescriptor {
+ 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..57c62dfbc9
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/mediasession.idl
@@ -0,0 +1,85 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Media Session (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",
+ "enterpictureinpicture"
+};
+
+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 {
+ unrestricted 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..496bfcf2e2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/mediastream-recording.idl
@@ -0,0 +1,62 @@
+// 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";
+ DOMHighResTimeStamp videoKeyFrameIntervalDuration;
+ unsigned long videoKeyFrameIntervalCount;
+};
+
+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-timing.idl b/testing/web-platform/tests/interfaces/navigation-timing.idl
new file mode 100644
index 0000000000..355950160e
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/navigation-timing.idl
@@ -0,0 +1,72 @@
+// 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;
+ readonly attribute DOMHighResTimeStamp criticalCHRestart;
+ [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..4300b17107
--- /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 = null;
+ 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/observable.tentative.idl b/testing/web-platform/tests/interfaces/observable.tentative.idl
new file mode 100644
index 0000000000..3ccd486a20
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/observable.tentative.idl
@@ -0,0 +1,31 @@
+[Exposed=*]
+interface Subscriber {
+ undefined next(any value);
+ undefined error(any error);
+ undefined complete();
+ undefined addTeardown(VoidFunction teardown);
+ readonly attribute boolean active;
+ readonly attribute AbortSignal signal;
+};
+
+
+callback SubscribeCallback = undefined (Subscriber subscriber);
+callback SubscriptionObserverCallback = undefined (any value);
+
+dictionary SubscriptionObserver {
+ SubscriptionObserverCallback next;
+ SubscriptionObserverCallback error;
+ VoidFunction complete;
+};
+
+typedef (SubscriptionObserverCallback or Observer) ObserverUnion;
+
+dictionary SubscribeOptions {
+ AbortSignal signal;
+};
+
+[Exposed=*]
+interface Observable {
+ constructor(SubscribeCallback callback);
+ undefined subscribe(optional ObserverUnion observer = {}, optional SubscribeOptions options = {});
+};
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..ffacfe576f
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/orientation-event.idl
@@ -0,0 +1,78 @@
+// 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(optional boolean absolute = false);
+};
+
+dictionary DeviceOrientationEventInit : EventInit {
+ double? alpha = null;
+ double? beta = null;
+ double? gamma = null;
+ boolean absolute = false;
+};
+
+partial interface Window {
+ [SecureContext] attribute EventHandler ondeviceorientationabsolute;
+};
+
+[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;
+};
+
+partial interface Window {
+ [SecureContext] attribute EventHandler ondevicemotion;
+};
+
+[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..6b258642c3
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/orientation-sensor.idl
@@ -0,0 +1,28 @@
+// 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 = {});
+};
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..396f461e94
--- /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 (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..91c01297f4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/payment-handler.idl
@@ -0,0 +1,131 @@
+// 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)]
+interface PaymentManager {
+ attribute DOMString userHint;
+ Promise<undefined> enableDelegations(sequence<PaymentDelegation> delegations);
+};
+
+enum PaymentDelegation {
+ "shippingAddress",
+ "payerName",
+ "payerPhone",
+ "payerEmail"
+};
+
+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;
+ sequence<PaymentShippingOption> shippingOptions;
+ object paymentMethodErrors;
+ AddressErrors shippingAddressErrors;
+};
+
+[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;
+ readonly attribute object? paymentOptions;
+ readonly attribute FrozenArray<PaymentShippingOption>? shippingOptions;
+ Promise<WindowClient?> openWindow(USVString url);
+ Promise<PaymentRequestDetailsUpdate?> changePaymentMethod(DOMString methodName, optional object? methodDetails = null);
+ Promise<PaymentRequestDetailsUpdate?> changeShippingAddress(optional AddressInit shippingAddress = {});
+ Promise<PaymentRequestDetailsUpdate?> changeShippingOption(DOMString shippingOption);
+ undefined respondWith(Promise<PaymentHandlerResponse> handlerResponsePromise);
+};
+
+dictionary PaymentRequestEventInit : ExtendableEventInit {
+ USVString topOrigin;
+ USVString paymentRequestOrigin;
+ DOMString paymentRequestId;
+ sequence<PaymentMethodData> methodData;
+ PaymentCurrencyAmount total;
+ sequence<PaymentDetailsModifier> modifiers;
+ PaymentOptions paymentOptions;
+ sequence<PaymentShippingOption> shippingOptions;
+};
+
+dictionary PaymentHandlerResponse {
+DOMString methodName;
+object details;
+DOMString? payerName;
+DOMString? payerEmail;
+DOMString? payerPhone;
+AddressInit shippingAddress;
+DOMString? shippingOption;
+};
+
+dictionary AddressInit {
+ DOMString country = "";
+ sequence<DOMString> addressLine = [];
+ DOMString region = "";
+ DOMString city = "";
+ DOMString dependentLocality = "";
+ DOMString postalCode = "";
+ DOMString sortingCode = "";
+ DOMString organization = "";
+ DOMString recipient = "";
+ DOMString phone = "";
+};
+
+dictionary PaymentOptions {
+ boolean requestPayerName = false;
+ boolean requestBillingAddress = false;
+ boolean requestPayerEmail = false;
+ boolean requestPayerPhone = false;
+ boolean requestShipping = false;
+ PaymentShippingType shippingType = "shipping";
+};
+
+dictionary PaymentShippingOption {
+ required DOMString id;
+ required DOMString label;
+ required PaymentCurrencyAmount amount;
+ boolean selected = false;
+};
+
+enum PaymentShippingType {
+ "shipping",
+ "delivery",
+ "pickup"
+};
+
+dictionary AddressErrors {
+ DOMString addressLine;
+ DOMString city;
+ DOMString country;
+ DOMString dependentLocality;
+ DOMString organization;
+ DOMString phone;
+ DOMString postalCode;
+ DOMString recipient;
+ DOMString region;
+ DOMString sortingCode;
+};
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..6ef84b6cbb
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/performance-timeline.idl
@@ -0,0 +1,51 @@
+// 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 unsigned long long id;
+ readonly attribute DOMString name;
+ readonly attribute DOMString entryType;
+ readonly attribute DOMHighResTimeStamp startTime;
+ readonly attribute DOMHighResTimeStamp duration;
+ readonly attribute unsigned long long navigationId;
+ [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/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/private-network-access.idl b/testing/web-platform/tests/interfaces/private-network-access.idl
new file mode 100644
index 0000000000..65b5876022
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/private-network-access.idl
@@ -0,0 +1,19 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Private Network Access (https://wicg.github.io/private-network-access/)
+
+enum IPAddressSpace { "public", "private", "local" };
+
+dictionary PrivateNetworkAccessPermissionDescriptor
+ : PermissionDescriptor {
+ DOMString id;
+};
+
+partial dictionary RequestInit {
+ IPAddressSpace targetAddressSpace;
+};
+
+partial interface Request {
+ readonly attribute IPAddressSpace targetAddressSpace;
+};
diff --git a/testing/web-platform/tests/interfaces/proximity.idl b/testing/web-platform/tests/interfaces/proximity.idl
new file mode 100644
index 0000000000..67513adb14
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/proximity.idl
@@ -0,0 +1,12 @@
+// 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;
+};
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/real-world-meshing.idl b/testing/web-platform/tests/interfaces/real-world-meshing.idl
new file mode 100644
index 0000000000..e3c2970fa5
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/real-world-meshing.idl
@@ -0,0 +1,21 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: WebXR Mesh Detection Module (https://immersive-web.github.io/real-world-meshing/)
+
+[Exposed=Window] interface XRMesh {
+ [SameObject] readonly attribute XRSpace meshSpace;
+
+ readonly attribute FrozenArray<Float32Array> vertices;
+ readonly attribute Uint32Array indices;
+ readonly attribute DOMHighResTimeStamp lastChangedTime;
+ readonly attribute DOMString? semanticLabel;
+};
+
+[Exposed=Window] interface XRMeshSet {
+ readonly setlike<XRMesh>;
+};
+
+partial interface XRFrame {
+ readonly attribute XRMeshSet detectedMeshes;
+};
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/requestStorageAccessFor.idl b/testing/web-platform/tests/interfaces/requestStorageAccessFor.idl
new file mode 100644
index 0000000000..adca77a2b0
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/requestStorageAccessFor.idl
@@ -0,0 +1,12 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: requestStorageAccessFor API (https://privacycg.github.io/requestStorageAccessFor/)
+
+partial interface Document {
+ Promise<undefined> requestStorageAccessFor(USVString requestedOrigin);
+};
+
+dictionary TopLevelStorageAccessPermissionDescriptor : PermissionDescriptor {
+ USVString requestedOrigin = "";
+};
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..33fed05b75
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/resource-timing.idl
@@ -0,0 +1,42 @@
+// 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 DOMString deliveryType;
+ 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 firstInterimResponseStart;
+ 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;
+ readonly attribute DOMString contentType;
+ [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..1e84e79cd1
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/scheduling-apis.idl
@@ -0,0 +1,63 @@
+// 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);
+};
+
+dictionary TaskSignalAnyInit {
+ (TaskPriority or TaskSignal) priority = "user-visible";
+};
+
+[Exposed=(Window, Worker)]
+interface TaskSignal : AbortSignal {
+ [NewObject] static TaskSignal _any(sequence<AbortSignal> signals, optional TaskSignalAnyInit init = {});
+
+ 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..45fd0dd72c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/screen-capture.idl
@@ -0,0 +1,92 @@
+// 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-capturing-application",
+ "focus-captured-surface",
+ "no-focus-change"
+};
+
+[Exposed=Window, SecureContext]
+interface CaptureController : EventTarget {
+ constructor();
+ undefined setFocusBehavior(CaptureStartFocusBehavior focusBehavior);
+};
+
+enum SelfCapturePreferenceEnum {
+ "include",
+ "exclude"
+};
+
+enum SystemAudioPreferenceEnum {
+ "include",
+ "exclude"
+};
+
+enum SurfaceSwitchingPreferenceEnum {
+ "include",
+ "exclude"
+};
+
+enum MonitorTypeSurfacesEnum {
+ "include",
+ "exclude"
+};
+
+dictionary DisplayMediaStreamOptions {
+ (boolean or MediaTrackConstraints) video = true;
+ (boolean or MediaTrackConstraints) audio = false;
+ CaptureController controller;
+ SelfCapturePreferenceEnum selfBrowserSurface;
+ SystemAudioPreferenceEnum systemAudio;
+ SurfaceSwitchingPreferenceEnum surfaceSwitching;
+ MonitorTypeSurfacesEnum monitorTypeSurfaces;
+};
+
+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..d18b8f110d
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/scroll-animations.idl
@@ -0,0 +1,37 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Scroll-driven Animations (https://drafts.csswg.org/scroll-animations-1/)
+
+enum ScrollAxis {
+ "block",
+ "inline",
+ "x",
+ "y"
+};
+
+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";
+ (DOMString or sequence<(CSSNumericValue or CSSKeywordValue)>) inset = "auto";
+};
+
+[Exposed=Window]
+interface ViewTimeline : ScrollTimeline {
+ constructor(optional ViewTimelineOptions options = {});
+ readonly attribute Element subject;
+ readonly attribute CSSNumericValue startOffset;
+ readonly attribute CSSNumericValue endOffset;
+};
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..be7bf73968
--- /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: URL Fragment Text Directives (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..bec599d7a2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/secure-payment-confirmation.idl
@@ -0,0 +1,56 @@
+// 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 interface PaymentRequest {
+ static Promise<boolean> isSecurePaymentConfirmationAvailable();
+};
+
+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;
+};
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..a84536ab0f
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/selection-api.idl
@@ -0,0 +1,46 @@
+// 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;
+ readonly attribute DOMString direction;
+ Range getRangeAt(unsigned long index);
+ undefined addRange(Range range);
+ undefined removeRange(Range range);
+ undefined removeAllRanges();
+ undefined empty();
+ sequence<StaticRange> getComposedRanges(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..37986b7ac2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/serial.idl
@@ -0,0 +1,89 @@
+// 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;
+ sequence<BluetoothServiceUUID> allowedBluetoothServiceClassIds;
+};
+
+dictionary SerialPortFilter {
+ unsigned short usbVendorId;
+ unsigned short usbProductId;
+ BluetoothServiceUUID bluetoothServiceClassId;
+};
+
+[Exposed=(DedicatedWorker,Window), SecureContext]
+interface SerialPort : EventTarget {
+ attribute EventHandler onconnect;
+ attribute EventHandler ondisconnect;
+ readonly attribute boolean connected;
+ 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;
+ BluetoothServiceUUID bluetoothServiceClassId;
+};
+
+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/shared-storage.idl b/testing/web-platform/tests/interfaces/shared-storage.idl
new file mode 100644
index 0000000000..edbe2c2bcc
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/shared-storage.idl
@@ -0,0 +1,97 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Shared Storage API (https://wicg.github.io/shared-storage/)
+
+[Exposed=(Window)]
+interface SharedStorageWorklet : Worklet {
+};
+
+[Exposed=SharedStorageWorklet, Global=SharedStorageWorklet]
+interface SharedStorageWorkletGlobalScope : WorkletGlobalScope {
+ undefined register(DOMString name,
+ SharedStorageOperationConstructor operationCtor);
+
+ readonly attribute WorkletSharedStorage sharedStorage;
+};
+
+callback SharedStorageOperationConstructor =
+ SharedStorageOperation(optional SharedStorageRunOperationMethodOptions options);
+
+[Exposed=SharedStorageWorklet]
+interface SharedStorageOperation {
+};
+
+dictionary SharedStorageRunOperationMethodOptions {
+ object data;
+ boolean resolveToConfig = false;
+ boolean keepAlive = false;
+};
+
+[Exposed=SharedStorageWorklet]
+interface SharedStorageRunOperation : SharedStorageOperation {
+ Promise<undefined> run(object data);
+};
+
+[Exposed=SharedStorageWorklet]
+interface SharedStorageSelectURLOperation : SharedStorageOperation {
+ Promise<long> run(object data,
+ FrozenArray<SharedStorageUrlWithMetadata> urls);
+};
+
+[Exposed=(Window,SharedStorageWorklet)]
+interface SharedStorage {
+ Promise<any> set(DOMString key,
+ DOMString value,
+ optional SharedStorageSetMethodOptions options = {});
+ Promise<any> append(DOMString key,
+ DOMString value);
+ Promise<any> delete(DOMString key);
+ Promise<any> clear();
+};
+
+dictionary SharedStorageSetMethodOptions {
+ boolean ignoreIfPresent = false;
+};
+
+typedef (USVString or FencedFrameConfig) SharedStorageResponse;
+
+[Exposed=(Window)]
+interface WindowSharedStorage : SharedStorage {
+ Promise<any> run(DOMString name,
+ optional SharedStorageRunOperationMethodOptions options = {});
+ Promise<SharedStorageResponse> selectURL(DOMString name,
+ FrozenArray<SharedStorageUrlWithMetadata> urls,
+ optional SharedStorageRunOperationMethodOptions options = {});
+
+ readonly attribute SharedStorageWorklet worklet;
+};
+
+dictionary SharedStorageUrlWithMetadata {
+ required USVString url;
+ object reportingMetadata;
+};
+
+partial interface Window {
+ [SecureContext] readonly attribute WindowSharedStorage? sharedStorage;
+};
+
+[Exposed=(SharedStorageWorklet)]
+interface WorkletSharedStorage : SharedStorage {
+ Promise<DOMString> get(DOMString key);
+ Promise<unsigned long> length();
+ Promise<double> remainingBudget();
+
+ async iterable<DOMString, DOMString>;
+};
+
+interface mixin HTMLSharedStorageWritableElementUtils {
+ [CEReactions, SecureContext] attribute boolean sharedStorageWritable;
+};
+
+HTMLIFrameElement includes HTMLSharedStorageWritableElementUtils;
+HTMLImageElement includes HTMLSharedStorageWritableElementUtils;
+
+partial dictionary RequestInit {
+ boolean sharedStorageWritable;
+};
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.idl b/testing/web-platform/tests/interfaces/storage-buckets.idl
new file mode 100644
index 0000000000..581ba8e0bb
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/storage-buckets.idl
@@ -0,0 +1,45 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Storage Buckets API (https://wicg.github.io/storage-buckets/)
+
+[SecureContext]
+interface mixin NavigatorStorageBuckets {
+ [SameObject] readonly attribute StorageBucketManager storageBuckets;
+};
+Navigator includes NavigatorStorageBuckets;
+WorkerNavigator includes NavigatorStorageBuckets;
+
+[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;
+ unsigned long long quota;
+ DOMHighResTimeStamp expires;
+};
+
+[Exposed=(Window,Worker),
+ SecureContext]
+interface StorageBucket {
+ readonly attribute DOMString name;
+
+ [Exposed=Window] Promise<boolean> persist();
+ Promise<boolean> persisted();
+
+ Promise<StorageEstimate> estimate();
+
+ Promise<undefined> setExpires(DOMHighResTimeStamp expires);
+ Promise<DOMHighResTimeStamp?> expires();
+
+ [SameObject] readonly attribute IDBFactory indexedDB;
+
+ [SameObject] readonly attribute CacheStorage caches;
+
+ Promise<FileSystemDirectoryHandle> getDirectory();
+};
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..ab9be033e4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/streams.idl
@@ -0,0 +1,230 @@
+// 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 = {});
+
+ static ReadableStream from(any asyncIterable);
+
+ 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, optional ReadableStreamBYOBReaderReadOptions options = {});
+ undefined releaseLock();
+};
+ReadableStreamBYOBReader includes ReadableStreamGenericReader;
+
+dictionary ReadableStreamBYOBReaderReadOptions {
+ [EnforceRange] unsigned long long min = 1;
+};
+
+[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;
+ TransformerCancelCallback cancel;
+ any readableType;
+ any writableType;
+};
+
+callback TransformerStartCallback = any (TransformStreamDefaultController controller);
+callback TransformerFlushCallback = Promise<undefined> (TransformStreamDefaultController controller);
+callback TransformerTransformCallback = Promise<undefined> (any chunk, TransformStreamDefaultController controller);
+callback TransformerCancelCallback = Promise<undefined> (any reason);
+
+[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/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/trust-token-api.idl b/testing/web-platform/tests/interfaces/trust-token-api.idl
new file mode 100644
index 0000000000..9b74290da7
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/trust-token-api.idl
@@ -0,0 +1,34 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Private State Token API (https://wicg.github.io/trust-token-api/)
+
+enum RefreshPolicy { "none", "refresh" };
+
+enum TokenVersion { "1" };
+
+enum OperationType { "token-request", "send-redemption-record", "token-redemption" };
+
+dictionary PrivateToken {
+ required TokenVersion version;
+ required OperationType operation;
+ RefreshPolicy refreshPolicy = "none";
+ sequence<USVString> issuers;
+};
+
+partial dictionary RequestInit {
+ PrivateToken privateToken;
+};
+
+partial interface HTMLIFrameElement {
+ [SecureContext] attribute DOMString privateToken;
+};
+
+partial interface XMLHttpRequest {
+ undefined setPrivateToken(PrivateToken privateToken);
+};
+
+partial interface Document {
+ Promise<boolean> hasPrivateToken(USVString issuer);
+ Promise<boolean> hasRedemptionRecord(USVString issuer);
+};
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..6723994aae
--- /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/turtledove.idl b/testing/web-platform/tests/interfaces/turtledove.idl
new file mode 100644
index 0000000000..f5813b5d03
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/turtledove.idl
@@ -0,0 +1,239 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Protected Audience (formerly FLEDGE) (https://wicg.github.io/turtledove/)
+
+[SecureContext]
+partial interface Navigator {
+ Promise<undefined> joinAdInterestGroup(AuctionAdInterestGroup group);
+};
+
+dictionary AuctionAd {
+ required USVString renderURL;
+ any metadata;
+
+ USVString buyerReportingId;
+ USVString buyerAndSellerReportingId;
+ sequence<USVString> allowedReportingOrigins;
+};
+
+dictionary GenerateBidInterestGroup {
+ required USVString owner;
+ required USVString name;
+ required double lifetimeMs;
+
+ boolean enableBiddingSignalsPrioritization = false;
+ record<DOMString, double> priorityVector;
+
+ DOMString executionMode = "compatibility";
+ USVString biddingLogicURL;
+ USVString biddingWasmHelperURL;
+ USVString updateURL;
+ USVString trustedBiddingSignalsURL;
+ sequence<USVString> trustedBiddingSignalsKeys;
+ any userBiddingSignals;
+ sequence<AuctionAd> ads;
+ sequence<AuctionAd> adComponents;
+};
+
+dictionary AuctionAdInterestGroup : GenerateBidInterestGroup {
+ double priority = 0.0;
+ record<DOMString, double> prioritySignalsOverrides;
+ DOMString additionalBidKey;
+};
+
+[SecureContext]
+partial interface Navigator {
+ Promise<undefined> leaveAdInterestGroup(optional AuctionAdInterestGroupKey group = {});
+};
+
+dictionary AuctionAdInterestGroupKey {
+ required USVString owner;
+ required USVString name;
+};
+
+[SecureContext]
+partial interface Navigator {
+ Promise<undefined> clearOriginJoinedAdInterestGroups(
+ USVString owner, optional sequence<USVString> interestGroupsToKeep = []);
+};
+
+[SecureContext]
+partial interface Navigator {
+ Promise<(USVString or FencedFrameConfig)?> runAdAuction(AuctionAdConfig config);
+};
+
+dictionary AuctionAdConfig {
+ required USVString seller;
+ required USVString decisionLogicURL;
+ USVString trustedScoringSignalsURL;
+ sequence<USVString> interestGroupBuyers;
+ Promise<any> auctionSignals;
+ record<DOMString, DOMString> requestedSize;
+ Promise<any> sellerSignals;
+ Promise<DOMString> directFromSellerSignalsHeaderAdSlot;
+ unsigned long long sellerTimeout;
+ unsigned short sellerExperimentGroupId;
+ USVString sellerCurrency;
+ Promise<record<USVString, any>> perBuyerSignals;
+ Promise<record<USVString, unsigned long long>> perBuyerTimeouts;
+ Promise<record<USVString, unsigned long long>> perBuyerCumulativeTimeouts;
+ record<USVString, unsigned short> perBuyerGroupLimits;
+ record<USVString, unsigned short> perBuyerExperimentGroupIds;
+ record<USVString, record<USVString, double>> perBuyerPrioritySignals;
+ Promise<record<USVString, USVString>> perBuyerCurrencies;
+ sequence<AuctionAdConfig> componentAuctions = [];
+ Promise<undefined> additionalBids;
+ DOMString auctionNonce;
+ AbortSignal? signal;
+ Promise<boolean> resolveToConfig;
+};
+
+[SecureContext]
+partial interface Navigator {
+ Promise<DOMString> createAuctionNonce();
+};
+
+[Exposed=InterestGroupScriptRunnerGlobalScope]
+interface InterestGroupScriptRunnerGlobalScope {
+};
+
+[Exposed=InterestGroupBiddingScriptRunnerGlobalScope,
+ Global=(InterestGroupScriptRunnerGlobalScope,
+ InterestGroupBiddingScriptRunnerGlobalScope)]
+interface InterestGroupBiddingScriptRunnerGlobalScope
+ : InterestGroupScriptRunnerGlobalScope {
+ boolean setBid(optional GenerateBidOutput generateBidOutput = {});
+ undefined setPriority(double priority);
+ undefined setPrioritySignalsOverride(DOMString key, optional double? priority);
+};
+
+dictionary AdRender {
+ required DOMString url;
+ DOMString width;
+ DOMString height;
+};
+
+dictionary GenerateBidOutput {
+ double bid = -1;
+ DOMString bidCurrency;
+ (DOMString or AdRender) render;
+ any ad;
+ sequence<(DOMString or AdRender)> adComponents;
+ double adCost;
+ unrestricted double modelingSignals;
+ boolean allowComponentAuction = false;
+};
+
+[Exposed=InterestGroupScoringScriptRunnerGlobalScope,
+ Global=(InterestGroupScriptRunnerGlobalScope,
+ InterestGroupScoringScriptRunnerGlobalScope)]
+interface InterestGroupScoringScriptRunnerGlobalScope
+ : InterestGroupScriptRunnerGlobalScope {
+};
+
+[Exposed=InterestGroupReportingScriptRunnerGlobalScope,
+ Global=(InterestGroupScriptRunnerGlobalScope,
+ InterestGroupReportingScriptRunnerGlobalScope)]
+interface InterestGroupReportingScriptRunnerGlobalScope
+ : InterestGroupScriptRunnerGlobalScope {
+ undefined sendReportTo(DOMString url);
+ undefined registerAdBeacon(record<DOMString, USVString> map);
+ undefined registerAdMacro(DOMString name, USVString value);
+};
+
+[SecureContext]
+partial interface Navigator {
+ undefined updateAdInterestGroups();
+};
+
+partial dictionary RequestInit {
+ boolean adAuctionHeaders;
+};
+
+partial interface HTMLIFrameElement {
+ [CEReactions] attribute boolean adAuctionHeaders;
+};
+
+dictionary PreviousWin {
+ required long long timeDelta;
+ required DOMString adJSON;
+};
+
+dictionary BiddingBrowserSignals {
+ required DOMString topWindowHostname;
+ required USVString seller;
+ required long joinCount;
+ required long bidCount;
+ required long recency;
+
+ USVString topLevelSeller;
+ sequence<PreviousWin> prevWinsMs;
+ object wasmHelper;
+ unsigned long dataVersion;
+};
+
+dictionary ScoringBrowserSignals {
+ required DOMString topWindowHostname;
+ required USVString interestGroupOwner;
+ required USVString renderURL;
+ required unsigned long biddingDurationMsec;
+ required DOMString bidCurrency;
+
+ unsigned long dataVersion;
+ sequence<USVString> adComponents;
+};
+
+dictionary ReportingBrowserSignals {
+ required DOMString topWindowHostname;
+ required USVString interestGroupOwner;
+ required USVString renderURL;
+ required double bid;
+ required double highestScoringOtherBid;
+
+ DOMString bidCurrency;
+ DOMString highestScoringOtherBidCurrency;
+ USVString topLevelSeller;
+ USVString componentSeller;
+
+ USVString buyerAndSellerReportingId;
+};
+
+dictionary ReportResultBrowserSignals : ReportingBrowserSignals {
+ required double desirability;
+
+ DOMString topLevelSellerSignals;
+ double modifiedBid;
+ unsigned long dataVersion;
+};
+
+dictionary ReportWinBrowserSignals : ReportingBrowserSignals {
+ double adCost;
+ USVString seller;
+ boolean madeHighestScoringOtherBid;
+ DOMString interestGroupName;
+ DOMString buyerReportingId;
+ unsigned short modelingSignals;
+ unsigned long dataVersion;
+ KAnonStatus kAnonStatus;
+};
+
+enum KAnonStatus { "passedAndEnforced", "passedNotEnforced", "belowThreshold", "notCalculated" };
+
+dictionary DirectFromSellerSignalsForBuyer {
+ any auctionSignals = null;
+ any perBuyerSignals = null;
+};
+
+dictionary DirectFromSellerSignalsForSeller {
+ any auctionSignals = null;
+ any sellerSignals = null;
+};
+
+dictionary ScoreAdOutput {
+ required double desirability;
+ double bid;
+ DOMString bidCurrency;
+ double incomingBidInSellerCurrency;
+ boolean allowComponentAuction = false;
+};
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..6a40e1bdc4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/ua-client-hints.idl
@@ -0,0 +1,45 @@
+// 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 {
+ DOMString architecture;
+ DOMString bitness;
+ sequence<NavigatorUABrandVersion> brands;
+ sequence<DOMString> formFactor;
+ sequence<NavigatorUABrandVersion> fullVersionList;
+ DOMString model;
+ boolean mobile;
+ DOMString platform;
+ DOMString platformVersion;
+ DOMString uaFullVersion; // deprecated in favor of fullVersionList
+ boolean wow64;
+};
+
+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..b34ca2e775
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/uievents.idl
@@ -0,0 +1,250 @@
+// 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 long layerX;
+ readonly attribute long layerY;
+
+ 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 USVString? 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 USVString 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..a5e4d1eb49
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/url.idl
@@ -0,0 +1,46 @@
+// 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);
+
+ static boolean canParse(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 = "");
+
+ readonly attribute unsigned long size;
+
+ undefined append(USVString name, USVString value);
+ undefined delete(USVString name, optional USVString value);
+ USVString? get(USVString name);
+ sequence<USVString> getAll(USVString name);
+ boolean has(USVString name, optional USVString value);
+ 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..ca9fb979d2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/urlpattern.idl
@@ -0,0 +1,63 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: URL Pattern Standard (https://urlpattern.spec.whatwg.org/)
+
+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;
+
+ readonly attribute boolean hasRegExpGroups;
+};
+
+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;
+};
+
+typedef (USVString or URLPatternInit or URLPattern) URLPatternCompatible;
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..13e3b0f8b1
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/wai-aria.idl
@@ -0,0 +1,61 @@
+// 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? ariaBrailleLabel;
+ [CEReactions] attribute DOMString? ariaBrailleRoleDescription;
+ [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 FrozenArray<Element>? ariaErrorMessageElements;
+ [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..0d4384251d
--- /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=*]
+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=*]
+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=*]
+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=*]
+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=*]
+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=*]
+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..f9f68a0d49
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/web-animations-2.idl
@@ -0,0 +1,112 @@
+// 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? currentTime;
+ 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);
+
+dictionary TimelineRangeOffset {
+ CSSOMString? rangeName;
+ CSSNumericValue offset;
+};
+
+partial dictionary KeyframeAnimationOptions {
+ (TimelineRangeOffset or CSSNumericValue or CSSKeywordValue or DOMString) rangeStart = "normal";
+ (TimelineRangeOffset or CSSNumericValue or CSSKeywordValue or DOMString) rangeEnd = "normal";
+};
+
+[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..1bc82fab11
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/web-animations.idl
@@ -0,0 +1,149 @@
+// 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 {
+};
+
+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-scanning.idl b/testing/web-platform/tests/interfaces/web-bluetooth-scanning.idl
new file mode 100644
index 0000000000..88016e3e28
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/web-bluetooth-scanning.idl
@@ -0,0 +1,67 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Web Bluetooth Scanning (https://webbluetoothcg.github.io/web-bluetooth/scanning.html)
+
+dictionary BluetoothLEScanOptions {
+ sequence<BluetoothLEScanFilterInit> filters;
+ boolean keepRepeatedDevices = false;
+ boolean acceptAllAdvertisements = false;
+};
+
+partial interface Bluetooth {
+ [SecureContext]
+ Promise<BluetoothLEScan> requestLEScan(optional BluetoothLEScanOptions options = {});
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothDataFilter {
+ constructor(optional BluetoothDataFilterInit init = {});
+ readonly attribute ArrayBuffer dataPrefix;
+ readonly attribute ArrayBuffer mask;
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothManufacturerDataFilter {
+ constructor(optional object init);
+ readonly maplike<unsigned short, BluetoothDataFilter>;
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothServiceDataFilter {
+ constructor(optional object init);
+ readonly maplike<UUID, BluetoothDataFilter>;
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothLEScanFilter {
+ constructor(optional BluetoothLEScanFilterInit init = {});
+ readonly attribute DOMString? name;
+ readonly attribute DOMString? namePrefix;
+ readonly attribute FrozenArray<UUID> services;
+ readonly attribute BluetoothManufacturerDataFilter manufacturerData;
+ readonly attribute BluetoothServiceDataFilter serviceData;
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothLEScan {
+ readonly attribute FrozenArray<BluetoothLEScanFilter> filters;
+ readonly attribute boolean keepRepeatedDevices;
+ readonly attribute boolean acceptAllAdvertisements;
+
+ readonly attribute boolean active;
+
+ undefined stop();
+};
+
+dictionary BluetoothLEScanPermissionDescriptor : PermissionDescriptor {
+ // These match BluetoothLEScanOptions.
+ sequence<BluetoothLEScanFilterInit> filters;
+ boolean keepRepeatedDevices = false;
+ boolean acceptAllAdvertisements = false;
+};
+
+[Exposed=Window, SecureContext]
+interface BluetoothLEScanPermissionResult : PermissionStatus {
+ attribute FrozenArray<BluetoothLEScan> scans;
+};
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..5d461194a8
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/web-bluetooth.idl
@@ -0,0 +1,252 @@
+// 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<BluetoothLEScanFilterInit> exclusionFilters;
+ 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..73dc35d260
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webaudio.idl
@@ -0,0 +1,683 @@
+// 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"
+};
+
+enum AudioContextRenderSizeCategory {
+ "default",
+ "hardware"
+};
+
+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;
+ readonly attribute unsigned long renderQuantumSize;
+ [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;
+ (AudioContextRenderSizeCategory or unsigned long) renderSizeHint = "default";
+};
+
+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;
+ (AudioContextRenderSizeCategory or unsigned long) renderSizeHint = "default";
+};
+
+[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 unsigned long renderQuantumSize;
+ 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..cf1a2fbdc4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webauthn.idl
@@ -0,0 +1,387 @@
+// 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 3 (https://w3c.github.io/webauthn/)
+
+[SecureContext, Exposed=Window]
+interface PublicKeyCredential : Credential {
+ [SameObject] readonly attribute ArrayBuffer rawId;
+ [SameObject] readonly attribute AuthenticatorResponse response;
+ readonly attribute DOMString? authenticatorAttachment;
+ AuthenticationExtensionsClientOutputs getClientExtensionResults();
+ static Promise<boolean> isConditionalMediationAvailable();
+ PublicKeyCredentialJSON toJSON();
+};
+
+typedef DOMString Base64URLString;
+// The structure of this object will be either
+// RegistrationResponseJSON or AuthenticationResponseJSON
+typedef object PublicKeyCredentialJSON;
+
+dictionary RegistrationResponseJSON {
+ required Base64URLString id;
+ required Base64URLString rawId;
+ required AuthenticatorAttestationResponseJSON response;
+ DOMString authenticatorAttachment;
+ required AuthenticationExtensionsClientOutputsJSON clientExtensionResults;
+ required DOMString type;
+};
+
+dictionary AuthenticatorAttestationResponseJSON {
+ required Base64URLString clientDataJSON;
+ required Base64URLString authenticatorData;
+ required sequence<DOMString> transports;
+ // The publicKey field will be missing if pubKeyCredParams was used to
+ // negotiate a public-key algorithm that the user agent doesn't
+ // understand. (See section “Easily accessing credential data” for a
+ // list of which algorithms user agents must support.) If using such an
+ // algorithm then the public key must be parsed directly from
+ // attestationObject or authenticatorData.
+ Base64URLString publicKey;
+ required long long publicKeyAlgorithm;
+ // This value contains copies of some of the fields above. See
+ // section “Easily accessing credential data”.
+ required Base64URLString attestationObject;
+};
+
+dictionary AuthenticationResponseJSON {
+ required Base64URLString id;
+ required Base64URLString rawId;
+ required AuthenticatorAssertionResponseJSON response;
+ DOMString authenticatorAttachment;
+ required AuthenticationExtensionsClientOutputsJSON clientExtensionResults;
+ required DOMString type;
+};
+
+dictionary AuthenticatorAssertionResponseJSON {
+ required Base64URLString clientDataJSON;
+ required Base64URLString authenticatorData;
+ required 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 Promise<PublicKeyCredentialClientCapabilities> getClientCapabilities();
+};
+
+typedef record<DOMString, boolean> PublicKeyCredentialClientCapabilities;
+
+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;
+ sequence<DOMString> hints = [];
+ DOMString attestation = "none";
+ sequence<DOMString> attestationFormats = [];
+ 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";
+ sequence<DOMString> hints = [];
+ 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;
+};
+
+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;
+ sequence<DOMString> hints = [];
+ 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";
+ sequence<DOMString> hints = [];
+ AuthenticationExtensionsClientInputs extensions;
+};
+
+dictionary AuthenticationExtensionsClientInputs {
+};
+
+dictionary AuthenticationExtensionsClientOutputs {
+};
+
+dictionary CollectedClientData {
+ required DOMString type;
+ required DOMString challenge;
+ required DOMString origin;
+ DOMString topOrigin;
+ 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",
+ "smart-card",
+ "hybrid",
+ "internal"
+};
+
+typedef long COSEAlgorithmIdentifier;
+
+enum UserVerificationRequirement {
+ "required",
+ "preferred",
+ "discouraged"
+};
+
+enum ClientCapability {
+ "conditionalCreate",
+ "conditionalMediation",
+ "hybridTransport",
+ "passkeyPlatformAuthenticator",
+ "userVerifyingPlatformAuthenticator",
+};
+
+enum PublicKeyCredentialHints {
+ "security-key",
+ "client-device",
+ "hybrid",
+};
+
+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;
+ USVString authenticatorDisplayName;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ CredentialPropertiesOutput credProps;
+};
+
+dictionary AuthenticationExtensionsPRFValues {
+ required BufferSource first;
+ BufferSource 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 AuthenticationExtensionsSupplementalPubKeysInputs {
+ required sequence<DOMString> scopes;
+ DOMString attestation = "indirect";
+ sequence<DOMString> attestationFormats = [];
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ AuthenticationExtensionsSupplementalPubKeysInputs supplementalPubKeys;
+};
+
+dictionary AuthenticationExtensionsSupplementalPubKeysOutputs {
+ required sequence<ArrayBuffer> signatures;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ AuthenticationExtensionsSupplementalPubKeysOutputs supplementalPubKeys;
+};
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-av1-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-av1-codec-registration.idl
new file mode 100644
index 0000000000..ab20879728
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webcodecs-av1-codec-registration.idl
@@ -0,0 +1,20 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: AV1 WebCodecs Registration (https://w3c.github.io/webcodecs/av1_codec_registration.html)
+
+partial dictionary VideoEncoderConfig {
+ AV1EncoderConfig av1;
+};
+
+dictionary AV1EncoderConfig {
+ boolean forceScreenContentTools = false;
+};
+
+partial dictionary VideoEncoderEncodeOptions {
+ VideoEncoderEncodeOptionsForAv1 av1;
+};
+
+dictionary VideoEncoderEncodeOptionsForAv1 {
+ unsigned short? quantizer;
+};
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..2b952c2219
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webcodecs-avc-codec-registration.idl
@@ -0,0 +1,25 @@
+// 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",
+};
+
+partial dictionary VideoEncoderEncodeOptions {
+ VideoEncoderEncodeOptionsForAvc avc;
+};
+
+dictionary VideoEncoderEncodeOptionsForAvc {
+ unsigned short? quantizer;
+};
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..92043748c4
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webcodecs-hevc-codec-registration.idl
@@ -0,0 +1,25 @@
+// 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",
+};
+
+partial dictionary VideoEncoderEncodeOptions {
+ VideoEncoderEncodeOptionsForHevc hevc;
+};
+
+dictionary VideoEncoderEncodeOptionsForHevc {
+ unsigned short? quantizer;
+};
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-vp9-codec-registration.idl b/testing/web-platform/tests/interfaces/webcodecs-vp9-codec-registration.idl
new file mode 100644
index 0000000000..aca64a7896
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webcodecs-vp9-codec-registration.idl
@@ -0,0 +1,12 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: VP9 WebCodecs Registration (https://w3c.github.io/webcodecs/vp9_codec_registration.html)
+
+partial dictionary VideoEncoderEncodeOptions {
+ VideoEncoderEncodeOptionsForVp9 vp9;
+};
+
+dictionary VideoEncoderEncodeOptionsForVp9 {
+ unsigned short? quantizer;
+};
diff --git a/testing/web-platform/tests/interfaces/webcodecs.idl b/testing/web-platform/tests/interfaces/webcodecs.idl
new file mode 100644
index 0000000000..48d89d0b47
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webcodecs.idl
@@ -0,0 +1,508 @@
+// 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 : EventTarget {
+ 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 : EventTarget {
+ 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 : EventTarget {
+ 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 : EventTarget {
+ 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;
+ AllowSharedBufferSource 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;
+ BitrateMode bitrateMode = "variable";
+};
+
+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;
+ VideoEncoderBitrateMode bitrateMode = "variable";
+ LatencyMode latencyMode = "quality";
+ DOMString contentHint;
+};
+
+enum HardwareAcceleration {
+ "no-preference",
+ "prefer-hardware",
+ "prefer-software",
+};
+
+enum AlphaOption {
+ "keep",
+ "discard",
+};
+
+enum LatencyMode {
+ "quality",
+ "realtime"
+};
+
+dictionary VideoEncoderEncodeOptions {
+ boolean keyFrame = false;
+};
+
+enum VideoEncoderBitrateMode {
+ "constant",
+ "variable",
+ "quantizer"
+};
+
+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(AllowSharedBufferSource destination);
+};
+
+dictionary EncodedAudioChunkInit {
+ required EncodedAudioChunkType type;
+ [EnforceRange] required long long timestamp; // microseconds
+ [EnforceRange] unsigned long long duration; // microseconds
+ required BufferSource data;
+ sequence<ArrayBuffer> transfer = [];
+};
+
+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(AllowSharedBufferSource destination);
+};
+
+dictionary EncodedVideoChunkInit {
+ required EncodedVideoChunkType type;
+ [EnforceRange] required long long timestamp; // microseconds
+ [EnforceRange] unsigned long long duration; // microseconds
+ required AllowSharedBufferSource data;
+ sequence<ArrayBuffer> transfer = [];
+};
+
+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(AllowSharedBufferSource 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;
+ sequence<ArrayBuffer> transfer = [];
+};
+
+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(AllowSharedBufferSource 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(
+ AllowSharedBufferSource 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;
+
+ sequence<ArrayBuffer> transfer = [];
+};
+
+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;
+ sequence<ArrayBuffer> transfer = [];
+};
+
+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..4552610c0d
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webgl1.idl
@@ -0,0 +1,749 @@
+// 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 RGBA8 = 0x8058;
+ 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;
+ readonly attribute GLenum drawingBufferFormat;
+ attribute PredefinedColorSpace drawingBufferColorSpace;
+ attribute PredefinedColorSpace unpackColorSpace;
+
+ [WebGLHandlesContextLoss] WebGLContextAttributes? getContextAttributes();
+ [WebGLHandlesContextLoss] boolean isContextLost();
+
+ sequence<DOMString>? getSupportedExtensions();
+ object? getExtension(DOMString name);
+
+ undefined drawingBufferStorage(GLenum sizedFormat, unsigned long width, unsigned long height);
+
+ 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, AllowSharedBufferSource? data, GLenum usage);
+ undefined bufferSubData(GLenum target, GLintptr offset, AllowSharedBufferSource 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..25c2b4dad2
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webgl2.idl
@@ -0,0 +1,581 @@
+// 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 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 unsigned long long 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,
+ unsigned long long 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 unsigned long long 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 unsigned long long 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 unsigned long long 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 unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+ undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+
+ undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+ undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+
+ undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+ undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long 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 unsigned long long srcOffset = 0);
+ undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
+ optional unsigned long long srcOffset = 0);
+ undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
+ optional unsigned long long 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, AllowSharedBufferSource? srcData, GLenum usage);
+ undefined bufferSubData(GLenum target, GLintptr dstByteOffset, AllowSharedBufferSource srcData);
+ // WebGL2:
+ undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, unsigned long long srcOffset,
+ optional GLuint length = 0);
+ undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
+ unsigned long long 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,
+ unsigned long long 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,
+ unsigned long long 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 unsigned long long 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 unsigned long long srcOffset = 0,
+ optional GLuint srcLengthOverride = 0);
+
+ undefined uniform1fv(WebGLUniformLocation? location, Float32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform2fv(WebGLUniformLocation? location, Float32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform3fv(WebGLUniformLocation? location, Float32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform4fv(WebGLUniformLocation? location, Float32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ undefined uniform1iv(WebGLUniformLocation? location, Int32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform2iv(WebGLUniformLocation? location, Int32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform3iv(WebGLUniformLocation? location, Int32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+ undefined uniform4iv(WebGLUniformLocation? location, Int32List data, optional unsigned long long srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+ undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long srcOffset = 0, optional GLuint srcLength = 0);
+ undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional unsigned long long 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, unsigned long long 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..15074009cf
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webgpu.idl
@@ -0,0 +1,1305 @@
+// 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 maxBindGroupsPlusVertexBuffers;
+ 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 WGSLLanguageFeatures {
+ 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();
+ [SameObject] readonly attribute WGSLLanguageFeatures wgslLanguageFeatures;
+};
+
+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();
+};
+
+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",
+ "bgra8unorm-storage",
+ "float32-filterable",
+};
+
+[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 GPUSize64Out size;
+ readonly attribute GPUFlagsConstant 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), SecureContext]
+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), SecureContext]
+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 GPUIntegerCoordinateOut width;
+ readonly attribute GPUIntegerCoordinateOut height;
+ readonly attribute GPUIntegerCoordinateOut depthOrArrayLayers;
+ readonly attribute GPUIntegerCoordinateOut mipLevelCount;
+ readonly attribute GPUSize32Out sampleCount;
+ readonly attribute GPUTextureDimension dimension;
+ readonly attribute GPUTextureFormat format;
+ readonly attribute GPUFlagsConstant 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), SecureContext]
+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",
+ "rgb10a2uint",
+ "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 {
+};
+GPUExternalTexture includes GPUObjectBase;
+
+dictionary GPUExternalTextureDescriptor
+ : GPUObjectDescriptorBase {
+ required (HTMLVideoElement or VideoFrame) 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), SecureContext]
+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",
+ "read-only",
+ "read-write",
+};
+
+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> getCompilationInfo();
+};
+GPUShaderModule includes GPUObjectBase;
+
+dictionary GPUShaderModuleDescriptor
+ : GPUObjectDescriptorBase {
+ required USVString code;
+ object sourceMap;
+ sequence<GPUShaderModuleCompilationHint> compilationHints = [];
+};
+
+dictionary GPUShaderModuleCompilationHint {
+ required USVString entryPoint;
+ (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(optional 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;
+ 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), SecureContext]
+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;
+ GPUCompareFunction depthCompare;
+
+ 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",
+ "unorm10-10-10-2",
+};
+
+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;
+};
+
+typedef (ImageBitmap or
+ ImageData or
+ HTMLImageElement or
+ HTMLVideoElement or
+ VideoFrame or
+ HTMLCanvasElement or
+ OffscreenCanvas) GPUImageCopyExternalImageSource;
+
+dictionary GPUImageCopyExternalImage {
+ required GPUImageCopyExternalImageSource 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 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;
+
+dictionary GPUComputePassTimestampWrites {
+ required GPUQuerySet querySet;
+ GPUSize32 beginningOfPassWriteIndex;
+ GPUSize32 endOfPassWriteIndex;
+};
+
+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;
+
+dictionary GPURenderPassTimestampWrites {
+ required GPUQuerySet querySet;
+ GPUSize32 beginningOfPassWriteIndex;
+ GPUSize32 endOfPassWriteIndex;
+};
+
+dictionary GPURenderPassDescriptor
+ : GPUObjectDescriptorBase {
+ required sequence<GPURenderPassColorAttachment?> colorAttachments;
+ GPURenderPassDepthStencilAttachment depthStencilAttachment;
+ GPUQuerySet occlusionQuerySet;
+ GPURenderPassTimestampWrites timestampWrites;
+ GPUSize64 maxDrawCount = 50000000;
+};
+
+dictionary GPURenderPassColorAttachment {
+ required GPUTextureView view;
+ GPUIntegerCoordinate depthSlice;
+ GPUTextureView resolveTarget;
+
+ GPUColor clearValue;
+ required GPULoadOp loadOp;
+ required GPUStoreOp storeOp;
+};
+
+dictionary GPURenderPassDepthStencilAttachment {
+ required GPUTextureView view;
+
+ float depthClearValue;
+ 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,
+ AllowSharedBufferSource data,
+ optional GPUSize64 dataOffset = 0,
+ optional GPUSize64 size);
+
+ undefined writeTexture(
+ GPUImageCopyTexture destination,
+ AllowSharedBufferSource 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 GPUSize32Out 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 {
+ "unknown",
+ "destroyed",
+};
+
+[Exposed=(Window, DedicatedWorker), SecureContext]
+interface GPUDeviceLostInfo {
+ readonly attribute GPUDeviceLostReason 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 long GPUSize64Out;
+typedef unsigned long GPUIntegerCoordinateOut;
+typedef unsigned long GPUSize32Out;
+
+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..03e72511d9
--- /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();
+ [Exposed=Window] 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..dff46c557c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webidl.idl
@@ -0,0 +1,49 @@
+// 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;
+typedef (ArrayBuffer or SharedArrayBuffer or [AllowShared] ArrayBufferView) AllowSharedBufferSource;
+[Exposed=*,
+ Serializable]
+interface DOMException { // but see below note about JavaScript 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 ();
diff --git a/testing/web-platform/tests/interfaces/webmidi.idl b/testing/web-platform/tests/interfaces/webmidi.idl
new file mode 100644
index 0000000000..9bab8a5f96
--- /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..721ee788bd
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webnn.idl
@@ -0,0 +1,611 @@
+// 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);
+};
+
+[SecureContext, Exposed=(Window, DedicatedWorker)]
+interface MLActivation {
+};
+
+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 = {});
+};
+
+typedef record<DOMString, ArrayBufferView> MLNamedArrayBufferViews;
+
+[SecureContext, Exposed=(Window, DedicatedWorker)]
+interface MLContext {};
+
+partial interface MLContext {
+ [Exposed=(DedicatedWorker)]
+ undefined computeSync(
+ MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs);
+};
+
+dictionary MLComputeResult {
+ MLNamedArrayBufferViews inputs;
+ MLNamedArrayBufferViews outputs;
+};
+
+partial interface MLContext {
+ Promise<MLComputeResult> compute(
+ MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs);
+};
+
+partial interface MLContext {
+ MLCommandEncoder createCommandEncoder();
+};
+
+[SecureContext, Exposed=(Window, DedicatedWorker)]
+interface MLGraph {};
+
+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 descriptor);
+
+ // Create an operand for a graph constant.
+ MLOperand constant(MLOperandDescriptor descriptor, MLBufferView bufferView);
+
+ // Create a single-value operand from the specified number of the specified type.
+ MLOperand constant(double value, optional MLOperandDataType 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 MLArgMinMaxOptions {
+ sequence<unsigned long> axes = null;
+ boolean keepDimensions = false;
+ boolean selectLastIndex = false;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand argMin(MLOperand input, optional MLArgMinMaxOptions options = {});
+ MLOperand argMax(MLOperand input, optional MLArgMinMaxOptions options = {});
+};
+
+dictionary MLBatchNormalizationOptions {
+ MLOperand scale;
+ MLOperand bias;
+ unsigned long axis = 1;
+ float epsilon = 1e-5;
+ MLActivation activation;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance,
+ optional MLBatchNormalizationOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand cast(MLOperand input, MLOperandDataType type);
+};
+
+dictionary MLClampOptions {
+ float minValue;
+ float maxValue;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand clamp(MLOperand input, optional MLClampOptions options = {});
+ MLActivation clamp(optional MLClampOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand concat(sequence<MLOperand> inputs, unsigned 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;
+ MLActivation 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;
+ MLActivation 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 equal(MLOperand a, MLOperand b);
+ MLOperand greater(MLOperand a, MLOperand b);
+ MLOperand greaterOrEqual(MLOperand a, MLOperand b);
+ MLOperand lesser(MLOperand a, MLOperand b);
+ MLOperand lesserOrEqual(MLOperand a, MLOperand b);
+ MLOperand not(MLOperand a);
+};
+
+partial interface MLGraphBuilder {
+ MLOperand abs(MLOperand input);
+ MLOperand ceil(MLOperand input);
+ MLOperand cos(MLOperand input);
+ MLOperand erf(MLOperand input);
+ MLOperand exp(MLOperand input);
+ MLOperand floor(MLOperand input);
+ MLOperand identity(MLOperand input);
+ MLOperand log(MLOperand input);
+ MLOperand neg(MLOperand input);
+ MLOperand reciprocal(MLOperand input);
+ MLOperand sin(MLOperand input);
+ MLOperand sqrt(MLOperand input);
+ MLOperand tan(MLOperand input);
+};
+
+dictionary MLEluOptions {
+ float alpha = 1;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand elu(MLOperand input, optional MLEluOptions options = {});
+ MLActivation elu(optional MLEluOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand expand(MLOperand input, sequence<unsigned long> newShape);
+};
+
+dictionary MLGatherOptions {
+ unsigned long axis = 0;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand gather(MLOperand input, MLOperand indices, optional MLGatherOptions 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 MLGruWeightLayout {
+ "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";
+ MLGruWeightLayout layout = "zrn";
+ sequence<MLActivation> activations;
+};
+
+partial interface MLGraphBuilder {
+ sequence<MLOperand> gru(MLOperand input, MLOperand weight, MLOperand recurrentWeight,
+ unsigned long steps, unsigned long hiddenSize,
+ optional MLGruOptions options = {});
+};
+
+dictionary MLGruCellOptions {
+ MLOperand bias;
+ MLOperand recurrentBias;
+ boolean resetAfter = true;
+ MLGruWeightLayout layout = "zrn";
+ sequence<MLActivation> activations;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight,
+ MLOperand hiddenState, unsigned long hiddenSize,
+ optional MLGruCellOptions options = {});
+};
+
+dictionary MLHardSigmoidOptions {
+ float alpha = 0.2;
+ float beta = 0.5;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand hardSigmoid(MLOperand input, optional MLHardSigmoidOptions options = {});
+ MLActivation hardSigmoid(optional MLHardSigmoidOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand hardSwish(MLOperand input);
+ MLActivation 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 MLLayerNormalizationOptions {
+ MLOperand scale;
+ MLOperand bias;
+ sequence<unsigned long> axes;
+ float epsilon = 1e-5;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand layerNormalization(MLOperand input, optional MLLayerNormalizationOptions options = {});
+};
+
+dictionary MLLeakyReluOptions {
+ float alpha = 0.01;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand leakyRelu(MLOperand input, optional MLLeakyReluOptions options = {});
+ MLActivation leakyRelu(optional MLLeakyReluOptions options = {});
+};
+
+dictionary MLLinearOptions {
+ float alpha = 1;
+ float beta = 0;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand linear(MLOperand input, optional MLLinearOptions options = {});
+ MLActivation linear(optional MLLinearOptions options = {});
+};
+
+enum MLLstmWeightLayout {
+ "iofg", // input-output-forget-cell gate ordering
+ "ifgo" // input-forget-cell-output gate ordering
+};
+
+dictionary MLLstmOptions {
+ MLOperand bias;
+ MLOperand recurrentBias;
+ MLOperand peepholeWeight;
+ MLOperand initialHiddenState;
+ MLOperand initialCellState;
+ boolean returnSequence = false;
+ MLRecurrentNetworkDirection direction = "forward";
+ MLLstmWeightLayout layout = "iofg";
+ sequence<MLActivation> activations;
+};
+
+partial interface MLGraphBuilder {
+ sequence<MLOperand> lstm(MLOperand input, MLOperand weight, MLOperand recurrentWeight,
+ unsigned long steps, unsigned long hiddenSize,
+ optional MLLstmOptions options = {});
+};
+
+dictionary MLLstmCellOptions {
+ MLOperand bias;
+ MLOperand recurrentBias;
+ MLOperand peepholeWeight;
+ MLLstmWeightLayout layout = "iofg";
+ sequence<MLActivation> activations;
+};
+
+partial interface MLGraphBuilder {
+ sequence<MLOperand> lstmCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight,
+ MLOperand hiddenState, MLOperand cellState, unsigned long hiddenSize,
+ optional MLLstmCellOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand matmul(MLOperand a, MLOperand b);
+};
+
+enum MLPaddingMode {
+ "constant",
+ "edge",
+ "reflection",
+ "symmetric"
+};
+
+dictionary MLPadOptions {
+ MLPaddingMode mode = "constant";
+ float value = 0;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand pad(MLOperand input,
+ sequence<unsigned long> beginningPadding,
+ sequence<unsigned long> endingPadding,
+ 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 = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand prelu(MLOperand input, MLOperand slope);
+};
+
+dictionary MLReduceOptions {
+ sequence<unsigned 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 input);
+ MLActivation relu();
+};
+
+enum MLInterpolationMode {
+ "nearest-neighbor",
+ "linear"
+};
+
+dictionary MLResample2dOptions {
+ MLInterpolationMode mode = "nearest-neighbor";
+ sequence<float> scales;
+ sequence<unsigned long> sizes;
+ sequence<unsigned 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 input);
+ MLActivation sigmoid();
+};
+
+partial interface MLGraphBuilder {
+ MLOperand slice(MLOperand input, sequence<unsigned long> starts, sequence<unsigned long> sizes);
+};
+
+partial interface MLGraphBuilder {
+ MLOperand softmax(MLOperand input);
+ MLActivation softmax();
+};
+
+dictionary MLSoftplusOptions {
+ float steepness = 1;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand softplus(MLOperand input, optional MLSoftplusOptions options = {});
+ MLActivation softplus(optional MLSoftplusOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand softsign(MLOperand input);
+ MLActivation softsign();
+};
+
+dictionary MLSplitOptions {
+ unsigned long axis = 0;
+};
+
+partial interface MLGraphBuilder {
+ sequence<MLOperand> split(MLOperand input,
+ (unsigned long or sequence<unsigned long>) splits,
+ optional MLSplitOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand tanh(MLOperand input);
+ MLActivation tanh();
+};
+
+dictionary MLTransposeOptions {
+ sequence<unsigned long> permutation;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand transpose(MLOperand input, optional MLTransposeOptions options = {});
+};
+
+dictionary MLTriangularOptions {
+ boolean upper = true;
+ long diagonal = 0;
+};
+
+partial interface MLGraphBuilder {
+ MLOperand triangular(MLOperand input, optional MLTriangularOptions options = {});
+};
+
+partial interface MLGraphBuilder {
+ MLOperand where(MLOperand condition, MLOperand input, MLOperand other);
+};
+
+[SecureContext, Exposed=(Window, DedicatedWorker)]
+interface MLOperand {};
+
+partial interface MLOperand {
+ MLOperandDataType dataType();
+};
+
+partial interface MLOperand {
+ sequence<unsigned long> shape();
+};
+
+enum MLInputOperandLayout {
+ "nchw",
+ "nhwc"
+};
+
+enum MLOperandDataType {
+ "float32",
+ "float16",
+ "int32",
+ "uint32",
+ "int64",
+ "uint64",
+ "int8",
+ "uint8"
+};
+
+dictionary MLOperandDescriptor {
+ // The operand type.
+ required MLOperandDataType dataType;
+
+ // The dimensions field is only required for tensor operands.
+ sequence<unsigned long> dimensions;
+};
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..8a756702c7
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webrtc-encoded-transform.idl
@@ -0,0 +1,140 @@
+// 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 : EventTarget {
+ 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;
+ long long timestamp; // microseconds
+ unsigned long rtpTimestamp;
+ DOMString mimeType;
+};
+
+// New interfaces to define encoded video and audio frames. Will eventually
+// re-use or extend the equivalent defined in WebCodecs.
+[Exposed=(Window,DedicatedWorker), Serializable]
+interface RTCEncodedVideoFrame {
+ readonly attribute RTCEncodedVideoFrameType type;
+ attribute ArrayBuffer data;
+ RTCEncodedVideoFrameMetadata getMetadata();
+};
+
+dictionary RTCEncodedAudioFrameMetadata {
+ unsigned long synchronizationSource;
+ octet payloadType;
+ sequence<unsigned long> contributingSources;
+ short sequenceNumber;
+ unsigned long rtpTimestamp;
+ DOMString mimeType;
+};
+
+[Exposed=(Window,DedicatedWorker), Serializable]
+interface RTCEncodedAudioFrame {
+ attribute ArrayBuffer data;
+ RTCEncodedAudioFrameMetadata getMetadata();
+};
+
+[Exposed=DedicatedWorker]
+interface RTCTransformEvent : Event {
+ readonly attribute RTCRtpScriptTransformer transformer;
+};
+
+partial interface DedicatedWorkerGlobalScope {
+ attribute EventHandler onrtctransform;
+};
+
+[Exposed=DedicatedWorker]
+interface RTCRtpScriptTransformer : EventTarget {
+ // Attributes and methods related to the transformer source
+ readonly attribute ReadableStream readable;
+ Promise<unsigned long long> generateKeyFrame(optional DOMString rid);
+ Promise<undefined> sendKeyFrameRequest();
+ // Attributes and methods related to the transformer sink
+ readonly attribute WritableStream writable;
+ attribute EventHandler onkeyframerequest;
+ // Attributes for configuring the Javascript code
+ readonly attribute any options;
+};
+
+[Exposed=Window]
+interface RTCRtpScriptTransform {
+ constructor(Worker worker, optional any options, optional sequence<object> transfer);
+};
+
+[Exposed=DedicatedWorker]
+interface KeyFrameRequestEvent : Event {
+ constructor(DOMString type, optional DOMString rid);
+ readonly attribute DOMString? rid;
+};
+
+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..0b2e956a20
--- /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",
+"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;
+ 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 fecBytesReceived;
+ 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;
+ unsigned long long retransmittedPacketsReceived;
+ unsigned long long retransmittedBytesReceived;
+ unsigned long rtxSsrc;
+ unsigned long fecSsrc;
+};
+
+dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats {
+ DOMString localId;
+ double roundTripTime;
+ double totalRoundTripTime;
+ double fractionLost;
+ unsigned long long roundTripTimeMeasurements;
+};
+
+dictionary RTCSentRtpStreamStats : RTCRtpStreamStats {
+ unsigned long 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;
+ unsigned long rtxSsrc;
+ 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;
+};
+
+dictionary RTCVideoSourceStats : RTCMediaSourceStats {
+ unsigned long width;
+ unsigned long height;
+ unsigned long frames;
+ double framesPerSecond;
+};
+
+dictionary RTCAudioPlayoutStats : RTCStats {
+ required DOMString kind;
+ 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..e67ed70e8a
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webrtc-svc.idl
@@ -0,0 +1,8 @@
+// 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;
+};
diff --git a/testing/web-platform/tests/interfaces/webrtc.idl b/testing/web-platform/tests/interfaces/webrtc.idl
new file mode 100644
index 0000000000..e571abb527
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webrtc.idl
@@ -0,0 +1,631 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: WebRTC: Real-Time Communication in 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,
+ optional RTCSetParameterOptions setParameterOptions = {});
+ 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 RTCRtpCodec {
+ required DOMString mimeType;
+ required unsigned long clockRate;
+ unsigned short channels;
+ DOMString sdpFmtpLine;
+};
+
+dictionary RTCRtpCodecParameters : RTCRtpCodec {
+ required octet payloadType;
+};
+
+dictionary RTCRtpCapabilities {
+ required sequence<RTCRtpCodecCapability> codecs;
+ required sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
+};
+
+dictionary RTCRtpCodecCapability : RTCRtpCodec {
+};
+
+dictionary RTCRtpHeaderExtensionCapability {
+ required DOMString uri;
+};
+
+dictionary RTCSetParameterOptions {
+};
+
+[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 {
+ "closed",
+ "failed",
+ "disconnected",
+ "new",
+ "checking",
+ "completed",
+ "connected"
+};
+
+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..281c096d21
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webtransport.idl
@@ -0,0 +1,151 @@
+// 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 unrestricted double? incomingMaxAge;
+ attribute unrestricted double? outgoingMaxAge;
+ attribute unrestricted double incomingHighWaterMark;
+ attribute unrestricted double outgoingHighWaterMark;
+};
+
+[Exposed=(Window,Worker), SecureContext]
+interface WebTransport {
+ constructor(USVString url, optional WebTransportOptions options = {});
+
+ Promise<WebTransportConnectionStats> getStats();
+ readonly attribute Promise<undefined> ready;
+ readonly attribute WebTransportReliabilityMode reliability;
+ readonly attribute WebTransportCongestionControl congestionControl;
+ readonly attribute Promise<WebTransportCloseInfo> closed;
+ readonly attribute Promise<undefined> draining;
+ 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;
+ WebTransportSendGroup createSendGroup();
+
+ static readonly attribute boolean supportsReliableOnly;
+};
+
+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 {
+ WebTransportSendGroup? sendGroup = null;
+ long long sendOrder = 0;
+ boolean waitUntilAvailable = false;
+};
+
+dictionary WebTransportConnectionStats {
+ unsigned long long bytesSent;
+ unsigned long long packetsSent;
+ unsigned long long bytesLost;
+ unsigned long long packetsLost;
+ unsigned long long bytesReceived;
+ unsigned long long packetsReceived;
+ DOMHighResTimeStamp smoothedRtt;
+ DOMHighResTimeStamp rttVariation;
+ DOMHighResTimeStamp minRtt;
+ WebTransportDatagramStats datagrams;
+ unsigned long long? estimatedSendRate;
+};
+
+dictionary WebTransportDatagramStats {
+ unsigned long long expiredOutgoing;
+ unsigned long long droppedIncoming;
+ unsigned long long lostOutgoing;
+};
+
+[Exposed=(Window,Worker), SecureContext, Transferable]
+interface WebTransportSendStream : WritableStream {
+ attribute WebTransportSendGroup? sendGroup;
+ attribute long long sendOrder;
+ Promise<WebTransportSendStreamStats> getStats();
+};
+
+dictionary WebTransportSendStreamStats {
+ unsigned long long bytesWritten;
+ unsigned long long bytesSent;
+ unsigned long long bytesAcknowledged;
+};
+
+[Exposed=(Window,Worker), SecureContext]
+interface WebTransportSendGroup {
+ Promise<WebTransportSendStreamStats> getStats();
+};
+
+[Exposed=(Window,Worker), SecureContext, Transferable]
+interface WebTransportReceiveStream : ReadableStream {
+ Promise<WebTransportReceiveStreamStats> getStats();
+};
+
+dictionary WebTransportReceiveStreamStats {
+ 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), Serializable, SecureContext]
+interface WebTransportError : DOMException {
+ constructor(optional DOMString message = "", optional WebTransportErrorOptions options = {});
+
+ readonly attribute WebTransportErrorSource source;
+ readonly attribute unsigned long? streamErrorCode;
+};
+
+dictionary WebTransportErrorOptions {
+ WebTransportErrorSource source = "stream";
+ [Clamp] unsigned long? streamErrorCode = null;
+};
+
+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..3b362d2351
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webusb.idl
@@ -0,0 +1,258 @@
+// 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;
+ sequence<USBDeviceFilter> exclusionFilters = [];
+};
+
+[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;
+};
+
+// USBBlocklistEntry is never exposed.
+dictionary USBBlocklistEntry {
+ required unsigned short idVendor;
+ required unsigned short idProduct;
+ required unsigned short bcdDevice;
+};
+
+dictionary USBPermissionDescriptor : PermissionDescriptor {
+ sequence<USBDeviceFilter> filters;
+ sequence<USBDeviceFilter> exclusionFilters;
+};
+
+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-plane-detection.idl b/testing/web-platform/tests/interfaces/webxr-plane-detection.idl
new file mode 100644
index 0000000000..037e9e251c
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webxr-plane-detection.idl
@@ -0,0 +1,32 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: WebXR Plane Detection Module (https://immersive-web.github.io/real-world-geometry/plane-detection.html)
+
+enum XRPlaneOrientation {
+ "horizontal",
+ "vertical"
+};
+
+[Exposed=Window]
+interface XRPlane {
+ [SameObject] readonly attribute XRSpace planeSpace;
+
+ readonly attribute FrozenArray<DOMPointReadOnly> polygon;
+ readonly attribute XRPlaneOrientation? orientation;
+ readonly attribute DOMHighResTimeStamp lastChangedTime;
+ readonly attribute DOMString? semanticLabel;
+};
+
+[Exposed=Window]
+interface XRPlaneSet {
+ readonly setlike<XRPlane>;
+};
+
+partial interface XRFrame {
+ readonly attribute XRPlaneSet detectedPlanes;
+};
+
+partial interface XRSession {
+ Promise<undefined> initiateRoomCapture();
+};
diff --git a/testing/web-platform/tests/interfaces/webxr.idl b/testing/web-platform/tests/interfaces/webxr.idl
new file mode 100644
index 0000000000..3b7f8a55b7
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webxr.idl
@@ -0,0 +1,296 @@
+// 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;
+ readonly attribute boolean isSystemKeyboardSupported;
+
+ // 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",
+ "transient-pointer"
+};
+
+[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..c8b3a71c69
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/webxrlayers.idl
@@ -0,0 +1,221 @@
+// 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"
+};
+
+enum XRLayerQuality {
+ "default",
+ "text-optimized",
+ "graphics-optimized"
+};
+
+[Exposed=Window] interface XRCompositionLayer : XRLayer {
+ readonly attribute XRLayerLayout layout;
+
+ attribute boolean blendTextureSourceAlpha;
+ attribute boolean forceMonoPresentation;
+ attribute float opacity;
+ readonly attribute unsigned long mipLevels;
+ attribute XRLayerQuality quality;
+
+ 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;
+ boolean clearOnAccess = true;
+};
+
+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;
+ boolean clearOnAccess = true;
+};
+
+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-management.idl b/testing/web-platform/tests/interfaces/window-management.idl
new file mode 100644
index 0000000000..527c41deb6
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/window-management.idl
@@ -0,0 +1,42 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into webref
+// (https://github.com/w3c/webref)
+// Source: Window Management (https://w3c.github.io/window-management/)
+
+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..b4c27c8aca
--- /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, optional HTMLElement? submitter = null);
+
+ 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;
+};