ladybird/Tests/LibWeb/Text/input/HTML/HTMLMediaElement-include.js

37 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

const READY_STATE_NAMES = {
[HTMLMediaElement.HAVE_NOTHING]: "HAVE_NOTHING",
[HTMLMediaElement.HAVE_METADATA]: "HAVE_METADATA",
[HTMLMediaElement.HAVE_CURRENT_DATA]: "HAVE_CURRENT_DATA",
[HTMLMediaElement.HAVE_FUTURE_DATA]: "HAVE_FUTURE_DATA",
[HTMLMediaElement.HAVE_ENOUGH_DATA]: "HAVE_ENOUGH_DATA",
};
const MIN_READY_STATE_FOR_EVENT = {
loadstart: HTMLMediaElement.HAVE_NOTHING,
abort: HTMLMediaElement.HAVE_NOTHING,
error: HTMLMediaElement.HAVE_NOTHING,
emptied: HTMLMediaElement.HAVE_NOTHING,
durationchange: HTMLMediaElement.HAVE_METADATA,
loadedmetadata: HTMLMediaElement.HAVE_METADATA,
seeking: HTMLMediaElement.HAVE_METADATA,
seeked: HTMLMediaElement.HAVE_METADATA,
ended: HTMLMediaElement.HAVE_METADATA,
loadeddata: HTMLMediaElement.HAVE_CURRENT_DATA,
canplay: HTMLMediaElement.HAVE_FUTURE_DATA,
canplaythrough: HTMLMediaElement.HAVE_ENOUGH_DATA,
};
function readyStateName(value) {
return READY_STATE_NAMES[value] ?? `<unknown:${value}>`;
}
function formatReadyStateExpectation(element, eventName) {
if (!(eventName in MIN_READY_STATE_FOR_EVENT))
throw new Error(`No minimum readyState defined for event "${eventName}"`);
const min = MIN_READY_STATE_FOR_EVENT[eventName];
const minName = readyStateName(min);
return element.readyState >= min
? `readyState >= ${minName}`
: `readyState=${readyStateName(element.readyState)}, expected >= ${minName}`;
}