blob: dcd665b6a1bc7618552dc51618293e226495c683 [file] [log] [blame]
<!DOCTYPE html>
<title>GC while seeking</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
async_test(function(t)
{
var a = document.createElement("audio");
a.foo = "bar";
a.src = "content/test.oga";
a.onsuspend = t.step_func(function()
{
assert_equals(a.networkState, a.NETWORK_IDLE);
a.currentTime = a.duration / 2;
assert_true(a.seeking);
// Continue after a timeout since the current event target is the media
// element, which means that it cannot be garbage collected now.
setTimeout(t.step_func(gcAndAwaitSeeked), 0);
});
function gcAndAwaitSeeked()
{
if (!a.seeking) {
// The seek may have already completed, in which case it's too late
// to verify GC behavior. Since networkState is NETWORK_IDLE there's
// no way to make the seek slower, making this test inherently racy.
t.done();
} else {
a.onseeked = t.step_func(function(e)
{
assert_greater_than(e.target.currentTime, 0);
assert_equals(e.target.foo, "bar");
t.done();
});
a = null;
gc();
}
}
});
</script>