"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,