Files
ladybird/Libraries/LibWeb/WebAudio/AudioContext.idl
Jonathan Gamble 4e48ba36bd LibWeb: Better handling of union types in IDL code generation
First check if a string is a member of the enum before attempting
numeric conversion. This generates correct code for fields like:

AudioContextOptions {
  latencyHint: AudioContextLatencyCategory | double;
}
2026-01-26 18:46:39 +01:00

32 lines
1.3 KiB
Plaintext

#import <WebAudio/BaseAudioContext.idl>
// https://www.w3.org/TR/webaudio/#enumdef-audiocontextlatencycategory
enum AudioContextLatencyCategory { "balanced", "interactive", "playback" };
// https://webaudio.github.io/web-audio-api/#AudioContext
[Exposed=Window]
interface AudioContext : BaseAudioContext {
constructor(optional AudioContextOptions contextOptions = {});
readonly attribute double baseLatency;
readonly attribute double outputLatency;
AudioTimestamp getOutputTimestamp ();
Promise<undefined> resume ();
Promise<undefined> suspend ();
Promise<undefined> close ();
MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement);
[FIXME] MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream);
[FIXME] MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack);
[FIXME] MediaStreamAudioDestinationNode createMediaStreamDestination ();
};
dictionary AudioContextOptions {
(AudioContextLatencyCategory or double) latencyHint = "interactive";
float sampleRate;
};
dictionary AudioTimestamp {
[GenerateAsRequired] double contextTime;
// FIXME: Should be DOMHighResTimeStamp, but DOMHighResTimeStamp doesn't get parsed as a double during codegen
[GenerateAsRequired] double performanceTime;
};