diff options
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js')
-rw-r--r-- | devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js b/devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js new file mode 100644 index 000000000..8b3c9ca34 --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg_bfcache.js @@ -0,0 +1,95 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Make sure that the debugger is updated with the correct sources when moving + * back and forward in the tab. + */ + +const TAB_URL_1 = EXAMPLE_URL + "doc_script-switching-01.html"; +const TAB_URL_2 = EXAMPLE_URL + "doc_recursion-stack.html"; + +var gTab, gDebuggee, gPanel, gDebugger; +var gSources; + +const test = Task.async(function* () { + info("Starting browser_dbg_bfcache.js's `test`."); + + let options = { + source: EXAMPLE_URL + "code_script-switching-01.js", + line: 1 + }; + ([gTab, gDebuggee, gPanel]) = yield initDebugger(TAB_URL_1, options); + gDebugger = gPanel.panelWin; + gSources = gDebugger.DebuggerView.Sources; + + yield testFirstPage(); + yield testLocationChange(); + yield testBack(); + yield testForward(); + return closeDebuggerAndFinish(gPanel); +}); + +function testFirstPage() { + info("Testing first page."); + + // Spin the event loop before causing the debuggee to pause, to allow + // this function to return first. + executeSoon(() => gDebuggee.firstCall()); + + return waitForSourceAndCaretAndScopes(gPanel, "-02.js", 1) + .then(validateFirstPage); +} + +function testLocationChange() { + info("Navigating to a different page."); + + return navigateActiveTabTo(gPanel, + TAB_URL_2, + gDebugger.EVENTS.SOURCES_ADDED) + .then(validateSecondPage); +} + +function testBack() { + info("Going back."); + + return navigateActiveTabInHistory(gPanel, + "back", + gDebugger.EVENTS.SOURCES_ADDED) + .then(validateFirstPage); +} + +function testForward() { + info("Going forward."); + + return navigateActiveTabInHistory(gPanel, + "forward", + gDebugger.EVENTS.SOURCES_ADDED) + .then(validateSecondPage); +} + +function validateFirstPage() { + is(gSources.itemCount, 2, + "Found the expected number of sources."); + ok(gSources.getItemForAttachment(e => e.label == "code_script-switching-01.js"), + "Found the first source label."); + ok(gSources.getItemForAttachment(e => e.label == "code_script-switching-02.js"), + "Found the second source label."); +} + +function validateSecondPage() { + is(gSources.itemCount, 1, + "Found the expected number of sources."); + ok(gSources.getItemForAttachment(e => e.label == "doc_recursion-stack.html"), + "Found the single source label."); +} + +registerCleanupFunction(function () { + gTab = null; + gDebuggee = null; + gPanel = null; + gDebugger = null; + gSources = null; +}); |