fune/testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html
Kevin Gibbons a76e7cdcdc Bug 1896472 [wpt PR 46232] - Add tests for Blob.prototype.bytes(), a=testonly
Automatic update from web-platform-tests
Add tests for Blob.prototype.bytes()

For https://github.com/w3c/FileAPI/pull/198.
--

wpt-commits: cceaf3628da950621004d9b5d8c1d1f367073347
wpt-pr: 46232
2024-06-03 07:39:47 +00:00

68 lines
2.4 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<title>Blob methods from detached frame work as expected</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<iframe id="emptyDocumentIframe" src="../support/empty-document.html"></iframe>
<script>
const BlobPrototypeFromDetachedFramePromise = new Promise(resolve => {
emptyDocumentIframe.onload = () => {
const BlobPrototype = emptyDocumentIframe.contentWindow.Blob.prototype;
emptyDocumentIframe.remove();
resolve(BlobPrototype);
};
});
const charCodeArrayToString = charCodeArray => Array.from(charCodeArray, c => String.fromCharCode(c)).join("");
const charCodeBufferToString = charCodeBuffer => charCodeArrayToString(new Uint8Array(charCodeBuffer));
promise_test(async () => {
const { slice } = await BlobPrototypeFromDetachedFramePromise;
const blob = new Blob(["foobar"]);
const slicedBlob = slice.call(blob, 1, 3);
assert_true(slicedBlob instanceof Blob);
assert_equals(await slicedBlob.text(), "oo");
assert_equals(charCodeBufferToString(await slicedBlob.arrayBuffer()), "oo");
assert_equals(charCodeArrayToString(await slicedBlob.bytes()), "oo");
const reader = slicedBlob.stream().getReader();
const { value } = await reader.read();
assert_equals(charCodeArrayToString(value), "oo");
}, "slice()");
promise_test(async () => {
const { text } = await BlobPrototypeFromDetachedFramePromise;
const blob = new Blob(["foo"]);
assert_equals(await text.call(blob), "foo");
}, "text()");
promise_test(async () => {
const { arrayBuffer } = await BlobPrototypeFromDetachedFramePromise;
const blob = new Blob(["bar"]);
const charCodeBuffer = await arrayBuffer.call(blob);
assert_equals(charCodeBufferToString(charCodeBuffer), "bar");
}, "arrayBuffer()");
promise_test(async () => {
const { bytes } = await BlobPrototypeFromDetachedFramePromise;
const blob = new Blob(["bar"]);
const charCodeBytes = await bytes.call(blob);
assert_equals(charCodeArrayToString(charCodeBytes), "bar");
}, "bytes()");
promise_test(async () => {
const { stream } = await BlobPrototypeFromDetachedFramePromise;
const blob = new Blob(["baz"]);
const reader = stream.call(blob).getReader();
const { value } = await reader.read();
assert_equals(charCodeArrayToString(value), "baz");
}, "stream()");
</script>