2026-03-31 17:08:48 -03:00
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<script src="../include.js"></script>
|
2026-05-12 22:54:53 -03:00
|
|
|
<script src="HTMLMediaElement-include.js"></script>
|
2026-03-31 17:08:48 -03:00
|
|
|
<video id="video"></video>
|
|
|
|
|
<script>
|
|
|
|
|
const video = document.getElementById("video");
|
|
|
|
|
|
|
|
|
|
function logEvent(name) {
|
2026-05-12 22:54:53 -03:00
|
|
|
let entry = `${name}: ${formatReadyStateExpectation(video, name)}`;
|
2026-03-31 17:08:48 -03:00
|
|
|
if (name === "durationchange")
|
|
|
|
|
entry += ` duration=${video.duration}`;
|
|
|
|
|
if (name === "error")
|
|
|
|
|
entry += ` code=${video.error.code}`;
|
2026-04-06 18:35:29 -03:00
|
|
|
println(entry);
|
2026-03-31 17:08:48 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (const name of [
|
|
|
|
|
"loadstart", "abort", "error", "emptied",
|
2026-05-12 22:54:53 -03:00
|
|
|
"loadedmetadata", "durationchange", "ended",
|
2026-03-31 17:08:48 -03:00
|
|
|
]) {
|
|
|
|
|
video.addEventListener(name, () => logEvent(name));
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-06 18:35:29 -03:00
|
|
|
asyncTest(async done => {
|
|
|
|
|
video.src = "../../../Assets/corrupt-video.webm";
|
2026-03-31 17:08:48 -03:00
|
|
|
|
2026-04-06 18:35:29 -03:00
|
|
|
await new Promise(resolve => video.addEventListener("error", resolve, { once: true }));
|
|
|
|
|
video.src = "../../../Assets/test-webm.webm";
|
2026-03-31 17:08:48 -03:00
|
|
|
|
2026-04-06 18:35:29 -03:00
|
|
|
await new Promise(resolve => video.addEventListener("canplaythrough", resolve, { once: true }));
|
|
|
|
|
done();
|
2026-03-31 17:08:48 -03:00
|
|
|
});
|
|
|
|
|
</script>
|