Index: src/debug-delay.js |
=================================================================== |
--- src/debug-delay.js (revision 2375) |
+++ src/debug-delay.js (working copy) |
@@ -223,7 +223,8 @@ |
// Object representing a script break point. The script is referenced by its |
// script name or script id and the break point is represented as line and |
// column. |
-function ScriptBreakPoint(type, script_id_or_name, opt_line, opt_column) { |
+function ScriptBreakPoint(type, script_id_or_name, opt_line, opt_column, |
+ opt_groupId) { |
this.type_ = type; |
if (type == Debug.ScriptBreakPointType.ScriptId) { |
this.script_id_ = script_id_or_name; |
@@ -232,6 +233,7 @@ |
} |
this.line_ = opt_line || 0; |
this.column_ = opt_column; |
+ this.groupId_ = opt_groupId; |
this.hit_count_ = 0; |
this.active_ = true; |
this.condition_ = null; |
@@ -244,6 +246,11 @@ |
}; |
+ScriptBreakPoint.prototype.groupId = function() { |
+ return this.groupId_; |
+}; |
+ |
+ |
ScriptBreakPoint.prototype.type = function() { |
return this.type_; |
}; |
@@ -611,10 +618,12 @@ |
// Sets a breakpoint in a script identified through id or name at the |
// specified source line and column within that line. |
Debug.setScriptBreakPoint = function(type, script_id_or_name, |
- opt_line, opt_column, opt_condition) { |
+ opt_line, opt_column, opt_condition, |
+ opt_groupId) { |
// Create script break point object. |
var script_break_point = |
- new ScriptBreakPoint(type, script_id_or_name, opt_line, opt_column); |
+ new ScriptBreakPoint(type, script_id_or_name, opt_line, opt_column, |
+ opt_groupId); |
// Assign number to the new script break point and add it. |
script_break_point.number_ = next_break_point_number++; |
@@ -636,19 +645,19 @@ |
Debug.setScriptBreakPointById = function(script_id, |
opt_line, opt_column, |
- opt_condition) { |
+ opt_condition, opt_groupId) { |
return this.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptId, |
script_id, opt_line, opt_column, |
- opt_condition) |
+ opt_condition, opt_groupId); |
} |
Debug.setScriptBreakPointByName = function(script_name, |
opt_line, opt_column, |
- opt_condition) { |
+ opt_condition, opt_groupId) { |
return this.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptName, |
script_name, opt_line, opt_column, |
- opt_condition) |
+ opt_condition, opt_groupId); |
} |
@@ -1210,6 +1219,8 @@ |
this.changeBreakPointRequest_(request, response); |
} else if (request.command == 'clearbreakpoint') { |
this.clearBreakPointRequest_(request, response); |
+ } else if (request.command == 'clearbreakpointgroup') { |
+ this.clearBreakPointGroupRequest_(request, response); |
} else if (request.command == 'backtrace') { |
this.backtraceRequest_(request, response); |
} else if (request.command == 'frame') { |
@@ -1325,6 +1336,7 @@ |
true : request.arguments.enabled; |
var condition = request.arguments.condition; |
var ignoreCount = request.arguments.ignoreCount; |
+ var groupId = request.arguments.groupId; |
// Check for legal arguments. |
if (!type || IS_UNDEFINED(target)) { |
@@ -1378,10 +1390,11 @@ |
} else if (type == 'script') { |
// set script break point. |
break_point_number = |
- Debug.setScriptBreakPointByName(target, line, column, condition); |
+ Debug.setScriptBreakPointByName(target, line, column, condition, |
+ groupId); |
} else { // type == 'scriptId. |
break_point_number = |
- Debug.setScriptBreakPointById(target, line, column, condition); |
+ Debug.setScriptBreakPointById(target, line, column, condition, groupId); |
} |
// Set additional break point properties. |
@@ -1454,6 +1467,40 @@ |
} |
+DebugCommandProcessor.prototype.clearBreakPointGroupRequest_ = function(request, response) { |
+ // Check for legal request. |
+ if (!request.arguments) { |
+ response.failed('Missing arguments'); |
+ return; |
+ } |
+ |
+ // Pull out arguments. |
+ var group_id = request.arguments.groupId; |
+ |
+ // Check for legal arguments. |
+ if (!group_id) { |
+ response.failed('Missing argument "groupId"'); |
+ return; |
+ } |
+ |
+ var cleared_break_points = []; |
+ var new_script_break_points = []; |
+ for (var i = 0; i < script_break_points.length; i++) { |
+ var next_break_point = script_break_points[i]; |
+ if (next_break_point.groupId() == group_id) { |
+ cleared_break_points.push(next_break_point.number()); |
+ next_break_point.clear(); |
+ } else { |
+ new_script_break_points.push(next_break_point); |
+ } |
+ } |
+ script_break_points = new_script_break_points; |
+ |
+ // Add the cleared break point numbers to the response. |
+ response.body = { breakpoints: cleared_break_points }; |
+} |
+ |
+ |
DebugCommandProcessor.prototype.clearBreakPointRequest_ = function(request, response) { |
// Check for legal request. |
if (!request.arguments) { |