diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_reload_missing-iframe-node.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_reload_missing-iframe-node.js b/devtools/client/inspector/test/browser_inspector_reload_missing-iframe-node.js new file mode 100644 index 0000000000..82e154d5ef --- /dev/null +++ b/devtools/client/inspector/test/browser_inspector_reload_missing-iframe-node.js @@ -0,0 +1,58 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// Check that the markup view selection falls back to the document body if an iframe node +// becomes missing after a reload. This can happen if the iframe and its contents are +// added dynamically to the page before reloading. + +const TEST_URI = "data:text/html;charset=utf-8,"; + +add_task(async function () { + const { inspector } = await openInspectorForURL(TEST_URI); + + info("Create new iframe and add it to the page."); + await ContentTask.spawn(gBrowser.selectedBrowser, null, async function () { + await new Promise(resolve => { + const iframe = content.document.createElement("iframe"); + content.document.body.appendChild(iframe); + + iframe.contentWindow.addEventListener("load", () => { + // Create a div element and append it to the iframe + const div = content.document.createElement("div"); + div.id = "in-frame"; + div.textContent = "div in frame"; + + const frameContent = + iframe.contentWindow.document.querySelector("body"); + frameContent.appendChild(div); + resolve(); + }); + }); + }); + ok( + await hasMatchingElementInContentPage("iframe"), + "The iframe has been added to the page" + ); + + info("Select node inside iframe."); + await selectNodeInFrames(["iframe", "#in-frame"], inspector); + + const markupLoaded = inspector.once("markuploaded"); + + info("Reloading page."); + await navigateTo(TEST_URI); + + info("Waiting for markupview to load after reload."); + await markupLoaded; + + const rootNodeFront = await getNodeFront("body", inspector); + + is( + inspector.selection.nodeFront, + rootNodeFront, + "body node selected after reload." + ); +}); |