| Index: src/debug-debugger.js
|
| diff --git a/src/debug-debugger.js b/src/debug-debugger.js
|
| index c808c87b8ef9b3f93aca58ef8590b8d13d90039a..c2dbed08ab9f73909d78d9fe8921c2a90f567374 100644
|
| --- a/src/debug-debugger.js
|
| +++ b/src/debug-debugger.js
|
| @@ -79,6 +79,16 @@ var next_response_seq = 0;
|
| var next_break_point_number = 1;
|
| var break_points = [];
|
| var script_break_points = [];
|
| +var debugger_flags = {
|
| + breakPointsActive: {
|
| + value: true,
|
| + getValue: function() { return this.value; },
|
| + setValue: function(value) {
|
| + this.value = !!value;
|
| + %SetDisableBreak(!this.value);
|
| + }
|
| + }
|
| +};
|
|
|
|
|
| // Create a new break point object and add it to the list of break points.
|
| @@ -246,7 +256,7 @@ ScriptBreakPoint.prototype.cloneForOtherScript = function (other_script) {
|
| other_script.id, this.line_, this.column_, this.groupId_);
|
| copy.number_ = next_break_point_number++;
|
| script_break_points.push(copy);
|
| -
|
| +
|
| copy.hit_count_ = this.hit_count_;
|
| copy.active_ = this.active_;
|
| copy.condition_ = this.condition_;
|
| @@ -813,7 +823,13 @@ Debug.showBreakPoints = function(f, full) {
|
| Debug.scripts = function() {
|
| // Collect all scripts in the heap.
|
| return %DebugGetLoadedScripts();
|
| -}
|
| +};
|
| +
|
| +
|
| +Debug.debuggerFlags = function() {
|
| + return debugger_flags;
|
| +};
|
| +
|
|
|
| function MakeExecutionState(break_id) {
|
| return new ExecutionState(break_id);
|
| @@ -1325,9 +1341,11 @@ DebugCommandProcessor.prototype.processDebugJSONRequest = function(json_request)
|
| } else if (request.command == 'version') {
|
| this.versionRequest_(request, response);
|
| } else if (request.command == 'profile') {
|
| - this.profileRequest_(request, response);
|
| + this.profileRequest_(request, response);
|
| } else if (request.command == 'changelive') {
|
| - this.changeLiveRequest_(request, response);
|
| + this.changeLiveRequest_(request, response);
|
| + } else if (request.command == 'flags') {
|
| + this.debuggerFlagsRequest_(request, response);
|
| } else {
|
| throw new Error('Unknown command "' + request.command + '" in request');
|
| }
|
| @@ -1617,6 +1635,7 @@ DebugCommandProcessor.prototype.clearBreakPointRequest_ = function(request, resp
|
| response.body = { breakpoint: break_point }
|
| }
|
|
|
| +
|
| DebugCommandProcessor.prototype.listBreakpointsRequest_ = function(request, response) {
|
| var array = [];
|
| for (var i = 0; i < script_break_points.length; i++) {
|
| @@ -1633,7 +1652,7 @@ DebugCommandProcessor.prototype.listBreakpointsRequest_ = function(request, resp
|
| ignoreCount: break_point.ignoreCount(),
|
| actual_locations: break_point.actual_locations()
|
| }
|
| -
|
| +
|
| if (break_point.type() == Debug.ScriptBreakPointType.ScriptId) {
|
| description.type = 'scriptId';
|
| description.script_id = break_point.script_id();
|
| @@ -1643,7 +1662,7 @@ DebugCommandProcessor.prototype.listBreakpointsRequest_ = function(request, resp
|
| }
|
| array.push(description);
|
| }
|
| -
|
| +
|
| response.body = { breakpoints: array }
|
| }
|
|
|
| @@ -2070,7 +2089,7 @@ DebugCommandProcessor.prototype.changeLiveRequest_ = function(request, response)
|
| return response.failed('Missing arguments');
|
| }
|
| var script_id = request.arguments.script_id;
|
| -
|
| +
|
| var scripts = %DebugGetLoadedScripts();
|
|
|
| var the_script = null;
|
| @@ -2085,20 +2104,20 @@ DebugCommandProcessor.prototype.changeLiveRequest_ = function(request, response)
|
| }
|
|
|
| var change_log = new Array();
|
| -
|
| +
|
| if (!IS_STRING(request.arguments.new_source)) {
|
| throw "new_source argument expected";
|
| }
|
|
|
| var new_source = request.arguments.new_source;
|
| -
|
| +
|
| try {
|
| Debug.LiveEdit.SetScriptSource(the_script, new_source, change_log);
|
| } catch (e) {
|
| if (e instanceof Debug.LiveEdit.Failure) {
|
| // Let's treat it as a "success" so that body with change_log will be
|
| // sent back. "change_log" will have "failure" field set.
|
| - change_log.push( { failure: true, message: e.toString() } );
|
| + change_log.push( { failure: true, message: e.toString() } );
|
| } else {
|
| throw e;
|
| }
|
| @@ -2107,6 +2126,39 @@ DebugCommandProcessor.prototype.changeLiveRequest_ = function(request, response)
|
| };
|
|
|
|
|
| +DebugCommandProcessor.prototype.debuggerFlagsRequest_ = function(request,
|
| + response) {
|
| + // Check for legal request.
|
| + if (!request.arguments) {
|
| + response.failed('Missing arguments');
|
| + return;
|
| + }
|
| +
|
| + // Pull out arguments.
|
| + var flags = request.arguments.flags;
|
| +
|
| + response.body = { flags: [] };
|
| + if (!IS_UNDEFINED(flags)) {
|
| + for (var i = 0; i < flags.length; i++) {
|
| + var name = flags[i].name;
|
| + var debugger_flag = debugger_flags[name];
|
| + if (!debugger_flag) {
|
| + continue;
|
| + }
|
| + if ('value' in flags[i]) {
|
| + debugger_flag.setValue(flags[i].value);
|
| + }
|
| + response.body.flags.push({ name: name, value: debugger_flag.getValue() });
|
| + }
|
| + } else {
|
| + for (var name in debugger_flags) {
|
| + var value = debugger_flags[name].getValue();
|
| + response.body.flags.push({ name: name, value: value });
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| // Check whether the previously processed command caused the VM to become
|
| // running.
|
| DebugCommandProcessor.prototype.isRunning = function() {
|
|
|