blob: b3f3d53faec94699efe486b247c48034d35c9d37 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Test GC of Closed AudioContext</title>
<script src="../../resources/gc.js"></script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
</head>
<body>
<script>
const audit = Audit.createTaskRunner();
// Number of contexts to create for testing. Fairly arbitrary, but should
// be at least 6 (previous max allowed contexts) but not too many.
const numberOfContexts = 10;
audit.define('Test GC of Closed AudioContexts', (task, should) => {
// Initial number of handlers.
let initialCount = 0;
asyncGC()
.then(() => {
initialCount = internals.audioHandlerCount();
// For information only
should(initialCount, 'Number of handlers before GC')
.beEqualTo(initialCount);
})
.then(() => {
// Create a bunch of contexts for testing
const contexts = [];
for (let k = 0; k < numberOfContexts; ++k) {
let c = new AudioContext();
contexts.push(c.close());
c = null;
}
// Wait for all the close methods to resolve before we check.
Promise.all(contexts).then(() => {
asyncGC()
.then(() => {
should(contexts.length, 'Number of contexts created')
.beEqualTo(numberOfContexts);
should(
internals.audioHandlerCount(),
'Number of handlers after GC')
.beEqualTo(initialCount);
})
.then(() => task.done());
})
});
});
audit.run();
</script>
</body>
</html>