mirror of
https://github.com/servo/servo.git
synced 2025-06-30 12:03:38 +01:00
105 lines
3.8 KiB
HTML
105 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>WebAudio IDL tests</title>
|
|
<link rel="help" href="https://webaudio.github.io/web-audio-api/"/>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/resources/WebIDLParser.js"></script>
|
|
<script src="/resources/idlharness.js"></script>
|
|
<script>
|
|
'use strict';
|
|
|
|
promise_test(async t => {
|
|
const [html, dom, uievents, mediacapture, webaudio] = await Promise.all([
|
|
// Needed for EventTarget, HTMLMediaElement
|
|
'/interfaces/html.idl',
|
|
|
|
// Needed for Event, EventListener
|
|
'/interfaces/dom.idl',
|
|
|
|
// Needed for MouseEvent
|
|
'/interfaces/uievents.idl',
|
|
|
|
// Needed for MediaStream, MediaStreamTrack
|
|
'/interfaces/mediacapture-main.idl',
|
|
|
|
'/interfaces/web-audio-api.idl'
|
|
].map(url => fetch(url).then(response => response.text())));
|
|
|
|
const idl_array = new IdlArray();
|
|
|
|
// Dependencies of HTML
|
|
idl_array.add_untested_idls('interface LinkStyle {};');
|
|
idl_array.add_untested_idls('interface SVGElement {};');
|
|
idl_array.add_untested_idls('interface WorkletGlobalScope {};');
|
|
idl_array.add_untested_idls(html);
|
|
idl_array.add_untested_idls(uievents, { only: [
|
|
'MouseEvent',
|
|
'MouseEventInit',
|
|
'EventModifierInit',
|
|
'UIEvent',
|
|
'UIEventInit',
|
|
]});
|
|
|
|
idl_array.add_untested_idls(dom);
|
|
idl_array.add_untested_idls(mediacapture);
|
|
idl_array.add_untested_idls('interface Worklet {};');
|
|
|
|
idl_array.add_idls(webaudio);
|
|
|
|
const sample_rate = 44100;
|
|
const context = new AudioContext;
|
|
const buffer = new AudioBuffer({length: 1, sampleRate: sample_rate});
|
|
await context.audioWorklet.addModule(
|
|
'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js');
|
|
const worklet_node = new AudioWorkletNode(context, 'dummy');
|
|
|
|
idl_array.add_objects({
|
|
BaseAudioContext: [],
|
|
AudioContext: [context],
|
|
OfflineAudioContext: [new OfflineAudioContext(1, 1, sample_rate)],
|
|
OfflineAudioCompletionEvent: [
|
|
new OfflineAudioCompletionEvent('', {renderedBuffer: buffer})],
|
|
AudioBuffer: [buffer],
|
|
AudioNode: [],
|
|
AudioParam: [new AudioBufferSourceNode(context).playbackRate],
|
|
AudioScheduledSourceNode: [],
|
|
AnalyserNode: [new AnalyserNode(context)],
|
|
AudioBufferSourceNode: [new AudioBufferSourceNode(context)],
|
|
AudioDestinationNode: [context.destination],
|
|
AudioListener: [context.listener],
|
|
AudioProcessingEvent: [new AudioProcessingEvent('', {
|
|
playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
|
|
})],
|
|
BiquadFilterNode: [new BiquadFilterNode(context)],
|
|
ChannelMergerNode: [new ChannelMergerNode(context)],
|
|
ChannelSplitterNode: [new ChannelSplitterNode(context)],
|
|
ConstantSourceNode: [new ConstantSourceNode(context)],
|
|
ConvolverNode: [new ConvolverNode(context)],
|
|
DelayNode: [new DelayNode(context)],
|
|
DynamicsCompressorNode: [new DynamicsCompressorNode(context)],
|
|
GainNode: [new GainNode(context)],
|
|
IIRFilterNode: [
|
|
new IIRFilterNode(context, {feedforward: [1], feedback: [1]})],
|
|
MediaElementAudioSourceNode: [
|
|
new MediaElementAudioSourceNode(context, {mediaElement: new Audio})],
|
|
MediaStreamAudioDestinationNode: [
|
|
new MediaStreamAudioDestinationNode(context)],
|
|
MediaStreamAudioSourceNode: [],
|
|
MediaStreamTrackAudioSourceNode: [],
|
|
OscillatorNode: [new OscillatorNode(context)],
|
|
PannerNode: [new PannerNode(context)],
|
|
PeriodicWave: [new PeriodicWave(context)],
|
|
ScriptProcessorNode: [context.createScriptProcessor()],
|
|
StereoPannerNode: [new StereoPannerNode(context)],
|
|
WaveShaperNode: [new WaveShaperNode(context)],
|
|
AudioWorklet: [context.audioWorklet],
|
|
AudioWorkletGlobalScope: [],
|
|
AudioParamMap: [worklet_node.parameters],
|
|
AudioWorkletNode: [worklet_node],
|
|
AudioWorkletProcessor: [],
|
|
});
|
|
idl_array.test();
|
|
|
|
}, 'Test driver');
|
|
</script>
|