<!DOCTYPE html>
<html>
<head>
<title>
mediaelementaudiosourcenode.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
</head>
<body>
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
audit.define(
{
label: 'test',
description: 'Basic tests for MediaElementAudioSourceNode API'
},
(task, should) => {
let context = new AudioContext();
let audioElement = new Audio();
let mediaSource = context.createMediaElementSource(audioElement);
let audioNode = mediaSource;
// Check number of inputs and outputs.
should(audioNode.numberOfInputs, 'audioNode.numberOfInputs')
.beEqualTo(0);
should(audioNode.numberOfOutputs, 'audioNode.numberOfOutputs')
.beEqualTo(1);
// Try calling connect() method with illegal values: illegal
// destination, illegal output index, and illegal input index.
should(
() => audioNode.connect(0, 0, 0), 'audioNode.connect(0, 0, 0)')
.throw(TypeError);
should(
() => audioNode.connect(context.destination, 5, 0),
'audioNode.connect(context.destination, 5, 0)')
.throw(DOMException, 'IndexSizeError');
should(
() => audioNode.connect(context.destination, 0, 5),
'audioNode.connect(context.destination, 0, 5)')
.throw(DOMException, 'IndexSizeError');
// Verify same object is returned.
let element = mediaSource.mediaElement;
should(
element instanceof HTMLMediaElement,
'mediaSource.mediaElement instanceof HTMLMediaElement')
.beTrue();
should(
mediaSource.mediaElement === element,
'mediaSource.mediaElement is same object')
.beTrue();
// Try calling connect() with proper values.
should(
() => audioNode.connect(context.destination, 0, 0),
'audioNode.connect(context.destination, 0, 0)')
.notThrow();
// Try creating another MediaElementAudioSourceNode using the same
// audio element.
should(
() => context.createMediaElementSource(audioElement),
'context.createMediaElementSource(audioElement)')
.throw();
task.done();
});
audit.run();
</script>
</body>
</html>