Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Unified Diff: test/debugger/test-api.js

Issue 2508853003: [debug-wrapper] clearAllBreakPoints and several scripts functions (Closed)
Patch Set: Address comments Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/debugger/test-api.js
diff --git a/test/debugger/test-api.js b/test/debugger/test-api.js
index 3a24c66dac57b177661cbb564aacbe7ecd728a06..5df64cc3600bec8b7842346d4aeb6abf48e24b88 100644
--- a/test/debugger/test-api.js
+++ b/test/debugger/test-api.js
@@ -45,6 +45,12 @@ class DebugWrapper {
StepFrame: 3,
};
+ // The different types of scripts matching enum ScriptType in objects.h.
+ this.ScriptType = { Native: 0,
+ Extension: 1,
+ Normal: 2,
+ Wasm: 3};
+
// A copy of the scope types from runtime-debug.cc.
// NOTE: these constants should be backward-compatible, so
// add new ones to the end of this list.
@@ -78,6 +84,9 @@ class DebugWrapper {
// Store the current script id so we can skip corresponding break events.
this.thisScriptId = %FunctionGetScriptId(receive);
+ // Stores all set breakpoints.
+ this.breakpoints = new Set();
+
// Register as the active wrapper.
assertTrue(activeWrapper === undefined);
activeWrapper = this;
@@ -136,25 +145,7 @@ class DebugWrapper {
const offset = %FunctionGetScriptSourcePosition(func);
const loc =
%ScriptLocationFromLine2(scriptid, opt_line, opt_column, offset);
-
- const params = { location :
- { scriptId : scriptid.toString(),
- lineNumber : loc.line,
- columnNumber : loc.column,
- }};
- if (!!opt_condition) {
- params.condition = opt_condition;
- }
-
- const {msgid, msg} = this.createMessage("Debugger.setBreakpoint", params);
- this.sendMessage(msg);
-
- const reply = this.takeReplyChecked(msgid);
- assertTrue(reply.result !== undefined);
- const breakid = reply.result.breakpointId;
- assertTrue(breakid !== undefined);
-
- return breakid;
+ return this.setBreakPointAtLocation(scriptid, loc, opt_condition);
}
setScriptBreakPoint(type, scriptid, opt_line, opt_column, opt_condition) {
@@ -166,32 +157,23 @@ class DebugWrapper {
setScriptBreakPointById(scriptid, opt_line, opt_column, opt_condition) {
const loc = %ScriptLocationFromLine2(scriptid, opt_line, opt_column, 0);
-
- const params = { location :
- { scriptId : scriptid.toString(),
- lineNumber : loc.line,
- columnNumber : loc.column,
- }};
- if (!!opt_condition) {
- params.condition = opt_condition;
- }
-
- const {msgid, msg} = this.createMessage("Debugger.setBreakpoint", params);
- this.sendMessage(msg);
-
- const reply = this.takeReplyChecked(msgid);
- assertTrue(reply.result !== undefined);
- const breakid = reply.result.breakpointId;
- assertTrue(breakid !== undefined);
-
- return breakid;
+ return this.setBreakPointAtLocation(scriptid, loc, opt_condition);
}
clearBreakPoint(breakid) {
+ assertTrue(this.breakpoints.has(breakid));
const {msgid, msg} = this.createMessage(
"Debugger.removeBreakpoint", { breakpointId : breakid });
this.sendMessage(msg);
this.takeReplyChecked(msgid);
+ this.breakpoints.delete(breakid);
+ }
+
+ clearAllBreakPoints() {
+ for (let breakid of this.breakpoints) {
+ this.clearBreakPoint(breakid);
+ }
+ this.breakpoints.clear();
}
showBreakPoints(f, opt_position_alignment) {
@@ -236,10 +218,10 @@ class DebugWrapper {
}
// Returns a Script object. If the parameter is a function the return value
- // is the script in which the function is defined. If the parameter is a string
- // the return value is the script for which the script name has that string
- // value. If it is a regexp and there is a unique script whose name matches
- // we return that, otherwise undefined.
+ // is the script in which the function is defined. If the parameter is a
+ // string the return value is the script for which the script name has that
+ // string value. If it is a regexp and there is a unique script whose name
+ // matches we return that, otherwise undefined.
findScript(func_or_script_name) {
if (%IsFunction(func_or_script_name)) {
return %FunctionGetScript(func_or_script_name);
@@ -269,11 +251,32 @@ class DebugWrapper {
}
}
+ // Returns the script source. If the parameter is a function the return value
+ // is the script source for the script in which the function is defined. If the
+ // parameter is a string the return value is the script for which the script
+ // name has that string value.
+ scriptSource(func_or_script_name) {
+ return this.findScript(func_or_script_name).source;
+ };
+
sourcePosition(f) {
if (!%IsFunction(f)) throw new Error("Not passed a Function");
return %FunctionGetScriptSourcePosition(f);
};
+ // Returns the character position in a script based on a line number and an
+ // optional position within that line.
+ findScriptSourcePosition(script, opt_line, opt_column) {
+ var location = %ScriptLocationFromLine(script, opt_line, opt_column, 0);
+ return location ? location.position : null;
+ };
+
+ findFunctionSourceLocation(func, opt_line, opt_column) {
+ var script = %FunctionGetScript(func);
+ var script_offset = %FunctionGetScriptSourcePosition(func);
+ return %ScriptLocationFromLine(script, opt_line, opt_column, script_offset);
+ }
+
setBreakPointsActive(enabled) {
const {msgid, msg} = this.createMessage(
"Debugger.setBreakpointsActive", { active : enabled });
@@ -330,6 +333,28 @@ class DebugWrapper {
return reply;
}
+ setBreakPointAtLocation(scriptid, loc, opt_condition) {
+ const params = { location :
+ { scriptId : scriptid.toString(),
+ lineNumber : loc.line,
+ columnNumber : loc.column,
+ },
+ condition : opt_condition,
+ };
+
+ const {msgid, msg} = this.createMessage("Debugger.setBreakpoint", params);
+ this.sendMessage(msg);
+
+ const reply = this.takeReplyChecked(msgid);
+ assertTrue(reply.result !== undefined);
+ const breakid = reply.result.breakpointId;
+ assertTrue(breakid !== undefined);
+
+ this.breakpoints.add(breakid);
+
+ return breakid;
+ }
+
execStatePrepareStep(action) {
switch(action) {
case this.StepAction.StepOut: this.stepOut(); break;
« no previous file with comments | « test/debugger/debug/regress/regress-prepare-break-while-recompile.js ('k') | test/mjsunit/debug-sourceinfo.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698