diff --git a/toolkit/devtools/server/actors/script.js b/toolkit/devtools/server/actors/script.js index d85f33a74c8d..f7cc20d57c90 100644 --- a/toolkit/devtools/server/actors/script.js +++ b/toolkit/devtools/server/actors/script.js @@ -106,7 +106,7 @@ BreakpointStore.prototype = { /** * Get a breakpoint from the breakpoint store. Will throw an error if the - * breakpoint is not found. + * breakpoint is not found unless you explicitly silence it. * * @param Object aLocation * The location of the breakpoint you are retrieving. It is an object @@ -114,35 +114,11 @@ BreakpointStore.prototype = { * - url * - line * - column (optional) + * @param bool aShouldThrow + * Optional; defaults to true. Whether an error should be thrown when + * there is no breakpoint at the specified locaiton. */ - getBreakpoint: function BS_getBreakpoint(aLocation) { - let { url, line, column } = aLocation; - dbg_assert(url != null); - dbg_assert(line != null); - - var foundBreakpoint = this.hasBreakpoint(aLocation); - if (foundBreakpoint == null) { - throw new Error("No breakpoint at url = " + url - + ", line = " + line - + ", column = " + column); - } - - return foundBreakpoint; - }, - - /** - * Checks if the breakpoint store has a requested breakpoint - * Returns the stored breakpoint if it exists - * null otherwise - * - * @param Object aLocation - * The location of the breakpoint you are retrieving. It is an object - * with the following properties: - * - url - * - line - * - column (optional) - */ - hasBreakpoint: function BS_hasBreakpoint(aLocation) { + getBreakpoint: function BS_getBreakpoint(aLocation, aShouldThrow=true) { let { url, line, column } = aLocation; dbg_assert(url != null); dbg_assert(line != null); @@ -153,7 +129,11 @@ BreakpointStore.prototype = { // one. return bp; } - + if (aShouldThrow) { + throw new Error("No breakpoint at url = " + url + + ", line = " + line + + ", column = " + column); + } return null; }, @@ -1098,8 +1078,7 @@ ThreadActor.prototype = { } } if (found) { - let existingBp = this.breakpointStore.hasBreakpoint(actualLocation); - + let existingBp = this.breakpointStore.getBreakpoint(actualLocation, false); if (existingBp && existingBp.actor) { /** * We already have a breakpoint actor for the actual location, so diff --git a/toolkit/devtools/server/tests/unit/test_breakpointstore.js b/toolkit/devtools/server/tests/unit/test_breakpointstore.js index 5ca4c12064ac..71299442c3aa 100644 --- a/toolkit/devtools/server/tests/unit/test_breakpointstore.js +++ b/toolkit/devtools/server/tests/unit/test_breakpointstore.js @@ -12,52 +12,14 @@ function run_test() .getService(Components.interfaces.mozIJSSubScriptLoader); loader.loadSubScript("resource://gre/modules/devtools/server/actors/script.js"); - test_has_breakpoint(); test_bug_754251(); test_add_breakpoint(); test_remove_breakpoint(); test_find_breakpoints(); } -function test_has_breakpoint() { - let bpStore = new BreakpointStore(); - let location = { - url: "http://example.com/foo.js", - line: 3 - }; - let columnLocation = { - url: "http://example.com/bar.js", - line: 5, - column: 15 - }; - - // Shouldn't have breakpoint - do_check_eq(null, bpStore.hasBreakpoint(location), - "Breakpoint not added and shouldn't exist."); - - bpStore.addBreakpoint(location); - do_check_true(!!bpStore.hasBreakpoint(location), - "Breakpoint added but not found in Breakpoint Store."); - - bpStore.removeBreakpoint(location); - do_check_eq(null, bpStore.hasBreakpoint(location), - "Breakpoint removed but still exists."); - - // Same checks for breakpoint with a column - do_check_eq(null, bpStore.hasBreakpoint(columnLocation), - "Breakpoint with column not added and shouldn't exist."); - - bpStore.addBreakpoint(columnLocation); - do_check_true(!!bpStore.hasBreakpoint(columnLocation), - "Breakpoint with column added but not found in Breakpoint Store."); - - bpStore.removeBreakpoint(columnLocation); - do_check_eq(null, bpStore.hasBreakpoint(columnLocation), - "Breakpoint with column removed but still exists in Breakpoint Store."); -} - // Note: Removing this test will regress bug 754251. See comment above -// ThreadActor.breakpointStore. +// ThreadActor._breakpointStore. function test_bug_754251() { let instance1 = new ThreadActor(); let instance2 = new ThreadActor(); @@ -75,7 +37,7 @@ function test_add_breakpoint() { column: 9 }; bpStore.addBreakpoint(location); - do_check_true(!!bpStore.hasBreakpoint(location), + do_check_true(!!bpStore.getBreakpoint(location, false), "We should have the column breakpoint we just added"); // Breakpoint without column (whole line breakpoint) @@ -84,7 +46,7 @@ function test_add_breakpoint() { line: 103 }; bpStore.addBreakpoint(location); - do_check_true(!!bpStore.hasBreakpoint(location), + do_check_true(!!bpStore.getBreakpoint(location, false), "We should have the whole line breakpoint we just added"); } @@ -98,7 +60,7 @@ function test_remove_breakpoint() { }; bpStore.addBreakpoint(location); bpStore.removeBreakpoint(location); - do_check_eq(bpStore.hasBreakpoint(location), null, + do_check_eq(bpStore.getBreakpoint(location, false), null, "We should not have the column breakpoint anymore"); // Breakpoint without column (whole line breakpoint) @@ -108,7 +70,7 @@ function test_remove_breakpoint() { }; bpStore.addBreakpoint(location); bpStore.removeBreakpoint(location); - do_check_eq(bpStore.hasBreakpoint(location), null, + do_check_eq(bpStore.getBreakpoint(location, false), null, "We should not have the whole line breakpoint anymore"); }