blob: 723e7a939c3342394e0c6fb8053b986e601ae521 [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testing webaudio autoplay in case of camera capture</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
</head>
<body>
<script>
test(() => {
assert_true(!!window.internals, "Test requires internals API");
var context = new webkitAudioContext();
internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
var node = context.createBufferSource();
node.connect(context.destination);
node.start();
}, "Ensuring autoplay does not work when starting an audio node and getUserMedia is off");
promise_test((test) => {
if (!window.internals)
return Promise.reject("Test requires internals API");
var context = new webkitAudioContext();
internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
var node = context.createBufferSource();
node.connect(context.destination);
var resolve, reject;
var promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
context.resume().then(() => {
reject("context should not have resumed");
});
setTimeout(() => {
resolve();
}, 50);
return promise;
}, "Ensuring autoplay works when resuming audio context and getUserMedia is off");
promise_test((test) => {
if (!window.internals)
return Promise.reject("Test requires internals API");
return navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
var context = new webkitAudioContext();
internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
var node = context.createBufferSource();
node.connect(context.destination);
node.start();
});
}, "Ensuring autoplay works when starting an audio node and getUserMedia is on");
promise_test((test) => {
if (!window.internals)
return Promise.reject("Test requires internals API");
return navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => {
var context = new webkitAudioContext();
internals.setAudioContextRestrictions(context, 'RequireUserGestureForAudioStart');
var node = context.createBufferSource();
node.connect(context.destination);
return context.resume();
});
}, "Ensuring autoplay works when resuming audio context and getUserMedia is on");
</script>
</body>
</html>