blob: 45c531a7506d02e2ff5e2d19f506ecbb09c52752 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../resources/js-test.js"></script>
<script type="text/javascript" src="resources/audio-testing.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description('Basic tests for AudioNode API.');
var context = null;
var node = null;
var calledResumeWithUserGesture = false;
function runTest() {
window.jsTestIsAsync = true;
context = new AudioContext();
if (window.internals)
internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
shouldBe('context.state', '"suspended"');
node = context.createBufferSource();
evalAndLog('node.connect(context.destination)');
shouldBe('context.state', '"suspended"');
debug('Calling context.resume() without a user gesture');
context.resume().then(noUserGestureResumeSucceeded, noUserGestureResumeFailed);
debug('Wait for 100ms');
window.setTimeout(function() {
runWithKeyDown(function() {
debug('Calling context.resume() with a user gesture');
context.resume().then(resumeSucceeded, resumeFailed);
calledResumeWithUserGesture = true;
});
}, 100);
}
function noUserGestureResumeFailed() {
testFailed('context.resume() (without a user gesture) promise rejected');
finishJSTest();
}
function noUserGestureResumeSucceeded() {
if (!calledResumeWithUserGesture) {
testFailed('context.resume() (without a user gesture) suceeded incorrectly.');
finishJSTest();
return;
}
testPassed('context.resume() (without a user gesture) promise resolved');
shouldBe('context.state', '"running"');
}
function resumeFailed() {
testFailed('context.resume() (with a user gesture) promise rejected');
finishJSTest();
}
function resumeSucceeded() {
testPassed('context.resume() (with a user gesture) promise resolved');
shouldBe('context.state', '"running"');
finishJSTest();
}
runTest();
</script>
</body>
</html>