diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/base/test/browser_chromeutils_isdomobject.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/base/test/browser_chromeutils_isdomobject.js')
-rw-r--r-- | dom/base/test/browser_chromeutils_isdomobject.js | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/dom/base/test/browser_chromeutils_isdomobject.js b/dom/base/test/browser_chromeutils_isdomobject.js new file mode 100644 index 0000000000..14a5d69898 --- /dev/null +++ b/dom/base/test/browser_chromeutils_isdomobject.js @@ -0,0 +1,115 @@ +"use strict"; + +add_task(async function invalidArgument() { + const args = [undefined, null, 42, "foo"]; + + for (const argument of args) { + let hadException = false; + try { + ChromeUtils.isDOMObject(argument); + } catch (ex) { + hadException = true; + } + ok(hadException, "Should have got an exception!"); + } +}); + +add_task(async function NoUnwrap() { + const args = [ + window.document, + window.document.childNodes, + new DocumentFragment(), + new Response(), + new URL("https://example.com"), + ]; + + for (const argument of args) { + ok( + ChromeUtils.isDOMObject(argument, false), + `${ChromeUtils.getClassName( + argument + )} to be a DOM object with unwrap=false` + ); + } + + ok( + !ChromeUtils.isDOMObject(window, false), + `${ChromeUtils.getClassName( + window + )} not to be a DOM object with unwrap=false` + ); +}); + +add_task(async function DOMObjects() { + const args = [ + window, + window.document, + window.document.childNodes, + new DocumentFragment(), + new Response(), + new URL("https://example.com"), + ]; + + for (const argument of args) { + ok( + ChromeUtils.isDOMObject(argument), + `${ChromeUtils.getClassName(argument)} to be a DOM object` + ); + } +}); + +add_task(async function nonDOMObjects() { + const args = [new Object(), {}, []]; + + for (const argument of args) { + ok( + !ChromeUtils.isDOMObject(argument), + `${ChromeUtils.getClassName(argument)} not to be a DOM object` + ); + } +}); + +add_task(async function DOMObjects_contentProcess() { + await BrowserTestUtils.withNewTab( + { + gBrowser, + url: `data:text/html,<div>`, + }, + async function (browser) { + await SpecialPowers.spawn(browser, [], async () => { + const args = [ + content, + content.document, + content.document.querySelector("div"), + content.document.childNodes, + new content.DocumentFragment(), + new content.URL("https://example.com"), + ]; + + for (const argument of args) { + ok( + ChromeUtils.isDOMObject(argument), + `${ChromeUtils.getClassName( + argument + )} in content to be a DOM object` + ); + } + + ok( + !ChromeUtils.isDOMObject({}), + `${ChromeUtils.getClassName({})} in content not to be a DOM object` + ); + + // unwrap=false + for (const argument of args) { + ok( + !ChromeUtils.isDOMObject(argument, false), + `${ChromeUtils.getClassName( + argument + )} in content not to be a DOM object with unwrap=false` + ); + } + }); + } + ); +}); |