mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-10 19:46:03 +00:00
LibWeb: Flesh out AudioBufferSourceNode buffer setter steps
This commit is contained in:
parent
6cab972248
commit
72ca91ad1a
Notes:
github-actions[bot]
2025-01-03 10:15:43 +00:00
Author: https://github.com/tcl3
Commit: 72ca91ad1a
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3099
4 changed files with 142 additions and 1 deletions
|
@ -0,0 +1,97 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
audiobuffersource-channels.html
|
||||
</title>
|
||||
<script src="../../../resources/testharness.js"></script>
|
||||
<script src="../../../resources/testharnessreport.js"></script>
|
||||
<script src="../../../webaudio/resources/audit-util.js"></script>
|
||||
<script src="../../../webaudio/resources/audit.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script id="layout-test-code">
|
||||
let audit = Audit.createTaskRunner();
|
||||
let context;
|
||||
let source;
|
||||
|
||||
audit.define(
|
||||
{
|
||||
label: 'validate .buffer',
|
||||
description:
|
||||
'Validatation of AudioBuffer in .buffer attribute setter'
|
||||
},
|
||||
function(task, should) {
|
||||
context = new AudioContext();
|
||||
source = context.createBufferSource();
|
||||
|
||||
// Make sure we can't set to something which isn't an AudioBuffer.
|
||||
should(function() {
|
||||
source.buffer = 57;
|
||||
}, 'source.buffer = 57').throw(TypeError);
|
||||
|
||||
// It's ok to set the buffer to null.
|
||||
should(function() {
|
||||
source.buffer = null;
|
||||
}, 'source.buffer = null').notThrow();
|
||||
|
||||
// Set the buffer to a valid AudioBuffer
|
||||
let buffer =
|
||||
new AudioBuffer({length: 128, sampleRate: context.sampleRate});
|
||||
|
||||
should(function() {
|
||||
source.buffer = buffer;
|
||||
}, 'source.buffer = buffer').notThrow();
|
||||
|
||||
// The buffer has been set; we can't set it again.
|
||||
should(function() {
|
||||
source.buffer =
|
||||
new AudioBuffer({length: 128, sampleRate: context.sampleRate})
|
||||
}, 'source.buffer = new buffer').throw(DOMException, 'InvalidStateError');
|
||||
|
||||
// The buffer has been set; it's ok to set it to null.
|
||||
should(function() {
|
||||
source.buffer = null;
|
||||
}, 'source.buffer = null again').notThrow();
|
||||
|
||||
// The buffer was already set (and set to null). Can't set it
|
||||
// again.
|
||||
should(function() {
|
||||
source.buffer = buffer;
|
||||
}, 'source.buffer = buffer again').throw(DOMException, 'InvalidStateError');
|
||||
|
||||
// But setting to null is ok.
|
||||
should(function() {
|
||||
}, 'source.buffer = null after setting to null').notThrow();
|
||||
|
||||
// Check that mono buffer can be set.
|
||||
should(function() {
|
||||
let monoBuffer =
|
||||
context.createBuffer(1, 1024, context.sampleRate);
|
||||
let testSource = context.createBufferSource();
|
||||
testSource.buffer = monoBuffer;
|
||||
}, 'Setting source with mono buffer').notThrow();
|
||||
|
||||
// Check that stereo buffer can be set.
|
||||
should(function() {
|
||||
let stereoBuffer =
|
||||
context.createBuffer(2, 1024, context.sampleRate);
|
||||
let testSource = context.createBufferSource();
|
||||
testSource.buffer = stereoBuffer;
|
||||
}, 'Setting source with stereo buffer').notThrow();
|
||||
|
||||
// Check buffers with more than two channels.
|
||||
for (let i = 3; i < 10; ++i) {
|
||||
should(function() {
|
||||
let buffer = context.createBuffer(i, 1024, context.sampleRate);
|
||||
let testSource = context.createBufferSource();
|
||||
testSource.buffer = buffer;
|
||||
}, 'Setting source with ' + i + ' channels buffer').notThrow();
|
||||
}
|
||||
task.done();
|
||||
});
|
||||
|
||||
audit.run();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue