diff options
Diffstat (limited to 'devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js')
-rw-r--r-- | devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js b/devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js new file mode 100644 index 000000000..9b220b4a2 --- /dev/null +++ b/devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js @@ -0,0 +1,60 @@ +/* -*- 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/ */ + +// Tests that clicking on a function displays its source in the debugger. + +"use strict"; + +const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" + + "test/test-bug_1050691_click_function_to_source.html"; + +// Force the old debugger UI since it's directly used (see Bug 1301705) +Services.prefs.setBoolPref("devtools.debugger.new-debugger-frontend", false); +registerCleanupFunction(function* () { + Services.prefs.clearUserPref("devtools.debugger.new-debugger-frontend"); +}); + +add_task(function* () { + yield loadTab(TEST_URI); + let hud = yield openConsole(); + + // Open the Debugger panel. + let debuggerPanel = yield openDebugger(); + // And right after come back to the Console panel. + yield openConsole(); + yield testWithDebuggerOpen(hud, debuggerPanel); +}); + +function* testWithDebuggerOpen(hud, debuggerPanel) { + let clickable = yield printFunction(hud); + let panelWin = debuggerPanel.panelWin; + let onEditorLocationSet = panelWin.once(panelWin.EVENTS.EDITOR_LOCATION_SET); + synthesizeClick(clickable, hud); + yield onEditorLocationSet; + ok(isDebuggerCaretPos(debuggerPanel, 7), + "Clicking on a function should go to its source in the debugger view"); +} + +function synthesizeClick(clickable, hud) { + EventUtils.synthesizeMouse(clickable, 2, 2, {}, hud.iframeWindow); +} + +var printFunction = Task.async(function* (hud) { + hud.jsterm.clearOutput(); + ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () { + content.wrappedJSObject.foo(); + }); + let [result] = yield waitForMessages({ + webconsole: hud, + messages: [{ + category: CATEGORY_WEBDEV, + severity: SEVERITY_LOG, + }], + }); + let msg = [...result.matched][0]; + let clickable = msg.querySelector("a"); + ok(clickable, "clickable item for object should exist"); + return clickable; +}); |