diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html')
-rw-r--r-- | testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html b/testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html new file mode 100644 index 0000000000..37efd5ed20 --- /dev/null +++ b/testing/web-platform/tests/FileAPI/Blob-methods-from-detached-frame.html @@ -0,0 +1,59 @@ +<!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"); + + 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 { 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> |