browser_inspector_iframe-navigation.js (1724B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 "use strict"; 4 5 // Test that the highlighter element picker still works through iframe 6 // navigations. 7 8 const TEST_URI = 9 "data:text/html;charset=utf-8," + 10 "<p>bug 699308 - test iframe navigation</p>" + 11 "<iframe src='data:text/html;charset=utf-8,hello world'></iframe>"; 12 13 add_task(async function () { 14 const { inspector, toolbox, highlighterTestFront } = 15 await openInspectorForURL(TEST_URI); 16 17 info("Starting element picker."); 18 await startPicker(toolbox); 19 20 info("Mouse over for body element."); 21 await hoverElement(inspector, "body"); 22 23 let isVisible = await highlighterTestFront.isHighlighting(); 24 ok(isVisible, "Inspector is highlighting."); 25 26 await reloadIframe(inspector); 27 info("Frame reloaded. Reloading again."); 28 29 await reloadIframe(inspector); 30 info("Frame reloaded twice."); 31 32 isVisible = await highlighterTestFront.isHighlighting(); 33 ok(isVisible, "Inspector is highlighting after iframe nav."); 34 35 info("Stopping element picker."); 36 await toolbox.nodePicker.stop({ canceled: true }); 37 }); 38 39 async function reloadIframe(inspector) { 40 const { resourceCommand } = inspector.commands; 41 42 const { onResource: onNewRoot } = await resourceCommand.waitForNextResource( 43 resourceCommand.TYPES.ROOT_NODE, 44 { 45 ignoreExistingResources: true, 46 } 47 ); 48 49 await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => { 50 const iframeEl = content.document.querySelector("iframe"); 51 await new Promise(resolve => { 52 iframeEl.addEventListener("load", () => resolve(), { once: true }); 53 iframeEl.contentWindow.location.reload(); 54 }); 55 }); 56 57 await onNewRoot; 58 }