diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/base/test/browser_inputStream_structuredClone.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | dom/base/test/browser_inputStream_structuredClone.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/dom/base/test/browser_inputStream_structuredClone.js b/dom/base/test/browser_inputStream_structuredClone.js new file mode 100644 index 0000000000..e4a6f08b4c --- /dev/null +++ b/dom/base/test/browser_inputStream_structuredClone.js @@ -0,0 +1,72 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const URIs = [ + "about:about", + "http://example.com/browser/dom/base/test/empty.html", +]; + +async function runTest(input, url) { + let tab = BrowserTestUtils.addTab(gBrowser, url); + let browser = gBrowser.getBrowserForTab(tab); + + await BrowserTestUtils.browserLoaded(browser); + + let stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance( + Ci.nsIStringInputStream + ); + stream.setData(input, input.length); + + let data = { + inputStream: stream, + }; + + is( + data.inputStream.available(), + input.length, + "The length of the inputStream matches: " + input.length + ); + + // FIXME: SpecialPowers.spawn currently crashes when trying to return + // values containing input streams. + /* eslint-disable no-shadow */ + let dataBack = await ContentTask.spawn(browser, data, function(data) { + let dataBack = { + inputStream: data.inputStream, + check: true, + }; + + if (content.location.href.startsWith("about:")) { + dataBack.check = + data.inputStream instanceof + content.Components.interfaces.nsIInputStream; + } + + return dataBack; + }); + /* eslint-enable no-shadow */ + + ok(dataBack.check, "The inputStream is a nsIInputStream also on content."); + ok( + data.inputStream instanceof Ci.nsIInputStream, + "The original object was an inputStream" + ); + ok( + dataBack.inputStream instanceof Ci.nsIInputStream, + "We have an inputStream back from the content." + ); + + BrowserTestUtils.removeTab(tab); +} + +add_task(async function test() { + let a = "a"; + for (let i = 0; i < 25; ++i) { + a += a; + } + + for (let i = 0; i < URIs.length; ++i) { + await runTest("Hello world", URIs[i]); + await runTest(a, URIs[i]); + } +}); |