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

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

Issue 2487673002: [debugger] Basic scope functionality and exception events in wrapper (Closed)
Patch Set: Formatting 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
« no previous file with comments | « test/debugger/debug/regress/regress-crbug-633999.js ('k') | test/debugger/testcfg.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/debugger/test-api.js
diff --git a/test/debugger/test-api.js b/test/debugger/test-api.js
index fc3d967e86600e0476a07670520614420c1f644c..b1f1db8ccd4af59f6884ac4e61791e8b1bf30190 100644
--- a/test/debugger/test-api.js
+++ b/test/debugger/test-api.js
@@ -220,10 +220,33 @@ class DebugWrapper {
}
}
+ execStateScopeType(type) {
+ switch (type) {
+ case "global": return this.ScopeType.Global;
+ case "local": return this.ScopeType.Local;
+ case "with": return this.ScopeType.With;
+ case "closure": return this.ScopeType.Closure;
+ case "catch": return this.ScopeType.Catch;
+ case "block": return this.ScopeType.Block;
+ case "script": return this.ScopeType.Script;
+ default: %AbortJS("Unexpected scope type");
+ }
+ }
+
+ // Returns an array of property descriptors of the scope object.
+ // This is in contrast to the original API, which simply passed object
+ // mirrors.
+ execStateScopeObject(obj) {
+ const {msgid, msg} = this.createMessage(
+ "Runtime.getProperties", { objectId : obj.objectId });
+ this.sendMessage(msg);
+ const reply = this.takeReplyChecked(msgid);
+ return { value : () => reply.result.result };
+ }
+
execStateScope(scope) {
- // TODO(jgruber): Mapping
- return { scopeType: () => scope.type,
- scopeObject: () => scope.object
+ return { scopeType : () => this.execStateScopeType(scope.type),
+ scopeObject : () => this.execStateScopeObject(scope.object)
};
}
@@ -237,7 +260,9 @@ class DebugWrapper {
functionName : () => frame.functionName,
func : () => func,
scopeCount : () => frame.scopeChain.length,
- scope : (index) => this.execStateScope(frame.scopeChain[index])
+ scope : (index) => this.execStateScope(frame.scopeChain[index]),
+ allScopes : () => frame.scopeChain.map(
+ this.execStateScope.bind(this))
};
}
@@ -255,6 +280,18 @@ class DebugWrapper {
handleDebuggerPaused(message) {
const params = message.params;
+ var debugEvent;
+ switch (params.reason) {
+ case "exception":
+ case "promiseRejection":
+ debugEvent = this.DebugEvent.Exception;
+ break;
+ default:
+ // TODO(jgruber): More granularity.
+ debugEvent = this.DebugEvent.Break;
+ break;
+ }
+
// Skip break events in this file.
if (params.callFrames[0].location.scriptId == this.thisScriptId) return;
@@ -267,7 +304,7 @@ class DebugWrapper {
frameCount : () => params.callFrames.length
};
let eventData = this.execStateFrame(params.callFrames[0]);
- this.invokeListener(this.DebugEvent.Break, execState, eventData);
+ this.invokeListener(debugEvent, execState, eventData);
}
handleDebuggerScriptParsed(message) {
@@ -291,6 +328,7 @@ class DebugWrapper {
// Simulate the debug object generated by --expose-debug-as debug.
var debug = { instance : undefined };
+
Object.defineProperty(debug, 'Debug', { get: function() {
if (!debug.instance) {
debug.instance = new DebugWrapper();
@@ -298,3 +336,8 @@ Object.defineProperty(debug, 'Debug', { get: function() {
}
return debug.instance;
}});
+
+Object.defineProperty(debug, 'ScopeType', { get: function() {
+ const instance = debug.Debug;
+ return instance.ScopeType;
+}});
« no previous file with comments | « test/debugger/debug/regress/regress-crbug-633999.js ('k') | test/debugger/testcfg.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698