Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only emit APIs that are standards track and not experimental #239

Merged
merged 6 commits into from
May 21, 2024

Conversation

srujzs
Copy link
Contributor

@srujzs srujzs commented May 14, 2024

The current implementation only emits APIs that are on the
standards track and supported in Chrome, Firefox, and Safari.
This leaves out widely used APIs like Trusted Types, so this
change relaxes those requirements. In order to support this
change, a number of changes are included:

- BrowserCompatData is modified to handle some slight
discrepancies in how compatibility data is stored, including
global APIs, namespaces, static members, and event handlers.
- Interfaces and namespaces are generated based on whether they
are standards track and experimental. If they are not generated,
any references to them will be replaced by the equivalent JS
type.
- Likewise, inheritance for interfaces is modified to subtype
the first generated interface in the inheritance hierarchy.
- Dictionaries and typedef-like types are generated based on
whether they are used as they don't have compatibility data. In
order to determine this, whenever we generate a _RawType, we
mark it as used, and recursively generate the types needed.
- For each API within an interface, compat data in that interface
and its superinterfaces are used to determine if an API is
generated.
- In order to support the above changes, intermediate
representations for some members (attributes, fields, constants)
are added. There are other members that might be worth moving to
an IR, but that refactoring can be done in a future CL.

Closes a number of issues:

https://github.com/dart-lang/web/issues/209
https://github.com/dart-lang/web/issues/234
https://github.com/dart-lang/web/issues/216
https://github.com/dart-lang/web/issues/205
https://github.com/dart-lang/web/issues/203
https://github.com/dart-lang/web/issues/192

Note that the second commit contains the generation changes and the third commits addresses some random TODOs that came up.


The additions largely come from not requiring Chrome, Firefox, and Safari to implement an API. Many of the subtractions come from removed dictionary types and typedefs and libraries that were allowlisted, but contained many experimental APIs. To make the diff perhaps easier, here's a list of all the libraries, interfaces, and members that are not generated from the IDL:

Not generated

Not generating empty library: package:web/dom/ambient_light.dart
Not generating empty library: package:web/dom/anchors.dart
Not generating empty library: package:web/dom/anonymous_iframe.dart
Not generating empty library: package:web/dom/audio_output.dart
Not generating empty library: package:web/dom/audio_session.dart
Not generating empty library: package:web/dom/autoplay_detection.dart
Not generating empty library: package:web/dom/background_fetch.dart
Not generating empty library: package:web/dom/background_sync.dart
Not generating empty library: package:web/dom/badging.dart
Not generating empty library: package:web/dom/beacon.dart
Not generating empty library: package:web/dom/capture_handle_identity.dart
Not generating empty library: package:web/dom/captured_mouse_events.dart
Not generating empty library: package:web/dom/compat.dart
Not generating empty library: package:web/dom/compute_pressure.dart
Not generating empty library: package:web/dom/contact_picker.dart
Not generating empty library: package:web/dom/content_index.dart
Not generating empty library: package:web/dom/crash_reporting.dart
Not generating empty library: package:web/dom/csp_embedded_enforcement.dart
Not generating empty library: package:web/dom/csp_next.dart
Not generating empty library: package:web/dom/css_anchor_position.dart
Not generating empty library: package:web/dom/css_animation_worklet.dart
Not generating empty library: package:web/dom/css_cascade_6.dart
Not generating empty library: package:web/dom/css_color_5.dart
Not generating empty library: package:web/dom/css_contain.dart
Not generating empty library: package:web/dom/css_images_4.dart
Not generating empty library: package:web/dom/css_layout_api.dart
Not generating empty library: package:web/dom/css_nav.dart
Not generating empty library: package:web/dom/css_parser_api.dart
Not generating empty library: package:web/dom/css_pseudo.dart
Not generating empty library: package:web/dom/css_regions.dart
Not generating empty library: package:web/dom/css_scroll_snap_2.dart
Not generating empty library: package:web/dom/css_shadow_parts.dart
Not generating empty library: package:web/dom/css_view_transitions_2.dart
Not generating empty library: package:web/dom/css_view_transitions.dart
Not generating empty library: package:web/dom/datacue.dart
Not generating empty library: package:web/dom/deprecation_reporting.dart
Not generating empty library: package:web/dom/device_memory.dart
Not generating empty library: package:web/dom/device_posture.dart
Not generating empty library: package:web/dom/digital_goods.dart
Not generating empty library: package:web/dom/document_picture_in_picture.dart
Not generating empty library: package:web/dom/edit_context.dart
Not generating empty library: package:web/dom/element_capture.dart
Not generating empty library: package:web/dom/element_timing.dart
Not generating empty library: package:web/dom/eyedropper_api.dart
Not generating empty library: package:web/dom/fenced_frame.dart
Not generating empty library: package:web/dom/file_system_access.dart
Not generating empty library: package:web/dom/font_metrics_api.dart
Not generating empty library: package:web/dom/gamepad_extensions.dart
Not generating empty library: package:web/dom/geolocation_sensor.dart
Not generating empty library: package:web/dom/get_installed_related_apps.dart
Not generating empty library: package:web/dom/html_media_capture.dart
Not generating empty library: package:web/dom/idle_detection.dart
Not generating empty library: package:web/dom/image_resource.dart
Not generating empty library: package:web/dom/ink_enhancement.dart
Not generating empty library: package:web/dom/input_device_capabilities.dart
Not generating empty library: package:web/dom/input_events.dart
Not generating empty library: package:web/dom/intervention_reporting.dart
Not generating empty library: package:web/dom/is_input_pending.dart
Not generating empty library: package:web/dom/js_self_profiling.dart
Not generating empty library: package:web/dom/keyboard_lock.dart
Not generating empty library: package:web/dom/keyboard_map.dart
Not generating empty library: package:web/dom/layout_instability.dart
Not generating empty library: package:web/dom/local_font_access.dart
Not generating empty library: package:web/dom/longtasks.dart
Not generating empty library: package:web/dom/magnetometer.dart
Not generating empty library: package:web/dom/managed_configuration.dart
Not generating empty library: package:web/dom/manifest_incubations.dart
Not generating empty library: package:web/dom/mediacapture_automation.dart
Not generating empty library: package:web/dom/mediacapture_handle_actions.dart
Not generating empty library: package:web/dom/mediacapture_region.dart
Not generating empty library: package:web/dom/mediacapture_transform.dart
Not generating empty library: package:web/dom/mediacapture_viewport.dart
Not generating empty library: package:web/dom/model_element.dart
Not generating empty library: package:web/dom/netinfo.dart
Not generating empty library: package:web/dom/page_lifecycle.dart
Not generating empty library: package:web/dom/payment_handler.dart
Not generating empty library: package:web/dom/performance_measure_memory.dart
Not generating empty library: package:web/dom/periodic_background_sync.dart
Not generating empty library: package:web/dom/permissions_policy.dart
Not generating empty library: package:web/dom/permissions_request.dart
Not generating empty library: package:web/dom/permissions_revoke.dart
Not generating empty library: package:web/dom/pointerlock.dart
Not generating empty library: package:web/dom/portals.dart
Not generating empty library: package:web/dom/prefer_current_tab.dart
Not generating empty library: package:web/dom/prerendering_revamped.dart
Not generating empty library: package:web/dom/presentation_api.dart
Not generating empty library: package:web/dom/private_click_measurement.dart
Not generating empty library: package:web/dom/proximity.dart
Not generating empty library: package:web/dom/raw_camera_access.dart
Not generating empty library: package:web/dom/real_world_meshing.dart
Not generating empty library: package:web/dom/requeststorageaccessfor.dart
Not generating empty library: package:web/dom/sanitizer_api.dart
Not generating empty library: package:web/dom/savedata.dart
Not generating empty library: package:web/dom/scroll_animations.dart
Not generating empty library: package:web/dom/scroll_to_text_fragment.dart
Not generating empty library: package:web/dom/serial.dart
Not generating empty library: package:web/dom/shape_detection_api.dart
Not generating empty library: package:web/dom/shared_storage.dart
Not generating empty library: package:web/dom/storage_access.dart
Not generating empty library: package:web/dom/storage_buckets.dart
Not generating empty library: package:web/dom/testutils.dart
Not generating empty library: package:web/dom/text_detection_api.dart
Not generating empty library: package:web/dom/turtledove.dart
Not generating empty library: package:web/dom/ua_client_hints.dart
Not generating empty library: package:web/dom/urlpattern.dart
Not generating empty library: package:web/dom/virtual_keyboard.dart
Not generating empty library: package:web/dom/wai_aria.dart
Not generating empty library: package:web/dom/wasm_web_api.dart
Not generating empty library: package:web/dom/web_app_launch.dart
Not generating empty library: package:web/dom/web_bluetooth_scanning.dart
Not generating empty library: package:web/dom/web_nfc.dart
Not generating empty library: package:web/dom/webcodecs_aac_codec_registration.dart
Not generating empty library: package:web/dom/webcodecs_flac_codec_registration.dart
Not generating empty library: package:web/dom/webcodecs_opus_codec_registration.dart
Not generating empty library: package:web/dom/webcrypto_secure_curves.dart
Not generating empty library: package:web/dom/webdriver.dart
Not generating empty library: package:web/dom/webgl_blend_equation_advanced_coherent.dart
Not generating empty library: package:web/dom/webgl_clip_cull_distance.dart
Not generating empty library: package:web/dom/webgl_draw_instanced_base_vertex_base_instance.dart
Not generating empty library: package:web/dom/webgl_multi_draw_instanced_base_vertex_base_instance.dart
Not generating empty library: package:web/dom/webgl_provoking_vertex.dart
Not generating empty library: package:web/dom/webhid.dart
Not generating empty library: package:web/dom/webnn.dart
Not generating empty library: package:web/dom/webrtc_ice.dart
Not generating empty library: package:web/dom/webrtc_stats.dart
Not generating empty library: package:web/dom/webrtc_svc.dart
Not generating empty library: package:web/dom/webusb.dart
Not generating empty library: package:web/dom/webxr_ar_module.dart
Not generating empty library: package:web/dom/webxr_depth_sensing.dart
Not generating empty library: package:web/dom/webxr_dom_overlays.dart
Not generating empty library: package:web/dom/webxr_gamepads_module.dart
Not generating empty library: package:web/dom/webxr_hit_test.dart
Not generating empty library: package:web/dom/webxr_lighting_estimation.dart
Not generating empty library: package:web/dom/webxr_plane_detection.dart
Not generating empty library: package:web/dom/webxrlayers.dart
Not generating empty library: package:web/dom/window_controls_overlay.dart
Not generating empty library: package:web/dom/window_management.dart
Not generating interface: Accelerometer
Not generating interface: AmbientLightSensor
Not generating interface: AnimationNodeList
Not generating interface: AnimationWorkletGlobalScope
Not generating interface: AudioData
Not generating interface: AudioDecoder
Not generating interface: AudioEncoder
Not generating interface: AudioRenderCapacity
Not generating interface: AudioRenderCapacityEvent
Not generating interface: AudioSession
Not generating interface: AudioSinkInfo
Not generating interface: BackgroundFetchEvent
Not generating interface: BackgroundFetchManager
Not generating interface: BackgroundFetchRecord
Not generating interface: BackgroundFetchRegistration
Not generating interface: BackgroundFetchUpdateUIEvent
Not generating interface: BarcodeDetector
Not generating interface: Baseline
Not generating interface: BeforeInstallPromptEvent
Not generating interface: Bluetooth
Not generating interface: Bluetooth
Not generating interface: BluetoothAdvertisingEvent
Not generating interface: BluetoothCharacteristicProperties
Not generating interface: BluetoothDataFilter
Not generating interface: BluetoothDevice
Not generating interface: BluetoothLEScan
Not generating interface: BluetoothLEScanFilter
Not generating interface: BluetoothLEScanPermissionResult
Not generating interface: BluetoothManufacturerDataFilter
Not generating interface: BluetoothManufacturerDataMap
Not generating interface: BluetoothPermissionResult
Not generating interface: BluetoothRemoteGATTCharacteristic
Not generating interface: BluetoothRemoteGATTDescriptor
Not generating interface: BluetoothRemoteGATTServer
Not generating interface: BluetoothRemoteGATTService
Not generating interface: BluetoothServiceDataFilter
Not generating interface: BluetoothServiceDataMap
Not generating interface: BreakToken
Not generating interface: BrowserCaptureMediaStreamTrack
Not generating interface: BrowserCaptureMediaStreamTrack
Not generating interface: BufferedChangeEvent
Not generating interface: CanMakePaymentEvent
Not generating interface: CaptureActionEvent
Not generating interface: CaptureController
Not generating interface: CaptureController
Not generating interface: CapturedMouseEvent
Not generating interface: CaretPosition
Not generating interface: CharacterBoundsUpdateEvent
Not generating interface: ChildBreakToken
Not generating interface: CloseWatcher
Not generating interface: ContactAddress
Not generating interface: ContactsManager
Not generating interface: ContentIndex
Not generating interface: ContentIndexEvent
Not generating interface: ContentVisibilityAutoStateChangeEvent
Not generating interface: CrashReportBody
Not generating interface: CropTarget
Not generating interface: CSSColor
Not generating interface: CSSColorProfileRule
Not generating interface: CSSColorValue
Not generating interface: CSSFontFeatureValuesMap
Not generating interface: CSSHSL
Not generating interface: CSSHWB
Not generating interface: CSSLab
Not generating interface: CSSLCH
Not generating interface: CSSMarginRule
Not generating interface: CSSOKLab
Not generating interface: CSSOKLCH
Not generating interface: CSSParserAtRule
Not generating interface: CSSParserBlock
Not generating interface: CSSParserDeclaration
Not generating interface: CSSParserFunction
Not generating interface: CSSParserQualifiedRule
Not generating interface: CSSParserRule
Not generating interface: CSSParserValue
Not generating interface: CSSPositionFallbackRule
Not generating interface: CSSPseudoElement
Not generating interface: CSSRGB
Not generating interface: CSSScopeRule
Not generating interface: CSSStartingStyleRule
Not generating interface: CSSTryRule
Not generating interface: CSSViewTransitionRule
Not generating interface: CustomStateSet
Not generating interface: DataCue
Not generating interface: DeprecationReportBody
Not generating interface: DevicePosture
Not generating interface: DigitalGoodsService
Not generating interface: DocumentPictureInPicture
Not generating interface: DocumentPictureInPictureEvent
Not generating interface: EditContext
Not generating interface: EncodedAudioChunk
Not generating interface: EyeDropper
Not generating interface: FaceDetector
Not generating interface: FederatedCredential
Not generating interface: Fence
Not generating interface: FencedFrameConfig
Not generating interface: Font
Not generating interface: FontData
Not generating interface: FontFaceFeatures
Not generating interface: FontFacePalette
Not generating interface: FontFacePalettes
Not generating interface: FontFaceVariationAxis
Not generating interface: FontFaceVariations
Not generating interface: FontMetrics
Not generating interface: FragmentDirective
Not generating interface: FragmentResult
Not generating interface: GamepadPose
Not generating interface: GamepadTouch
Not generating interface: GeolocationSensor
Not generating interface: GPU
Not generating interface: GPUAdapter
Not generating interface: GPUAdapterInfo
Not generating interface: GPUBindGroup
Not generating interface: GPUBindGroupLayout
Not generating interface: GPUBuffer
Not generating interface: GPUCanvasContext
Not generating interface: GPUCommandBuffer
Not generating interface: GPUCommandEncoder
Not generating interface: GPUCompilationInfo
Not generating interface: GPUCompilationMessage
Not generating interface: GPUComputePassEncoder
Not generating interface: GPUComputePipeline
Not generating interface: GPUDevice
Not generating interface: GPUDevice
Not generating interface: GPUDevice
Not generating interface: GPUDevice
Not generating interface: GPUDeviceLostInfo
Not generating interface: GPUError
Not generating interface: GPUExternalTexture
Not generating interface: GPUInternalError
Not generating interface: GPUOutOfMemoryError
Not generating interface: GPUPipelineError
Not generating interface: GPUPipelineLayout
Not generating interface: GPUQuerySet
Not generating interface: GPUQueue
Not generating interface: GPURenderBundle
Not generating interface: GPURenderBundleEncoder
Not generating interface: GPURenderPassEncoder
Not generating interface: GPURenderPipeline
Not generating interface: GPUSampler
Not generating interface: GPUShaderModule
Not generating interface: GPUSupportedFeatures
Not generating interface: GPUSupportedLimits
Not generating interface: GPUTexture
Not generating interface: GPUTextureView
Not generating interface: GPUUncapturedErrorEvent
Not generating interface: GPUValidationError
Not generating interface: GroupEffect
Not generating interface: HID
Not generating interface: HIDConnectionEvent
Not generating interface: HIDDevice
Not generating interface: HIDInputReportEvent
Not generating interface: HTMLFencedFrameElement
Not generating interface: HTMLModelElement
Not generating interface: HTMLPortalElement
Not generating interface: IdentityCredential
Not generating interface: IdentityProvider
Not generating interface: IdleDetector
Not generating interface: ImageCapture
Not generating interface: ImageDecoder
Not generating interface: ImageTrack
Not generating interface: ImageTrackList
Not generating interface: Ink
Not generating interface: InkPresenter
Not generating interface: InputDeviceCapabilities
Not generating interface: InterestGroupBiddingScriptRunnerGlobalScope
Not generating interface: InterestGroupReportingScriptRunnerGlobalScope
Not generating interface: InterestGroupScoringScriptRunnerGlobalScope
Not generating interface: InterestGroupScriptRunnerGlobalScope
Not generating interface: InterventionReportBody
Not generating interface: IntrinsicSizes
Not generating interface: Keyboard
Not generating interface: Keyboard
Not generating interface: KeyboardLayoutMap
Not generating interface: KeyFrameRequestEvent
Not generating interface: LaunchParams
Not generating interface: LaunchQueue
Not generating interface: LayoutChild
Not generating interface: LayoutConstraints
Not generating interface: LayoutEdges
Not generating interface: LayoutFragment
Not generating interface: LayoutShift
Not generating interface: LayoutShiftAttribution
Not generating interface: LayoutWorkletGlobalScope
Not generating interface: Magnetometer
Not generating interface: ManagedMediaSource
Not generating interface: ManagedSourceBuffer
Not generating interface: MediaSourceHandle
Not generating interface: MediaStreamTrackProcessor
Not generating interface: ML
Not generating interface: MLActivation
Not generating interface: MLCommandEncoder
Not generating interface: MLCommandEncoder
Not generating interface: MLCommandEncoder
Not generating interface: MLCommandEncoder
Not generating interface: MLContext
Not generating interface: MLContext
Not generating interface: MLContext
Not generating interface: MLContext
Not generating interface: MLGraph
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLGraphBuilder
Not generating interface: MLOperand
Not generating interface: MLOperand
Not generating interface: MLOperand
Not generating interface: NamedFlow
Not generating interface: NamedFlowMap
Not generating interface: NavigateEvent
Not generating interface: Navigation
Not generating interface: NavigationActivation
Not generating interface: NavigationCurrentEntryChangeEvent
Not generating interface: NavigationDestination
Not generating interface: NavigationEvent
Not generating interface: NavigationHistoryEntry
Not generating interface: NavigationTransition
Not generating interface: NavigatorLogin
Not generating interface: NavigatorManagedData
Not generating interface: NavigatorUAData
Not generating interface: NDEFMessage
Not generating interface: NDEFReader
Not generating interface: NDEFReadingEvent
Not generating interface: NDEFRecord
Not generating interface: NetworkInformation
Not generating interface: OTPCredential
Not generating interface: PageRevealEvent
Not generating interface: PaintWorkletGlobalScope
Not generating interface: PasswordCredential
Not generating interface: PaymentManager
Not generating interface: PaymentRequestEvent
Not generating interface: PerformanceElementTiming
Not generating interface: PerformanceLongAnimationFrameTiming
Not generating interface: PerformanceLongTaskTiming
Not generating interface: PerformanceScriptTiming
Not generating interface: PeriodicSyncEvent
Not generating interface: PeriodicSyncManager
Not generating interface: PermissionsPolicy
Not generating interface: PermissionsPolicyViolationReportBody
Not generating interface: PortalActivateEvent
Not generating interface: PortalHost
Not generating interface: Presentation
Not generating interface: Presentation
Not generating interface: Presentation
Not generating interface: PresentationAvailability
Not generating interface: PresentationConnection
Not generating interface: PresentationConnectionAvailableEvent
Not generating interface: PresentationConnectionCloseEvent
Not generating interface: PresentationConnectionList
Not generating interface: PresentationReceiver
Not generating interface: PresentationRequest
Not generating interface: PressureObserver
Not generating interface: PressureRecord
Not generating interface: Profiler
Not generating interface: ProximitySensor
Not generating interface: RestrictionTarget
Not generating interface: RTCIdentityAssertion
Not generating interface: RTCIdentityProviderGlobalScope
Not generating interface: RTCIdentityProviderRegistrar
Not generating interface: Sanitizer
Not generating interface: Scheduling
Not generating interface: ScreenDetailed
Not generating interface: ScreenDetails
Not generating interface: ScriptingPolicyReportBody
Not generating interface: ScrollTimeline
Not generating interface: SequenceEffect
Not generating interface: Serial
Not generating interface: SerialPort
Not generating interface: SFrameTransform
Not generating interface: SFrameTransformErrorEvent
Not generating interface: ShadowAnimation
Not generating interface: SharedStorage
Not generating interface: SharedStorageOperation
Not generating interface: SharedStorageRunOperation
Not generating interface: SharedStorageSelectURLOperation
Not generating interface: SharedStorageWorklet
Not generating interface: SharedStorageWorkletGlobalScope
Not generating interface: SnapEvent
Not generating interface: SnapTargetArray
Not generating interface: SnapTargetList
Not generating interface: SpeechGrammar
Not generating interface: SpeechGrammarList
Not generating interface: StorageBucket
Not generating interface: StorageBucketManager
Not generating interface: SVGDiscardElement
Not generating interface: SVGUseElementShadowRoot
Not generating interface: SyncEvent
Not generating interface: SyncManager
Not generating interface: TaskAttributionTiming
Not generating interface: TextDetector
Not generating interface: TextFormat
Not generating interface: TextFormatUpdateEvent
Not generating interface: TextUpdateEvent
Not generating interface: UncalibratedMagnetometer
Not generating interface: URLPattern
Not generating interface: USB
Not generating interface: USBAlternateInterface
Not generating interface: USBConfiguration
Not generating interface: USBConnectionEvent
Not generating interface: USBDevice
Not generating interface: USBEndpoint
Not generating interface: USBInterface
Not generating interface: USBInTransferResult
Not generating interface: USBIsochronousInTransferPacket
Not generating interface: USBIsochronousInTransferResult
Not generating interface: USBIsochronousOutTransferPacket
Not generating interface: USBIsochronousOutTransferResult
Not generating interface: USBOutTransferResult
Not generating interface: USBPermissionResult
Not generating interface: ValueEvent
Not generating interface: VideoTrackGenerator
Not generating interface: ViewTimeline
Not generating interface: ViewTransition
Not generating interface: VirtualKeyboard
Not generating interface: VisibilityStateEntry
Not generating interface: WEBGL_blend_equation_advanced_coherent
Not generating interface: WEBGL_clip_cull_distance
Not generating interface: WEBGL_draw_instanced_base_vertex_base_instance
Not generating interface: WEBGL_multi_draw_instanced_base_vertex_base_instance
Not generating interface: WEBGL_provoking_vertex
Not generating interface: WebGLObject
Not generating interface: WebTransportReceiveStream
Not generating interface: WebTransportSendGroup
Not generating interface: WebTransportSendStream
Not generating interface: WebTransportWriter
Not generating interface: WGSLLanguageFeatures
Not generating interface: WindowControlsOverlay
Not generating interface: WindowControlsOverlayGeometryChangeEvent
Not generating interface: WindowSharedStorage
Not generating interface: WorkletAnimation
Not generating interface: WorkletAnimationEffect
Not generating interface: WorkletGroupEffect
Not generating interface: WorkletSharedStorage
Not generating interface: XRAnchor
Not generating interface: XRAnchorSet
Not generating interface: XRBoundedReferenceSpace
Not generating interface: XRCamera
Not generating interface: XRCompositionLayer
Not generating interface: XRCPUDepthInformation
Not generating interface: XRCubeLayer
Not generating interface: XRCylinderLayer
Not generating interface: XRDepthInformation
Not generating interface: XREquirectLayer
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRFrame
Not generating interface: XRHitTestResult
Not generating interface: XRHitTestResult
Not generating interface: XRHitTestSource
Not generating interface: XRInputSourceArray
Not generating interface: XRLayer
Not generating interface: XRLayerEvent
Not generating interface: XRLightEstimate
Not generating interface: XRLightProbe
Not generating interface: XRMediaBinding
Not generating interface: XRMesh
Not generating interface: XRMeshSet
Not generating interface: XRPermissionStatus
Not generating interface: XRPlane
Not generating interface: XRPlaneSet
Not generating interface: XRProjectionLayer
Not generating interface: XRQuadLayer
Not generating interface: XRRay
Not generating interface: XRRenderState
Not generating interface: XRRenderState
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSession
Not generating interface: XRSubImage
Not generating interface: XRSystem
Not generating interface: XRTransientInputHitTestResult
Not generating interface: XRTransientInputHitTestSource
Not generating interface: XRView
Not generating interface: XRView
Not generating interface: XRView
Not generating interface: XRWebGLBinding
Not generating interface: XRWebGLBinding
Not generating interface: XRWebGLBinding
Not generating interface: XRWebGLBinding
Not generating interface: XRWebGLDepthInformation
Not generating interface: XRWebGLLayer
Not generating interface: XRWebGLSubImage
Not generating namespace: TestUtils
Not generating: AnimationEffect.after
Not generating: AnimationEffect.before
Not generating: AnimationEffect.nextSibling
Not generating: AnimationEffect.parent
Not generating: AnimationEffect.previousSibling
Not generating: AnimationEffect.remove
Not generating: AnimationEffect.replace
Not generating: AnimationTimeline.duration
Not generating: AnimationTimeline.play
Not generating: AudioContext.onsinkchange
Not generating: AudioContext.renderCapacity
Not generating: AudioContext.setSinkId
Not generating: AudioContext.sinkId
Not generating: AudioWorklet.port
Not generating: AudioWorkletGlobalScope.port
Not generating: AudioWorkletGlobalScope.renderQuantumSize
Not generating: BaseAudioContext.renderQuantumSize
Not generating: BluetoothUUID.canonicalUUID
Not generating: BluetoothUUID.getCharacteristic
Not generating: BluetoothUUID.getDescriptor
Not generating: BluetoothUUID.getService
Not generating: CanvasRenderingContext2D.isContextLost
Not generating: CanvasRenderingContext2D.scrollPathIntoView
Not generating: CanvasRenderingContext2D.scrollPathIntoView
Not generating: Client.lifecycleState
Not generating: ClipboardItem.supports
Not generating: Credential.isConditionalMediationAvailable
Not generating: CSS.animationWorklet
Not generating: CSS.elementSources
Not generating: CSS.layoutWorklet
Not generating: CSS.paintWorklet
Not generating: CSS.parseCommaValueList
Not generating: CSS.parseDeclaration
Not generating: CSS.parseDeclarationList
Not generating: CSS.parseRule
Not generating: CSS.parseRuleList
Not generating: CSS.parseStylesheet
Not generating: CSS.parseValue
Not generating: CSS.parseValueList
Not generating: CSSFontFeatureValuesRule.annotation
Not generating: CSSFontFeatureValuesRule.characterVariant
Not generating: CSSFontFeatureValuesRule.ornaments
Not generating: CSSFontFeatureValuesRule.styleset
Not generating: CSSFontFeatureValuesRule.stylistic
Not generating: CSSFontFeatureValuesRule.swash
Not generating: CSSMathMax.CSSMathMax
Not generating: CSSMathMin.CSSMathMin
Not generating: CSSMathProduct.CSSMathProduct
Not generating: CSSMathSum.CSSMathSum
Not generating: DataTransferItem.getAsFileSystemHandle
Not generating: DeviceMotionEvent.requestPermission
Not generating: DeviceOrientationEvent.requestPermission
Not generating: Document.charset
Not generating: Document.convertPointFromNode
Not generating: Document.convertQuadFromNode
Not generating: Document.convertRectFromNode
Not generating: Document.fragmentDirective
Not generating: Document.getBoxQuads
Not generating: Document.hasPrivateToken
Not generating: Document.hasRedemptionRecord
Not generating: Document.inputEncoding
Not generating: Document.measureElement
Not generating: Document.measureText
Not generating: Document.namedFlows
Not generating: Document.onbeforematch
Not generating: Document.onbeforexrselect
Not generating: Document.onfreeze
Not generating: Document.onpointerrawupdate
Not generating: Document.onprerenderingchange
Not generating: Document.onresume
Not generating: Document.onwebkitanimationend
Not generating: Document.onwebkitanimationiteration
Not generating: Document.onwebkitanimationstart
Not generating: Document.onwebkittransitionend
Not generating: Document.parseHTMLUnsafe
Not generating: Document.permissionsPolicy
Not generating: Document.prerendering
Not generating: Document.queryCommandEnabled
Not generating: Document.queryCommandState
Not generating: Document.queryCommandSupported
Not generating: Document.requestStorageAccessFor
Not generating: Document.startViewTransition
Not generating: Document.wasDiscarded
Not generating: Element.ariaActiveDescendantElement
Not generating: Element.ariaBrailleLabel
Not generating: Element.ariaBrailleRoleDescription
Not generating: Element.ariaColIndexText
Not generating: Element.ariaControlsElements
Not generating: Element.ariaDescribedByElements
Not generating: Element.ariaDetailsElements
Not generating: Element.ariaErrorMessageElements
Not generating: Element.ariaFlowToElements
Not generating: Element.ariaLabelledByElements
Not generating: Element.ariaOwnsElements
Not generating: Element.ariaRowIndexText
Not generating: Element.convertPointFromNode
Not generating: Element.convertQuadFromNode
Not generating: Element.convertRectFromNode
Not generating: Element.elementTiming
Not generating: Element.focusableAreas
Not generating: Element.getBoxQuads
Not generating: Element.getRegionFlowRanges
Not generating: Element.getSpatialNavigationContainer
Not generating: Element.pseudo
Not generating: Element.regionOverset
Not generating: Element.setHTML
Not generating: Element.setHTMLUnsafe
Not generating: Element.spatialNavigationSearch
Not generating: Element.webkitMatchesSelector
Not generating: ElementInternals.ariaActiveDescendantElement
Not generating: ElementInternals.ariaBrailleLabel
Not generating: ElementInternals.ariaBrailleRoleDescription
Not generating: ElementInternals.ariaColIndexText
Not generating: ElementInternals.ariaControlsElements
Not generating: ElementInternals.ariaDescribedByElements
Not generating: ElementInternals.ariaDetailsElements
Not generating: ElementInternals.ariaErrorMessageElements
Not generating: ElementInternals.ariaFlowToElements
Not generating: ElementInternals.ariaLabelledByElements
Not generating: ElementInternals.ariaOwnsElements
Not generating: ElementInternals.ariaRowIndexText
Not generating: ElementInternals.states
Not generating: FileSystemHandle.queryPermission
Not generating: FileSystemHandle.requestPermission
Not generating: FontFace.features
Not generating: FontFace.palettes
Not generating: FontFace.variations
Not generating: FontFace.variationSettings
Not generating: Gamepad.hand
Not generating: Gamepad.hapticActuators
Not generating: Gamepad.pose
Not generating: Gamepad.touchEvents
Not generating: Gamepad.vibrationActuator
Not generating: GamepadHapticActuator.effects
Not generating: GamepadHapticActuator.playEffect
Not generating: GamepadHapticActuator.reset
Not generating: HTMLAnchorElement.attributionSourceId
Not generating: HTMLAnchorElement.attributionSrc
Not generating: HTMLAnchorElement.HTMLAnchorElement
Not generating: HTMLAreaElement.HTMLAreaElement
Not generating: HTMLAudioElement.HTMLAudioElement
Not generating: HTMLBaseElement.HTMLBaseElement
Not generating: HTMLBodyElement.HTMLBodyElement
Not generating: HTMLBodyElement.onpagereveal
Not generating: HTMLBodyElement.onportalactivate
Not generating: HTMLBRElement.HTMLBRElement
Not generating: HTMLButtonElement.HTMLButtonElement
Not generating: HTMLCanvasElement.HTMLCanvasElement
Not generating: HTMLDataElement.HTMLDataElement
Not generating: HTMLDataListElement.HTMLDataListElement
Not generating: HTMLDetailsElement.HTMLDetailsElement
Not generating: HTMLDialogElement.HTMLDialogElement
Not generating: HTMLDirectoryElement.HTMLDirectoryElement
Not generating: HTMLDivElement.HTMLDivElement
Not generating: HTMLDListElement.HTMLDListElement
Not generating: HTMLElement.editContext
Not generating: HTMLElement.HTMLElement
Not generating: HTMLElement.onbeforematch
Not generating: HTMLElement.onbeforexrselect
Not generating: HTMLElement.onpointerrawupdate
Not generating: HTMLElement.onwebkitanimationend
Not generating: HTMLElement.onwebkitanimationiteration
Not generating: HTMLElement.onwebkitanimationstart
Not generating: HTMLElement.onwebkittransitionend
Not generating: HTMLElement.virtualKeyboardPolicy
Not generating: HTMLEmbedElement.HTMLEmbedElement
Not generating: HTMLFieldSetElement.HTMLFieldSetElement
Not generating: HTMLFontElement.HTMLFontElement
Not generating: HTMLFormElement.HTMLFormElement
Not generating: HTMLFrameElement.HTMLFrameElement
Not generating: HTMLFrameSetElement.HTMLFrameSetElement
Not generating: HTMLFrameSetElement.onpagereveal
Not generating: HTMLFrameSetElement.onportalactivate
Not generating: HTMLHeadElement.HTMLHeadElement
Not generating: HTMLHeadingElement.HTMLHeadingElement
Not generating: HTMLHRElement.HTMLHRElement
Not generating: HTMLHtmlElement.HTMLHtmlElement
Not generating: HTMLIFrameElement.adAuctionHeaders
Not generating: HTMLIFrameElement.credentialless
Not generating: HTMLIFrameElement.csp
Not generating: HTMLIFrameElement.HTMLIFrameElement
Not generating: HTMLIFrameElement.permissionsPolicy
Not generating: HTMLIFrameElement.privateToken
Not generating: HTMLIFrameElement.sharedStorageWritable
Not generating: HTMLImageElement.attributionSrc
Not generating: HTMLImageElement.HTMLImageElement
Not generating: HTMLImageElement.sharedStorageWritable
Not generating: HTMLInputElement.HTMLInputElement
Not generating: HTMLLabelElement.HTMLLabelElement
Not generating: HTMLLegendElement.HTMLLegendElement
Not generating: HTMLLIElement.HTMLLIElement
Not generating: HTMLLinkElement.blocking
Not generating: HTMLLinkElement.HTMLLinkElement
Not generating: HTMLMapElement.HTMLMapElement
Not generating: HTMLMarqueeElement.HTMLMarqueeElement
Not generating: HTMLMenuElement.HTMLMenuElement
Not generating: HTMLMetaElement.HTMLMetaElement
Not generating: HTMLMeterElement.HTMLMeterElement
Not generating: HTMLModElement.HTMLModElement
Not generating: HTMLObjectElement.HTMLObjectElement
Not generating: HTMLOListElement.HTMLOListElement
Not generating: HTMLOptGroupElement.HTMLOptGroupElement
Not generating: HTMLOptionElement.HTMLOptionElement
Not generating: HTMLOutputElement.HTMLOutputElement
Not generating: HTMLParagraphElement.HTMLParagraphElement
Not generating: HTMLParamElement.HTMLParamElement
Not generating: HTMLPictureElement.HTMLPictureElement
Not generating: HTMLPreElement.HTMLPreElement
Not generating: HTMLProgressElement.HTMLProgressElement
Not generating: HTMLQuoteElement.HTMLQuoteElement
Not generating: HTMLScriptElement.attributionSrc
Not generating: HTMLScriptElement.blocking
Not generating: HTMLScriptElement.HTMLScriptElement
Not generating: HTMLSelectElement.HTMLSelectElement
Not generating: HTMLSlotElement.HTMLSlotElement
Not generating: HTMLSourceElement.HTMLSourceElement
Not generating: HTMLSpanElement.HTMLSpanElement
Not generating: HTMLStyleElement.blocking
Not generating: HTMLStyleElement.HTMLStyleElement
Not generating: HTMLTableCaptionElement.HTMLTableCaptionElement
Not generating: HTMLTableCellElement.HTMLTableCellElement
Not generating: HTMLTableColElement.HTMLTableColElement
Not generating: HTMLTableElement.HTMLTableElement
Not generating: HTMLTableRowElement.HTMLTableRowElement
Not generating: HTMLTableSectionElement.HTMLTableSectionElement
Not generating: HTMLTemplateElement.HTMLTemplateElement
Not generating: HTMLTemplateElement.shadowRootDelegatesFocus
Not generating: HTMLTextAreaElement.HTMLTextAreaElement
Not generating: HTMLTimeElement.HTMLTimeElement
Not generating: HTMLTitleElement.HTMLTitleElement
Not generating: HTMLTrackElement.HTMLTrackElement
Not generating: HTMLUListElement.HTMLUListElement
Not generating: HTMLVideoElement.HTMLVideoElement
Not generating: IntersectionObserver.scrollMargin
Not generating: IntersectionObserverEntry.IntersectionObserverEntry
Not generating: MathMLElement.onbeforematch
Not generating: MathMLElement.onbeforexrselect
Not generating: MathMLElement.onpointerrawupdate
Not generating: MathMLElement.onwebkitanimationend
Not generating: MathMLElement.onwebkitanimationiteration
Not generating: MathMLElement.onwebkitanimationstart
Not generating: MathMLElement.onwebkittransitionend
Not generating: MediaDevices.getViewportMedia
Not generating: MediaDevices.oncaptureaction
Not generating: MediaDevices.selectAudioOutput
Not generating: MediaDevices.setCaptureHandleConfig
Not generating: MediaDevices.setSupportedCaptureActions
Not generating: MediaKeys.getStatusForPolicy
Not generating: MediaRecorder.audioBitrateMode
Not generating: MediaSession.setCameraActive
Not generating: MediaSession.setMicrophoneActive
Not generating: MediaSource.canConstructInDedicatedWorker
Not generating: MediaSource.handle
Not generating: MediaStreamTrack.getCaptureHandle
Not generating: MediaStreamTrack.getSupportedCaptureActions
Not generating: MediaStreamTrack.isolated
Not generating: MediaStreamTrack.oncapturehandlechange
Not generating: MediaStreamTrack.onisolationchange
Not generating: MediaStreamTrack.sendCaptureAction
Not generating: MouseEvent.layerX
Not generating: MouseEvent.layerY
Not generating: Navigator.audioSession
Not generating: Navigator.bluetooth
Not generating: Navigator.clearOriginJoinedAdInterestGroups
Not generating: Navigator.connection
Not generating: Navigator.contacts
Not generating: Navigator.createAuctionNonce
Not generating: Navigator.deprecatedReplaceInURN
Not generating: Navigator.devicePosture
Not generating: Navigator.getAutoplayPolicy
Not generating: Navigator.getAutoplayPolicy
Not generating: Navigator.getAutoplayPolicy
Not generating: Navigator.getInstalledRelatedApps
Not generating: Navigator.gpu
Not generating: Navigator.hid
Not generating: Navigator.ink
Not generating: Navigator.joinAdInterestGroup
Not generating: Navigator.keyboard
Not generating: Navigator.leaveAdInterestGroup
Not generating: Navigator.login
Not generating: Navigator.managed
Not generating: Navigator.ml
Not generating: Navigator.runAdAuction
Not generating: Navigator.scheduling
Not generating: Navigator.serial
Not generating: Navigator.storageBuckets
Not generating: Navigator.updateAdInterestGroups
Not generating: Navigator.userAgentData
Not generating: Navigator.virtualKeyboard
Not generating: Navigator.xr
Not generating: Notification.actions
Not generating: Notification.image
Not generating: Notification.maxActions
Not generating: Notification.renotify
Not generating: Notification.timestamp
Not generating: Notification.vibrate
Not generating: OffscreenCanvasRenderingContext2D.isContextLost
Not generating: PaintRenderingContext2D.arc
Not generating: PaintRenderingContext2D.arcTo
Not generating: PaintRenderingContext2D.bezierCurveTo
Not generating: PaintRenderingContext2D.closePath
Not generating: PaintRenderingContext2D.createConicGradient
Not generating: PaintRenderingContext2D.ellipse
Not generating: PaintRenderingContext2D.isContextLost
Not generating: PaintRenderingContext2D.lineTo
Not generating: PaintRenderingContext2D.moveTo
Not generating: PaintRenderingContext2D.quadraticCurveTo
Not generating: PaintRenderingContext2D.rect
Not generating: PaintRenderingContext2D.reset
Not generating: PaintRenderingContext2D.roundRect
Not generating: PaymentRequest.isSecurePaymentConfirmationAvailable
Not generating: Performance.interactionCount
Not generating: Performance.measureUserAgentSpecificMemory
Not generating: PerformanceEntry.id
Not generating: PerformanceEntry.navigationId
Not generating: PerformanceEventTiming.interactionId
Not generating: PerformanceNavigationTiming.activationStart
Not generating: PerformanceNavigationTiming.criticalCHRestart
Not generating: PerformanceResourceTiming.contentType
Not generating: PerformanceResourceTiming.deliveryType
Not generating: PerformanceResourceTiming.firstInterimResponseStart
Not generating: PerformanceResourceTiming.responseStatus
Not generating: Permissions.request
Not generating: PointerEvent.altitudeAngle
Not generating: PointerEvent.azimuthAngle
Not generating: PopStateEvent.hasUAVisualTransition
Not generating: PublicKeyCredential.getClientCapabilities
Not generating: PublicKeyCredential.parseCreationOptionsFromJSON
Not generating: PublicKeyCredential.parseRequestOptionsFromJSON
Not generating: PublicKeyCredential.toJSON
Not generating: PushSubscriptionChangeEvent.PushSubscriptionChangeEvent
Not generating: ReadableStream.from
Not generating: Request.duplex
Not generating: Request.isReloadNavigation
Not generating: Request.targetAddressSpace
Not generating: RTCDataChannel.priority
Not generating: RTCIceCandidate.relayProtocol
Not generating: RTCIceCandidate.url
Not generating: RTCIceTransport.addRemoteCandidate
Not generating: RTCIceTransport.component
Not generating: RTCIceTransport.gather
Not generating: RTCIceTransport.RTCIceTransport
Not generating: RTCIceTransport.start
Not generating: RTCIceTransport.stop
Not generating: RTCPeerConnection.idpErrorInfo
Not generating: RTCRtpScriptTransformer.onkeyframerequest
Not generating: RTCRtpSender.generateKeyFrame
Not generating: Screen.isExtended
Not generating: Screen.onchange
Not generating: Selection.direction
Not generating: Selection.getComposedRanges
Not generating: ServiceWorkerGlobalScope.cookieStore
Not generating: ServiceWorkerGlobalScope.onbackgroundfetchabort
Not generating: ServiceWorkerGlobalScope.onbackgroundfetchclick
Not generating: ServiceWorkerGlobalScope.onbackgroundfetchfail
Not generating: ServiceWorkerGlobalScope.onbackgroundfetchsuccess
Not generating: ServiceWorkerGlobalScope.oncanmakepayment
Not generating: ServiceWorkerGlobalScope.oncontentdelete
Not generating: ServiceWorkerGlobalScope.oncookiechange
Not generating: ServiceWorkerGlobalScope.onpaymentrequest
Not generating: ServiceWorkerGlobalScope.onperiodicsync
Not generating: ServiceWorkerRegistration.backgroundFetch
Not generating: ServiceWorkerRegistration.cookies
Not generating: ServiceWorkerRegistration.index
Not generating: ServiceWorkerRegistration.paymentManager
Not generating: ServiceWorkerRegistration.periodicSync
Not generating: ServiceWorkerRegistration.sync
Not generating: ShadowRoot.setHTMLUnsafe
Not generating: SourceBuffer.textTracks
Not generating: SpeechRecognitionErrorEvent.SpeechRecognitionErrorEvent
Not generating: SpeechRecognitionEvent.SpeechRecognitionEvent
Not generating: SVGAElement.hash
Not generating: SVGAElement.host
Not generating: SVGAElement.hostname
Not generating: SVGAElement.origin
Not generating: SVGAElement.password
Not generating: SVGAElement.pathname
Not generating: SVGAElement.port
Not generating: SVGAElement.protocol
Not generating: SVGAElement.search
Not generating: SVGAElement.username
Not generating: SVGAnimationElement.onbegin
Not generating: SVGAnimationElement.onrepeat
Not generating: SVGElement.correspondingElement
Not generating: SVGElement.correspondingUseElement
Not generating: SVGElement.onbeforematch
Not generating: SVGElement.onbeforexrselect
Not generating: SVGElement.onpointerrawupdate
Not generating: SVGElement.onwebkitanimationend
Not generating: SVGElement.onwebkitanimationiteration
Not generating: SVGElement.onwebkitanimationstart
Not generating: SVGElement.onwebkittransitionend
Not generating: SVGStringList.length
Not generating: SVGSVGElement.onpagereveal
Not generating: SVGSVGElement.onportalactivate
Not generating: SVGTransformList.length
Not generating: SVGUseElement.animatedInstanceRoot
Not generating: SVGUseElement.instanceRoot
Not generating: TaskSignal.any
Not generating: Text.convertPointFromNode
Not generating: Text.convertQuadFromNode
Not generating: Text.convertRectFromNode
Not generating: Text.getBoxQuads
Not generating: TouchEvent.getModifierState
Not generating: TrustedHTML.fromLiteral
Not generating: TrustedScript.fromLiteral
Not generating: TrustedScriptURL.fromLiteral
Not generating: UIEvent.sourceCapabilities
Not generating: VideoFrame.metadata
Not generating: WebGL2RenderingContext.drawingBufferFormat
Not generating: WebGL2RenderingContext.drawingBufferStorage
Not generating: WebGL2RenderingContext.unpackColorSpace
Not generating: WebGLRenderingContext.drawingBufferFormat
Not generating: WebGLRenderingContext.drawingBufferStorage
Not generating: WebGLRenderingContext.unpackColorSpace
Not generating: WebTransport.congestionControl
Not generating: WebTransport.createSendGroup
Not generating: WebTransport.draining
Not generating: WebTransport.getStats
Not generating: WebTransport.reliability
Not generating: WebTransport.supportsReliableOnly
Not generating: Window.clientInformation
Not generating: Window.cookieStore
Not generating: Window.credentialless
Not generating: Window.documentPictureInPicture
Not generating: Window.fence
Not generating: Window.getDigitalGoodsService
Not generating: Window.getScreenDetails
Not generating: Window.launchQueue
Not generating: Window.navigate
Not generating: Window.navigation
Not generating: Window.onbeforematch
Not generating: Window.onbeforexrselect
Not generating: Window.onpagereveal
Not generating: Window.onpointerrawupdate
Not generating: Window.onportalactivate
Not generating: Window.onwebkitanimationend
Not generating: Window.onwebkitanimationiteration
Not generating: Window.onwebkitanimationstart
Not generating: Window.onwebkittransitionend
Not generating: Window.originAgentCluster
Not generating: Window.pageXOffset
Not generating: Window.pageYOffset
Not generating: Window.portalHost
Not generating: Window.queryLocalFonts
Not generating: Window.sharedStorage
Not generating: Window.showDirectoryPicker
Not generating: Window.showOpenFilePicker
Not generating: Window.showSaveFilePicker
Not generating: WindowClient.ancestorOrigins
Not generating: WorkerNavigator.clearAppBadge
Not generating: WorkerNavigator.gpu
Not generating: WorkerNavigator.hid
Not generating: WorkerNavigator.ml
Not generating: WorkerNavigator.oscpu
Not generating: WorkerNavigator.productSub
Not generating: WorkerNavigator.serial
Not generating: WorkerNavigator.setAppBadge
Not generating: WorkerNavigator.storageBuckets
Not generating: WorkerNavigator.taintEnabled
Not generating: WorkerNavigator.userAgentData
Not generating: WorkerNavigator.vendor
Not generating: WorkerNavigator.vendorSub
Not generating: XMLHttpRequest.setAttributionReporting
Not generating: XMLHttpRequest.setPrivateToken
Not generating: XRHand.get
Not generating: XRHand.size


As a rough gauge to determine what the diff looks like between IDL versions, I ran the script with an IDL version from one year ago (3.35.1). Most of the ~15 changes are not breaking for JS but breaking for us (for example, renaming a dictionary or removed fields). I suspect we still have to release major versions often (but not as often) for package:web because of that reality.

Still, it's a good idea to limit the APIs here. It'll avoid users accidentally using experimental APIs that might break, making it harder to do rolls internally.

The current implementation only emits APIs that are on the
standards track and supported in Chrome, Firefox, and Safari.
This leaves out widely used APIs like Trusted Types, so this
change relaxes those requirements. In order to support this
change, a number of changes are included:

- BrowserCompatData is modified to handle some slight
discrepancies in how compatibility data is stored, including
global APIs, namespaces, static members, and event handlers.
- Interfaces and namespaces are generated based on whether they
are standards track and experimental. If they are not generated,
any references to them will be replaced by the equivalent JS
type.
- Likewise, inheritance for interfaces is modified to subtype
the first generated interface in the inheritance hierarchy.
- Dictionaries and typedef-like types are generated based on
whether they are used as they don't have compatibility data. In
order to determine this, whenever we generate a _RawType, we
mark it as used, and recursively generate the types needed.
- For each API within an interface, compat data in that interface
and its superinterfaces are used to determine if an API is
generated.
- In order to support the above changes, intermediate
representations for some members (attributes, fields, constants)
are added. There are other members that might be worth moving to
an IR, but that refactoring can be done in a future CL.

Closes a number of issues:

dart-lang#209
dart-lang#234
dart-lang#216
dart-lang#205
dart-lang#203
dart-lang#192
- Removes an unnecessary null-check
- Refactors getTypeForUnionCalculation to a shared
_getJSTypeEquivalent function
- Avoids shadowing an instance variable
Copy link
Member

@devoncarew devoncarew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm but I'm going to take another pass through (given that this is a larger PR)

tool/generator/bcd.dart Outdated Show resolved Hide resolved
tool/generator/bcd.dart Outdated Show resolved Hide resolved
@@ -8,6 +8,10 @@
- Update the docs for generated interface types to reference the MDN Web Docs
project.
- Address several broken links in API documentation.
- Generate APIs based on if they're on track to be a standard and not
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not for this PR, but it would be nice to be able to have course descriptions of how the generated API changed between major versions. So, something like:

  • added classes Foo, Bar, and Baz
  • remove class Qux

Perhaps this could be done by iterating over the code_builder model and generating a very high-level overview to a text file? Just the list of classes perhaps. If that was committed to the repo, then a simple diff would give us enough info to write a changelog.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps this could be done by iterating over the code_builder model and generating a very high-level overview to a text file?

Yeah, I think generating a log file of the emitted classes and members and then doing some kind of diff between the two logs should be able to accomplish this. With large changes like this, though, the changelog becomes very long. We could reference some other file that contains that diff to avoid making the changelog too verbose.

@@ -1295,7 +1294,7 @@ extension type Document._(JSObject _) implements Node, JSObject {
/// method of the [Document] interface returns a
/// [CaretPosition] object, containing the DOM node, along with the caret and
/// caret's character offset within that node.
external CaretPosition? caretPositionFromPoint(
external JSObject? caretPositionFromPoint(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's annoying

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could generate CaretPosition, but then its members will likely all be hidden, so I'm not sure if that's better or worse than just returning a JSObject. If CaretPosition also is renamed, then that's a breaking change (in this specific case, presumably caretPositionFromPoint would be renamed as well, so that's probably a non-issue). We could also generate its members, but that also comes with the cost of potentially more breaking changes in the future.

tool/generator/bcd.dart Show resolved Hide resolved
tool/generator/translator.dart Show resolved Hide resolved
@srujzs srujzs mentioned this pull request May 20, 2024
@srujzs
Copy link
Contributor Author

srujzs commented May 21, 2024

@devoncarew Were you planning to give another pass at this or should I submit as is?

@devoncarew
Copy link
Member

@devoncarew Were you planning to give another pass at this or should I submit as is?

Sorry - lgtm as is (nothing really stood out to me on the first pass; happy to just go w/ Siggi's review).

@srujzs srujzs merged commit 7604578 into dart-lang:main May 21, 2024
9 checks passed
@devoncarew
Copy link
Member

FYI, the import into google3 is going to need a bit of patching up (we've introduced a new extension type Module into the namespace, and that's conflicting w/ some existing symbol names).

@srujzs
Copy link
Contributor Author

srujzs commented May 23, 2024

I responded on the internal bug, but I think we just need to add a patch to the file that's importing it.

copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request May 29, 2024
…on, dartdoc, markdown, shelf, web, web_socket_channel, webdev

Revisions updated by `dart tools/rev_sdk_deps.dart`.

args (https://github.com/dart-lang/args/compare/cf90551..b3608bd):
  b3608bd  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/args#275)

async (https://github.com/dart-lang/async/compare/77a25d7..f933ddf):
  f933ddf  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/async#275)

benchmark_harness (https://github.com/dart-lang/benchmark_harness/compare/accc755..6fa42b0):
  6fa42b0  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/benchmark_harness#106)

boolean_selector (https://github.com/dart-lang/boolean_selector/compare/2cbd4a6..84467e5):
  84467e5  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/boolean_selector#61)

collection (https://github.com/dart-lang/collection/compare/4718398..fe2e800):
  fe2e800  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/collection#344)

dartdoc (https://github.com/dart-lang/dartdoc/compare/1e1a004..ed97585):
  ed975850  2024-05-28  Sam Rawlins  Fix flutter CI with re-internalized snippets tool (dart-lang/dartdoc#3776)

markdown (https://github.com/dart-lang/markdown/compare/340c76f..c1013dc):
  c1013dc  2024-05-28  Kevin Moore  update lints dependency (dart-lang/markdown#613)
  7a3b8d6  2024-05-28  Sam Rawlins  Bump to 7.2.3 (dart-lang/markdown#612)

shelf (https://github.com/dart-lang/shelf/compare/d9f82bf..338962c):
  338962c  2024-05-28  Kevin Moore  update lints dependency (dart-lang/shelf#433)

web (https://github.com/dart-lang/web/compare/d776645..f6f778b):
  f6f778b  2024-05-28  Kenzie Davisson  Expose `onUnload` event stream and `ElementStream` as a public class (dart-lang/web#246)
  e1d5148  2024-05-23  Kevin Moore  Update MDN source and doc comments (dart-lang/web#244)
  53862f1  2024-05-22  Kevin Moore  update lints dependency (dart-lang/web#243)
  7604578  2024-05-21  Srujan Gaddam  Only emit APIs that are standards track and not experimental (dart-lang/web#239)

web_socket_channel (https://github.com/dart-lang/web_socket_channel/compare/45b8ce9..afd1e3c):
  afd1e3c  2024-05-23  Brian Quinlan  Remove `--fatal-infos` from `dart pub downgrade` analysis (dart-lang/web_socket_channel#367)
  cb20b71  2024-05-23  Sarah Zakarias  Add `topics` to `pubspec.yaml` (dart-lang/web_socket_channel#362)
  8514229  2024-05-22  Kevin Moore  Bump and fix lints (dart-lang/web_socket_channel#366)

webdev (https://github.com/dart-lang/webdev/compare/fc32eb6..1bed26a):
  1bed26ab  2024-05-28  Elliott Brooks  Add a reload handler along with a restart handler (dart-lang/webdev#2439)
  15028c4f  2024-05-24  Elliott Brooks  Register a restart handler directly over the VM service connection (dart-lang/webdev#2437)

Change-Id: I4e80ae77b6e74b9cd0b5524b1ba66e0f3de0a14e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/368445
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Devon Carew <devoncarew@google.com>
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request May 30, 2024
…collection, dartdoc, markdown, shelf, web, web_socket_channel, webdev"

This reverts commit 9c5085e.

Reason for revert: b/343654390

Original change's description:
> [deps] rev args, async, benchmark_harness, boolean_selector, collection, dartdoc, markdown, shelf, web, web_socket_channel, webdev
>
> Revisions updated by `dart tools/rev_sdk_deps.dart`.
>
> args (https://github.com/dart-lang/args/compare/cf90551..b3608bd):
>   b3608bd  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/args#275)
>
> async (https://github.com/dart-lang/async/compare/77a25d7..f933ddf):
>   f933ddf  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/async#275)
>
> benchmark_harness (https://github.com/dart-lang/benchmark_harness/compare/accc755..6fa42b0):
>   6fa42b0  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/benchmark_harness#106)
>
> boolean_selector (https://github.com/dart-lang/boolean_selector/compare/2cbd4a6..84467e5):
>   84467e5  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/boolean_selector#61)
>
> collection (https://github.com/dart-lang/collection/compare/4718398..fe2e800):
>   fe2e800  2024-05-28  Kevin Moore  bump lints dep and fix (dart-archive/collection#344)
>
> dartdoc (https://github.com/dart-lang/dartdoc/compare/1e1a004..ed97585):
>   ed975850  2024-05-28  Sam Rawlins  Fix flutter CI with re-internalized snippets tool (dart-lang/dartdoc#3776)
>
> markdown (https://github.com/dart-lang/markdown/compare/340c76f..c1013dc):
>   c1013dc  2024-05-28  Kevin Moore  update lints dependency (dart-lang/markdown#613)
>   7a3b8d6  2024-05-28  Sam Rawlins  Bump to 7.2.3 (dart-lang/markdown#612)
>
> shelf (https://github.com/dart-lang/shelf/compare/d9f82bf..338962c):
>   338962c  2024-05-28  Kevin Moore  update lints dependency (dart-lang/shelf#433)
>
> web (https://github.com/dart-lang/web/compare/d776645..f6f778b):
>   f6f778b  2024-05-28  Kenzie Davisson  Expose `onUnload` event stream and `ElementStream` as a public class (dart-lang/web#246)
>   e1d5148  2024-05-23  Kevin Moore  Update MDN source and doc comments (dart-lang/web#244)
>   53862f1  2024-05-22  Kevin Moore  update lints dependency (dart-lang/web#243)
>   7604578  2024-05-21  Srujan Gaddam  Only emit APIs that are standards track and not experimental (dart-lang/web#239)
>
> web_socket_channel (https://github.com/dart-lang/web_socket_channel/compare/45b8ce9..afd1e3c):
>   afd1e3c  2024-05-23  Brian Quinlan  Remove `--fatal-infos` from `dart pub downgrade` analysis (dart-lang/web_socket_channel#367)
>   cb20b71  2024-05-23  Sarah Zakarias  Add `topics` to `pubspec.yaml` (dart-lang/web_socket_channel#362)
>   8514229  2024-05-22  Kevin Moore  Bump and fix lints (dart-lang/web_socket_channel#366)
>
> webdev (https://github.com/dart-lang/webdev/compare/fc32eb6..1bed26a):
>   1bed26ab  2024-05-28  Elliott Brooks  Add a reload handler along with a restart handler (dart-lang/webdev#2439)
>   15028c4f  2024-05-24  Elliott Brooks  Register a restart handler directly over the VM service connection (dart-lang/webdev#2437)
>
> Change-Id: I4e80ae77b6e74b9cd0b5524b1ba66e0f3de0a14e
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/368445
> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
> Auto-Submit: Devon Carew <devoncarew@google.com>

Change-Id: Ief02507626fe2ef4e8a92e20872a0fec37ae3b71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/368800
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
Auto-Submit: Ivan Inozemtsev <iinozemtsev@google.com>
@Rexios80
Copy link

Rexios80 commented Jun 6, 2024

When is this going to be released to pub.dev? I need the HTMLCanvalElement.captureStream() method that was added in this PR.

@srujzs
Copy link
Contributor Author

srujzs commented Jun 6, 2024

I'm addressing one last breaking change before we're ready to release 0.6.0.

You may already be aware, but you can use extension methods yourself to interop:

extension on HTMLCanvasElement {
  external MediaStream captureStream([num frameRequestRate]);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants