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

Unified Diff: test/mjsunit/debug-backtrace.js

Issue 18092: Added handles to the mirror objects. When a mirror for an object is created... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 11 months 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 | « src/mirror-delay.js ('k') | test/mjsunit/mirror-array.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/debug-backtrace.js
===================================================================
--- test/mjsunit/debug-backtrace.js (revision 1079)
+++ test/mjsunit/debug-backtrace.js (working copy)
@@ -43,14 +43,33 @@
listenerCalled = false;
exception = false;
-function safeEval(code) {
- try {
- return eval('(' + code + ')');
- } catch (e) {
- return undefined;
+
+function ParsedResponse(json) {
+ this.response_ = eval('(' + json + ')');
+ this.refs_ = [];
+ if (this.response_.refs) {
+ for (var i = 0; i < this.response_.refs.length; i++) {
+ this.refs_[this.response_.refs[i].handle] = this.response_.refs[i];
+ }
}
}
+
+ParsedResponse.prototype.response = function() {
+ return this.response_;
+}
+
+
+ParsedResponse.prototype.body = function() {
+ return this.response_.body;
+}
+
+
+ParsedResponse.prototype.lookup = function(handle) {
+ return this.refs_[handle];
+}
+
+
function listener(event, exec_state, event_data, data) {
try {
if (event == Debug.DebugEvent.Break)
@@ -60,13 +79,19 @@
// 1: g
// 2: [anonymous]
+ var response;
+ var backtrace;
+ var frame;
+ var source;
+
// Get the debug command processor.
var dcp = exec_state.debugCommandProcessor();
// Get the backtrace.
var json;
json = '{"seq":0,"type":"request","command":"backtrace"}'
- var backtrace = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ backtrace = response.body();
assertEquals(0, backtrace.fromFrame);
assertEquals(3, backtrace.toFrame);
assertEquals(3, backtrace.totalFrames);
@@ -76,15 +101,16 @@
assertEquals('frame', frames[i].type);
}
assertEquals(0, frames[0].index);
- assertEquals("f", frames[0].func.name);
+ assertEquals("f", response.lookup(frames[0].func.ref).name);
assertEquals(1, frames[1].index);
- assertEquals("g", frames[1].func.name);
+ assertEquals("g", response.lookup(frames[1].func.ref).name);
assertEquals(2, frames[2].index);
- assertEquals("", frames[2].func.name);
+ assertEquals("", response.lookup(frames[2].func.ref).name);
// Get backtrace with two frames.
json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":1,"toFrame":3}}'
- var backtrace = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ backtrace = response.body();
assertEquals(1, backtrace.fromFrame);
assertEquals(3, backtrace.toFrame);
assertEquals(3, backtrace.totalFrames);
@@ -94,71 +120,77 @@
assertEquals('frame', frames[i].type);
}
assertEquals(1, frames[0].index);
- assertEquals("g", frames[0].func.name);
+ assertEquals("g", response.lookup(frames[0].func.ref).name);
assertEquals(2, frames[1].index);
- assertEquals("", frames[1].func.name);
+ assertEquals("", response.lookup(frames[1].func.ref).name);
// Get the individual frames.
- var frame;
json = '{"seq":0,"type":"request","command":"frame"}'
- frame = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ frame = response.body();
assertEquals(0, frame.index);
- assertEquals("f", frame.func.name);
+ assertEquals("f", response.lookup(frame.func.ref).name);
assertTrue(frame.constructCall);
assertEquals(31, frame.line);
assertEquals(3, frame.column);
assertEquals(2, frame.arguments.length);
assertEquals('x', frame.arguments[0].name);
- assertEquals('number', frame.arguments[0].value.type);
- assertEquals(1, frame.arguments[0].value.value);
+ assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
+ assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
assertEquals('y', frame.arguments[1].name);
- assertEquals('undefined', frame.arguments[1].value.type);
+ assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type);
json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":0}}'
- frame = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ frame = response.body();
assertEquals(0, frame.index);
- assertEquals("f", frame.func.name);
+ assertEquals("f", response.lookup(frame.func.ref).name);
assertEquals(31, frame.line);
assertEquals(3, frame.column);
assertEquals(2, frame.arguments.length);
assertEquals('x', frame.arguments[0].name);
- assertEquals('number', frame.arguments[0].value.type);
- assertEquals(1, frame.arguments[0].value.value);
+ assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
+ assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
assertEquals('y', frame.arguments[1].name);
- assertEquals('undefined', frame.arguments[1].value.type);
+ assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type);
json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":1}}'
- frame = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ frame = response.body();
assertEquals(1, frame.index);
- assertEquals("g", frame.func.name);
+ assertEquals("g", response.lookup(frame.func.ref).name);
assertFalse(frame.constructCall);
assertEquals(35, frame.line);
assertEquals(2, frame.column);
assertEquals(0, frame.arguments.length);
json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":2}}'
- frame = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ frame = response.body();
assertEquals(2, frame.index);
- assertEquals("", frame.func.name);
+ assertEquals("", response.lookup(frame.func.ref).name);
// Source slices for the individual frames (they all refer to this script).
json = '{"seq":0,"type":"request","command":"source",' +
'"arguments":{"frame":0,"fromLine":30,"toLine":32}}'
- source = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ source = response.body();
assertEquals("function f(x, y) {", source.source.substring(0, 18));
assertEquals(30, source.fromLine);
assertEquals(32, source.toLine);
json = '{"seq":0,"type":"request","command":"source",' +
'"arguments":{"frame":1,"fromLine":31,"toLine":32}}'
- source = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ source = response.body();
assertEquals(" a=1;", source.source.substring(0, 6));
assertEquals(31, source.fromLine);
assertEquals(32, source.toLine);
json = '{"seq":0,"type":"request","command":"source",' +
'"arguments":{"frame":2,"fromLine":35,"toLine":36}}'
- source = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ source = response.body();
assertEquals(" new f(1);", source.source.substring(0, 11));
assertEquals(35, source.fromLine);
assertEquals(36, source.toLine);
@@ -166,12 +198,13 @@
// Test line interval way beyond this script will result in an error.
json = '{"seq":0,"type":"request","command":"source",' +
'"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}'
- response = safeEval(dcp.processDebugJSONRequest(json));
- assertFalse(response.success);
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ assertFalse(response.response().success);
// Test without arguments.
json = '{"seq":0,"type":"request","command":"source"}'
- source = safeEval(dcp.processDebugJSONRequest(json)).body;
+ response = new ParsedResponse(dcp.processDebugJSONRequest(json));
+ source = response.body();
assertEquals(Debug.findScript(f).source, source.source);
listenerCalled = true;
« no previous file with comments | « src/mirror-delay.js ('k') | test/mjsunit/mirror-array.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698