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

Submissions/chrislo audiobuffer idl test #299

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions webaudio/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
idl/*
1 change: 1 addition & 0 deletions webaudio/refresh_idl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def load_idl(id)
File.join(base_dir, 'the-audio-api', 'the-gainnode-interface', 'idl-test.html'),
File.join(base_dir, 'the-audio-api', 'the-audiodestinationnode-interface', 'idl-test.html'),
File.join(base_dir, 'the-audio-api', 'the-delaynode-interface', 'idl-test.html'),
File.join(base_dir, 'the-audio-api', 'the-audiobuffer-interface', 'idl-test.html'),
]

idl_test_files.each do |fn|
Expand Down
107 changes: 107 additions & 0 deletions webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<!DOCTYPE html>
<html class="a">
<head>
<title>AudioBuffer IDL Test</title>
<script src="/resources/testharness.js"></script><script src="/resources/testharnessreport.js"></script><script src="/resources/idlharness.js"></script><script src="/resources/webidl2/lib/webidl2.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
{ 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-buffer-idl">interface AudioBuffer {

readonly attribute float sampleRate;
readonly attribute long length;

// in seconds
readonly attribute double duration;

readonly attribute long numberOfChannels;

Float32Array getChannelData(unsigned long channel);

};</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_idls(document.getElementById("audio-buffer-idl").textContent);

// For these tests the value of the arguments is unimportant.
audio_buffer = (new AudioContext).createBuffer(numberOfChannels = 1, length = 256, sampleRate = 44100);

idl_array.add_objects({AudioBuffer: ["audio_buffer"]});
idl_array.test();
})();
</script>
</body>
</html>
Empty file.