ladybird/Libraries/LibWeb/WebAudio
Shannon Booth f3ec727555 LibWeb/Bindings: Support returning nullable types in dictionaries
We were previously assuming that dictionary members were always
required when being returned.

This is a bit of a weird case, because unlike _input_ dictionaries
which the spec marks as required, 'result' dictionaries do not seem to
be marked in spec IDL as required. This is still fine from the POV that
the spec is written as it states that we should only be putting the
values into the dictionary if the value exists.

We could do this through some metaprogramming constexpr type checks.
For example, if the type in our C++ representation was not an
Optional, we can skip the has_value check.

Instead of doing that, change the IDL of the result dictionaries to
annotate these members so that the IDL generator knows this
information up front. While all current cases have every single
member returned or not returned, it is conceivable that the spec
could have a situation that one member is always returned (and
should get marked as required), while the others are optionally
returned. Therefore, this new GenerateAsRequired attribute is
applied for each individual member.
2025-02-10 17:05:15 +00:00
..
AnalyserNode.cpp LibWeb/WebAudio: Define and partially implement AnalyserNode 2025-01-17 10:11:24 +01:00
AnalyserNode.h LibWeb/WebAudio: Define and partially implement AnalyserNode 2025-01-17 10:11:24 +01:00
AnalyserNode.idl LibWeb/WebAudio: Define and partially implement AnalyserNode 2025-01-17 10:11:24 +01:00
AudioBuffer.cpp LibWeb: Prevent AudioBuffer data being copied to or from a shared buffer 2025-02-09 14:13:46 +00:00
AudioBuffer.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
AudioBuffer.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioBufferSourceNode.cpp LibWeb/WebAudio: Implement automation rate constraints 2025-01-19 17:24:55 +01:00
AudioBufferSourceNode.h LibWeb: Initialize AudioBufferSourceNode with correct defaults 2025-01-08 14:45:51 +00:00
AudioBufferSourceNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioContext.cpp AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
AudioContext.h LibWeb: Add AudioContext.createMediaElementSource() factory method 2025-01-17 19:04:47 +00:00
AudioContext.idl LibWeb/Bindings: Support returning nullable types in dictionaries 2025-02-10 17:05:15 +00:00
AudioDestinationNode.cpp LibWeb: Initialize OfflineAudioContext with correct defaults 2025-01-08 11:24:08 +00:00
AudioDestinationNode.h LibWeb: Initialize OfflineAudioContext with correct defaults 2025-01-08 11:24:08 +00:00
AudioDestinationNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioListener.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
AudioListener.h LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
AudioListener.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioNode.cpp LibWeb: Validate AudioNode::disconnect() input and output arguments 2025-01-09 11:34:38 +00:00
AudioNode.h LibWeb: Validate AudioNode::disconnect() input and output arguments 2025-01-09 11:34:38 +00:00
AudioNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioParam.cpp LibWeb/WebAudio: Implement automation rate constraints 2025-01-19 17:24:55 +01:00
AudioParam.h LibWeb/WebAudio: Implement automation rate constraints 2025-01-19 17:24:55 +01:00
AudioParam.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
AudioScheduledSourceNode.cpp LibWeb: Validate parameters for source node start() and stop() methods 2025-01-10 23:35:20 +01:00
AudioScheduledSourceNode.h LibWeb: Validate parameters for source node start() and stop() methods 2025-01-10 23:35:20 +01:00
AudioScheduledSourceNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
BaseAudioContext.cpp AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
BaseAudioContext.h LibWeb: Add BaseAudioContext.createStereoPanner() factory method 2025-01-18 10:20:41 +01:00
BaseAudioContext.idl LibWeb: Add BaseAudioContext.createStereoPanner() factory method 2025-01-18 10:20:41 +01:00
BiquadFilterNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
BiquadFilterNode.h LibWeb: Use correct ranges for BiquadFilterNode parameters 2025-01-08 19:05:51 +00:00
BiquadFilterNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ChannelMergerNode.cpp LibWeb: Add ChannelMergerNode interface 2024-11-25 17:16:06 +01:00
ChannelMergerNode.h LibWeb: Add ChannelMergerNode interface 2024-11-25 17:16:06 +01:00
ChannelMergerNode.idl LibWeb: Add ChannelMergerNode interface 2024-11-25 17:16:06 +01:00
ChannelSplitterNode.cpp LibWeb: Add ChannelSplitterNode interface 2025-01-02 11:39:23 +00:00
ChannelSplitterNode.h LibWeb: Add ChannelSplitterNode interface 2025-01-02 11:39:23 +00:00
ChannelSplitterNode.idl LibWeb: Add ChannelSplitterNode interface 2025-01-02 11:39:23 +00:00
ConstantSourceNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
ConstantSourceNode.h LibWeb: Add ConstantSourceNode interface 2025-01-03 11:13:27 +01:00
ConstantSourceNode.idl LibWeb: Add ConstantSourceNode interface 2025-01-03 11:13:27 +01:00
DelayNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
DelayNode.h LibWeb/WebAudio: Add DelayNode interface 2025-01-08 15:31:59 +00:00
DelayNode.idl LibWeb/WebAudio: Add DelayNode interface 2025-01-08 15:31:59 +00:00
DynamicsCompressorNode.cpp LibWeb/WebAudio: Implement automation rate constraints 2025-01-19 17:24:55 +01:00
DynamicsCompressorNode.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
DynamicsCompressorNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
GainNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
GainNode.h LibGC+Everywhere: Factor out a LibGC from LibJS 2024-11-15 14:49:20 +01:00
GainNode.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
MediaElementAudioSourceNode.cpp LibWeb: Add MediaElementAudioSourceNode interface 2025-01-17 19:04:47 +00:00
MediaElementAudioSourceNode.h LibWeb: Add MediaElementAudioSourceNode interface 2025-01-17 19:04:47 +00:00
MediaElementAudioSourceNode.idl LibWeb: Add MediaElementAudioSourceNode interface 2025-01-17 19:04:47 +00:00
OfflineAudioContext.cpp LibWeb: Align OfflineAudioContext constructors with current spec steps 2025-01-16 13:56:18 +00:00
OfflineAudioContext.h LibWeb: Initialize OfflineAudioContext with correct defaults 2025-01-08 11:24:08 +00:00
OfflineAudioContext.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
OscillatorNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
OscillatorNode.h LibWeb: Implement OscillatorNode.setPeriodicWave() 2025-01-04 10:12:24 +00:00
OscillatorNode.idl LibWeb: Implement OscillatorNode.setPeriodicWave() 2025-01-04 10:12:24 +00:00
PannerNode.cpp LibWeb: Validate AudioParam context in AudioNode::connect() 2025-01-09 11:34:38 +00:00
PannerNode.h LibWeb/WebAudio: Manage channelCountMode and channelCount for PannerNode 2024-12-18 10:19:46 +01:00
PannerNode.idl LibWeb/WebAudio: Implement PannerNode 2024-12-17 13:38:20 +01:00
PeriodicWave.cpp LibWeb: Implement PeriodicWave constructor 2025-01-03 14:54:18 +01:00
PeriodicWave.h LibWeb: Implement PeriodicWave constructor 2025-01-03 14:54:18 +01:00
PeriodicWave.idl Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
StereoPannerNode.cpp LibWeb: Add StereoPannerNode interface 2025-01-18 10:20:41 +01:00
StereoPannerNode.h LibWeb: Add StereoPannerNode interface 2025-01-18 10:20:41 +01:00
StereoPannerNode.idl LibWeb: Add StereoPannerNode interface 2025-01-18 10:20:41 +01:00