summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js')
-rw-r--r--devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js b/devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js
new file mode 100644
index 000000000..16082d2cc
--- /dev/null
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js
@@ -0,0 +1,88 @@
+/* -*- 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/ */
+
+/**
+ * Bug 1008372: Setting a breakpoint in a line without code should move
+ * the icon to the actual location, and if a breakpoint already exists
+ * on the new location don't duplicate
+ */
+
+const TAB_URL = EXAMPLE_URL + "doc_breakpoint-move.html";
+
+function test() {
+ let options = {
+ source: TAB_URL,
+ line: 1
+ };
+ initDebugger(TAB_URL, options).then(([aTab,, aPanel]) => {
+ const gTab = aTab;
+ const gPanel = aPanel;
+ const gDebugger = gPanel.panelWin;
+ const gEditor = gDebugger.DebuggerView.editor;
+ const gSources = gDebugger.DebuggerView.Sources;
+ const gController = gDebugger.DebuggerController;
+ const actions = bindActionCreators(gPanel);
+ const constants = gDebugger.require("./content/constants");
+ const queries = gDebugger.require("./content/queries");
+
+ function resumeAndTestBreakpoint(line) {
+ return Task.spawn(function* () {
+ let event = waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FETCHED_SCOPES);
+ doResume(gPanel);
+ yield event;
+ testBreakpoint(line);
+ });
+ }
+
+ function testBreakpoint(line) {
+ let bp = gSources._selectedBreakpoint;
+ ok(bp, "There should be a selected breakpoint on line " + line);
+ is(bp.location.line, line,
+ "The breakpoint on line " + line + " was not hit");
+ }
+
+ Task.spawn(function* () {
+ let onCaretUpdated = waitForCaretAndScopes(gPanel, 16);
+ callInTab(gTab, "ermahgerd");
+ yield onCaretUpdated;
+
+ is(queries.getBreakpoints(gController.getState()).length, 0,
+ "There are no breakpoints in the editor");
+
+ yield actions.addBreakpoint({
+ actor: gSources.selectedValue,
+ line: 19
+ });
+ yield actions.addBreakpoint({
+ actor: gSources.selectedValue,
+ line: 20
+ });
+
+ const response = yield actions.addBreakpoint({
+ actor: gSources.selectedValue,
+ line: 17
+ });
+
+ is(response.actualLocation.line, 19,
+ "Breakpoint client line is new.");
+
+ yield resumeAndTestBreakpoint(19);
+
+ yield actions.removeBreakpoint({
+ actor: gSources.selectedValue,
+ line: 19
+ });
+
+ yield resumeAndTestBreakpoint(20);
+ yield doResume(gPanel);
+
+ callInTab(gTab, "ermahgerd");
+ yield waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FETCHED_SCOPES);
+
+ yield resumeAndTestBreakpoint(20);
+ resumeDebuggerThenCloseAndFinish(gPanel);
+ });
+ });
+}