blob: 2528ef10b46d15a127580fc5efe83da839450a5b [file] [log] [blame] [edit]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<img id=myImage></img>
<script>
promise_test(async (t) => {
myImage.src = 'data:';
await new Promise(resolve => myImage.onerror = resolve);
const videoFrame = new VideoFrame(myImage, {timestamp: 0});
t.add_cleanup(() => videoFrame.close());
return promise_rejects_js(t, TypeError,
videoFrame.copyTo(new ArrayBuffer(72), { rect: {
y: -2,
width: 1,
height: 18
}})
);
}, "Checking invalid rect");
function tryCopy(videoFrame, buffer, overrideRect)
{
const rect = { x: 0, y: 0, width: 1, height: 1 };
for (const property in overrideRect)
rect[property] = overrideRect[property];
return videoFrame.copyTo(buffer, { rect });
}
promise_test(async (t) => {
const data = new ArrayBuffer(4);
const videoFrame = new VideoFrame(data, {timestamp: 1, codedHeight: 1, codedWidth: 1, format: 'BGRA'});
t.add_cleanup(() => videoFrame.close());
const output = new Uint32Array(0x8000);
const buffer = output.buffer;
await tryCopy(videoFrame, buffer, { });
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { x: -1 }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { x: NaN }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { x: Infinity }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { y: -1 }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { y: NaN }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { y: Infinity }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { width: -1 }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { width: NaN }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { width: Infinity }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { height: -1 }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { height: Infinity }));
await promise_rejects_js(t, TypeError, tryCopy(videoFrame, buffer, { height: NaN }));
}, "Checking invalid copyTo rect");
</script>
</body>
</html>