46 lines
1.3 KiB
HTML
46 lines
1.3 KiB
HTML
<!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 OfflineAudioContext(2, 1000, 44100);
|
|
if (window.internals)
|
|
return internals.observeGC(context);
|
|
}
|
|
|
|
function createRenderingContext(completeCallback) {
|
|
let context = new OfflineAudioContext(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>
|