mirror of
https://github.com/servo/servo.git
synced 2025-06-25 17:44:33 +01:00
59 lines
2.1 KiB
HTML
59 lines
2.1 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");
|
|
|
|
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>
|