diff options
Diffstat (limited to 'toolkit/devtools/debugger/test/browser_dbg_sources-bookmarklet.js')
-rw-r--r-- | toolkit/devtools/debugger/test/browser_dbg_sources-bookmarklet.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/toolkit/devtools/debugger/test/browser_dbg_sources-bookmarklet.js b/toolkit/devtools/debugger/test/browser_dbg_sources-bookmarklet.js new file mode 100644 index 000000000..e4a5841a4 --- /dev/null +++ b/toolkit/devtools/debugger/test/browser_dbg_sources-bookmarklet.js @@ -0,0 +1,50 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Make sure javascript bookmarklet scripts appear and load correctly in the source list + */ + +const TAB_URL = EXAMPLE_URL + "doc_script-bookmarklet.html"; + +const BOOKMARKLET_SCRIPT_CODE = "console.log('bookmarklet executed');"; + +function test() { + let gTab, gPanel, gDebugger; + let gSources, gBreakpoints; + + initDebugger(TAB_URL).then(([aTab,, aPanel]) => { + gTab = aTab; + gPanel = aPanel; + gDebugger = gPanel.panelWin; + gSources = gDebugger.DebuggerView.Sources; + gBreakpoints = gDebugger.DebuggerController.Breakpoints; + + return Task.spawn(function*() { + let waitForSource = waitForDebuggerEvents(gPanel, gPanel.panelWin.EVENTS.NEW_SOURCE, 1); + + // NOTE: devtools debugger panel needs to be already open, + // or the bookmarklet script will not be shown in the sources panel + callInTab(gTab, "injectBookmarklet", BOOKMARKLET_SCRIPT_CODE); + + yield waitForSource; + + is(gSources.values.length, 2, "Should have 2 source"); + + let item = gSources.getItemForAttachment(e => { + return e.label.indexOf("javascript:") === 0; + }); + ok(item, "Source label is incorrect."); + + let res = yield promiseInvoke(gDebugger.DebuggerController.client, + gDebugger.DebuggerController.client.request, + { to: item.value, type: "source"}); + + ok(res && res.source == BOOKMARKLET_SCRIPT_CODE, "SourceActor reply received"); + is(res.source, BOOKMARKLET_SCRIPT_CODE, "source is correct"); + is(res.contentType, "text/javascript", "contentType is correct"); + + yield closeDebuggerAndFinish(gPanel); + }); + }); +} |