diff options
Diffstat (limited to 'devtools/client/shared/test/browser_dbg_navigation.js')
-rw-r--r-- | devtools/client/shared/test/browser_dbg_navigation.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_dbg_navigation.js b/devtools/client/shared/test/browser_dbg_navigation.js new file mode 100644 index 0000000000..5549b524c1 --- /dev/null +++ b/devtools/client/shared/test/browser_dbg_navigation.js @@ -0,0 +1,61 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Check tab attach/navigation. + */ + +const TAB1_URL = EXAMPLE_URL + "doc_empty-tab-01.html"; +const TAB2_FILE = "doc_empty-tab-02.html"; +const TAB2_URL = EXAMPLE_URL + TAB2_FILE; + +add_task(async () => { + // Navigation events (navigate/will-navigate/tabNavigated) on the target no longer fire with server targets. + // We should probably drop this test once we stop supporting client side targets (bug 1721852). + await pushPref("devtools.target-switching.server.enabled", false); + + const tab = await addTab(TAB1_URL); + const target = await createAndAttachTargetForTab(tab); + + await testNavigate(target); + await testTargetDestroyed(target); +}); + +function testNavigate(target) { + return new Promise(resolve => { + let gotStartPacket = false; + target.on("tabNavigated", function onTabNavigated(packet) { + is( + packet.url.split("/").pop(), + TAB2_FILE, + "Got a tab navigation notification." + ); + + info(JSON.stringify(packet)); + + if (packet.state == "start") { + ok(true, "Tab started to navigate."); + gotStartPacket = true; + } else if (gotStartPacket) { + ok(true, "Tab finished navigating."); + target.off("tabNavigated", onTabNavigated); + resolve(); + } + }); + + BrowserTestUtils.loadURI(gBrowser.selectedBrowser, TAB2_URL); + }); +} + +async function testTargetDestroyed(target) { + // We can't listen for tabDetached at it is received by Target first + // and target is destroyed + const onDetached = target.once("target-destroyed"); + + removeTab(gBrowser.selectedTab); + + await onDetached; + ok(true, "Got a tab detach notification."); +} |