Index: modules/webaudio/AudioContext.idl |
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl |
index cc74984bf62b26013464fda70057414934b5a23b..63617aaa03e413a9f7ea44043a470d83ebef6781 100644 |
--- a/modules/webaudio/AudioContext.idl |
+++ b/modules/webaudio/AudioContext.idl |
@@ -23,6 +23,12 @@ |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
+enum AudioContextState { |
+ "suspended", |
+ "running", |
+ "closed" |
+}; |
+ |
[ |
GarbageCollected, |
ActiveDOMObject, |
@@ -32,7 +38,6 @@ |
NoInterfaceObject, |
RaisesException=Constructor, |
] interface AudioContext : EventTarget { |
- |
// All rendered audio ultimately connects to destination, which represents the audio hardware. |
readonly attribute AudioDestinationNode destination; |
@@ -45,40 +50,46 @@ |
// All panning is relative to this listener. |
readonly attribute AudioListener listener; |
+ // Current state of the AudioContext |
+ readonly attribute AudioContextState state; |
+ |
[RaisesException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate); |
// Asynchronous audio file data decoding. |
- // FIXMEDART(ager): Auto-generate this custom method when the info about |
- // retaining typed arrays is in the IDL. |
- [RaisesException, DartCustom] void decodeAudioData(ArrayBuffer audioData, AudioBufferCallback successCallback, optional AudioBufferCallback errorCallback); |
+ [RaisesException, MeasureAs=AudioContextDecodeAudioData] void decodeAudioData(ArrayBuffer audioData, AudioBufferCallback successCallback, optional AudioBufferCallback errorCallback); |
// Sources |
- AudioBufferSourceNode createBufferSource(); |
+ [RaisesException, MeasureAs=AudioContextCreateBufferSource] AudioBufferSourceNode createBufferSource(); |
- [RaisesException] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement); |
+ [RaisesException, MeasureAs=AudioContextCreateMediaElementSource] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement); |
- [RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream); |
- MediaStreamAudioDestinationNode createMediaStreamDestination(); |
+ [RaisesException, MeasureAs=AudioContextCreateMediaStreamSource, RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream); |
+ [RaisesException, MeasureAs=AudioContextCreateMediaStreamDestination] MediaStreamAudioDestinationNode createMediaStreamDestination(); |
// Processing nodes |
- GainNode createGain(); |
- [RaisesException] DelayNode createDelay(optional double maxDelayTime); |
- BiquadFilterNode createBiquadFilter(); |
- WaveShaperNode createWaveShaper(); |
- PannerNode createPanner(); |
- ConvolverNode createConvolver(); |
- DynamicsCompressorNode createDynamicsCompressor(); |
- AnalyserNode createAnalyser(); |
- [RaisesException] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels); |
- OscillatorNode createOscillator(); |
- [RaisesException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag); |
+ [RaisesException, MeasureAs=AudioContextCreateGain] GainNode createGain(); |
+ [RaisesException, MeasureAs=AudioContextCreateDelay] DelayNode createDelay(optional double maxDelayTime); |
+ [RaisesException, MeasureAs=AudioContextCreateBiquadFilter] BiquadFilterNode createBiquadFilter(); |
+ [RaisesException, MeasureAs=AudioContextCreateWaveShaper] WaveShaperNode createWaveShaper(); |
+ [RaisesException, MeasureAs=AudioContextCreatePanner] PannerNode createPanner(); |
+ [RaisesException, MeasureAs=AudioContextCreateConvolver] ConvolverNode createConvolver(); |
+ [RaisesException, MeasureAs=AudioContextCreateDynamicsCompressor] DynamicsCompressorNode createDynamicsCompressor(); |
+ [RaisesException, MeasureAs=AudioContextCreateAnalyser] AnalyserNode createAnalyser(); |
+ [RaisesException, MeasureAs=AudioContextCreateScriptProcessor, RaisesException] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels); |
+ [RaisesException, MeasureAs=AudioContextCreateStereoPanner] StereoPannerNode createStereoPanner(); |
+ [RaisesException, MeasureAs=AudioContextCreateOscillator] OscillatorNode createOscillator(); |
+ [RaisesException, MeasureAs=AudioContextCreatePeriodicWave, RaisesException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag); |
// Channel splitting and merging |
- [RaisesException] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs); |
- [RaisesException] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs); |
+ [RaisesException, MeasureAs=AudioContextCreateChannelSplitter] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs); |
+ [RaisesException, MeasureAs=AudioContextCreateChannelMerger] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs); |
+ |
+ // Close |
+ [MeasureAs=AudioContextClose, CallWith=ScriptState, ImplementedAs=closeContext] Promise<void> close(); |
+ |
+ // Pause/resume |
+ [MeasureAs=AudioContextSuspend, CallWith=ScriptState, ImplementedAs=suspendContext] Promise<void> suspend(); |
+ [MeasureAs=AudioContextResume, CallWith=ScriptState, ImplementedAs=resumeContext] Promise<void> resume(); |
- // Offline rendering |
- // void prepareOfflineBufferRendering(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate); |
- attribute EventHandler oncomplete; |
- void startRendering(); |
+ attribute EventHandler onstatechange; |
}; |