| <!DOCTYPE html> |
| <html class="a"> |
| <head> |
| <title>GainNode IDL Test</title> |
| <script src="/resources/testharness.js"></script><script src="/resources/testharnessreport.js"></script><script src="/resources/idlharness.js"></script><script src="/resources/WebIDLParser.js"></script><script src="/webaudio/js/lodash.js"></script><script src="/webaudio/js/vendor-prefixes.js"></script><script src="/webaudio/js/helpers.js"></script><style type="text/css"> |
| #event-target-idl, |
| #audio-context-idl, |
| #audio-node-idl, |
| #audio-param-idl |
| { visibility:hidden; height: 0px;} |
| </style> |
| </head> |
| <body class="a"> |
| |
| <pre id="event-target-idl">interface EventTarget { |
| void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false); |
| void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false); |
| boolean dispatchEvent(Event event); |
| }; |
| |
| /* |
| callback interface EventListener { |
| void handleEvent(Event event); |
| }; |
| */ |
| // Callback interfaces are not supported yet, but that's ok |
| interface EventListener {}; |
| </pre> |
| |
| <pre id="audio-context-idl">callback DecodeSuccessCallback = void (AudioBuffer decodedData); |
| callback DecodeErrorCallback = void (); |
| |
| [Constructor] |
| interface AudioContext : EventTarget { |
| |
| readonly attribute AudioDestinationNode destination; |
| readonly attribute float sampleRate; |
| readonly attribute double currentTime; |
| readonly attribute AudioListener listener; |
| |
| AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long length, float sampleRate); |
| |
| void decodeAudioData(ArrayBuffer audioData, |
| DecodeSuccessCallback successCallback, |
| optional DecodeErrorCallback errorCallback); |
| |
| |
| // AudioNode creation |
| AudioBufferSourceNode createBufferSource(); |
| |
| MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement); |
| |
| MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream); |
| MediaStreamAudioDestinationNode createMediaStreamDestination(); |
| |
| ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0, |
| optional unsigned long numberOfInputChannels = 2, |
| optional unsigned long numberOfOutputChannels = 2); |
| |
| AnalyserNode createAnalyser(); |
| GainNode createGain(); |
| DelayNode createDelay(optional double maxDelayTime = 1.0); |
| BiquadFilterNode createBiquadFilter(); |
| WaveShaperNode createWaveShaper(); |
| PannerNode createPanner(); |
| ConvolverNode createConvolver(); |
| |
| ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6); |
| ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6); |
| |
| DynamicsCompressorNode createDynamicsCompressor(); |
| |
| OscillatorNode createOscillator(); |
| PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag); |
| |
| };</pre> |
| |
| <pre id="audio-node-idl">enum ChannelCountMode { |
| "max", |
| "clamped-max", |
| "explicit" |
| }; |
| |
| enum ChannelInterpretation { |
| "speakers", |
| "discrete" |
| }; |
| |
| interface AudioNode : EventTarget { |
| |
| void connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0); |
| void connect(AudioParam destination, optional unsigned long output = 0); |
| void disconnect(optional unsigned long output = 0); |
| |
| readonly attribute AudioContext context; |
| readonly attribute unsigned long numberOfInputs; |
| readonly attribute unsigned long numberOfOutputs; |
| |
| // Channel up-mixing and down-mixing rules for all inputs. |
| attribute unsigned long channelCount; |
| attribute ChannelCountMode channelCountMode; |
| attribute ChannelInterpretation channelInterpretation; |
| |
| };</pre> |
| |
| <pre id="audio-param-idl">interface AudioParam { |
| |
| attribute float value; |
| readonly attribute float defaultValue; |
| |
| // Parameter automation. |
| void setValueAtTime(float value, double startTime); |
| void linearRampToValueAtTime(float value, double endTime); |
| void exponentialRampToValueAtTime(float value, double endTime); |
| |
| // Exponentially approach the target value with a rate having the given time constant. |
| void setTargetAtTime(float target, double startTime, double timeConstant); |
| |
| // Sets an array of arbitrary parameter values starting at time for the given duration. |
| // The number of values will be scaled to fit into the desired duration. |
| void setValueCurveAtTime(Float32Array values, double startTime, double duration); |
| |
| // Cancels all scheduled parameter changes with times greater than or equal to startTime. |
| void cancelScheduledValues(double startTime); |
| |
| };</pre> |
| |
| <pre id="gain-node-idl">interface GainNode : AudioNode { |
| |
| readonly attribute AudioParam gain; |
| |
| };</pre> |
| |
| <div id="log"></div> |
| |
| <script> |
| (function() { |
| var idl_array = new IdlArray(); |
| idl_array.add_untested_idls(document.getElementById("event-target-idl").textContent); |
| idl_array.add_untested_idls(document.getElementById("audio-context-idl").textContent); |
| idl_array.add_untested_idls(document.getElementById("audio-node-idl").textContent); |
| idl_array.add_untested_idls(document.getElementById("audio-param-idl").textContent); |
| idl_array.add_idls(document.getElementById("gain-node-idl").textContent); |
| |
| gain_node = (new AudioContext).createGain(); |
| |
| idl_array.add_objects({GainNode: ["gain_node"]}); |
| idl_array.test(); |
| })(); |
| </script> |
| </body> |
| </html> |