blob: d009a054e18858e3733b71821711c0fec2e6b153 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/gc.js"></script>
<script>
function createContext() {
let context = new webkitOfflineAudioContext(2, 1000, 44100);
if (window.internals)
return internals.observeGC(context);
}
function createRenderingContext(completeCallback) {
let context = new webkitOfflineAudioContext(2, 1000, 44100);
let node = context.createBufferSource();
node.connect(context.destination);
node.start();
context.oncomplete = completeCallback;
context.startRendering();
if (window.internals)
return internals.observeGC(context);
}
test(() => {
let observer = createContext();
gc();
if (window.internals)
assert_true(observer.wasCollected);
}, "GC a newly created offline audio context");
promise_test(async () => {
let complete = false;
let observer = createRenderingContext(() => complete = true);
while (!complete) {
gc();
if (window.internals)
assert_false(observer.wasCollected);
await new Promise(resolve => setTimeout(resolve, 50));
}
gc();
if (window.internals)
assert_true(observer.wasCollected);
}, "GC a rendering offline audio context");
</script>