/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; /* eslint no-undef: 0 no-unused-vars: 0 */ add_task(async function test_deserializeSharedIdInvalidTypes() { await runTestInContent(() => { for (const invalidType of [false, 42, {}, []]) { info(`Checking type: '${invalidType}'`); const serializedValue = { sharedId: invalidType, }; Assert.throws( () => deserialize(serializedValue, realm, { nodeCache }), /InvalidArgumentError:/, `Got expected error for type ${invalidType}` ); } }); }); add_task(async function test_deserializeSharedIdInvalidValue() { await runTestInContent(() => { const serializedValue = { sharedId: "foo", }; Assert.throws( () => deserialize(serializedValue, realm, { nodeCache }), /NoSuchNodeError:/, "Got expected error for unknown 'sharedId'" ); }); }); add_task(async function test_deserializeSharedId() { await loadURL(inline("
")); await runTestInContent(() => { const domEl = content.document.querySelector("div"); const domElRef = nodeCache.getOrCreateNodeReference(domEl, seenNodeIds); const serializedValue = { sharedId: domElRef, }; const node = deserialize(serializedValue, realm, { nodeCache }); Assert.equal(node, domEl); }); }); add_task(async function test_deserializeSharedIdPrecedenceOverHandle() { await loadURL(inline("
")); await runTestInContent(() => { const domEl = content.document.querySelector("div"); const domElRef = nodeCache.getOrCreateNodeReference(domEl, seenNodeIds); const serializedValue = { handle: "foo", sharedId: domElRef, }; const node = deserialize(serializedValue, realm, { nodeCache }); Assert.equal(node, domEl); }); }); add_task(async function test_deserializeSharedIdNoWindowRealm() { await loadURL(inline("
")); await runTestInContent(() => { const domEl = content.document.querySelector("div"); const domElRef = nodeCache.getOrCreateNodeReference(domEl, seenNodeIds); const serializedValue = { sharedId: domElRef, }; Assert.throws( () => deserialize(serializedValue, new Realm(), { nodeCache }), /NoSuchNodeError/, `Got expected error for a non-window realm` ); }); }); // Bug 1819902: Instead of a browsing context check compare the origin add_task(async function test_deserializeSharedIdOtherBrowsingContext() { await loadURL(inline("