Chromium Code Reviews| Index: runtime/vm/service.cc |
| diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc |
| index 1019498aeaa3f4c250d3404d0ea3d72b9fca60f6..441ae1fb0e17df1d834788eefc08be7d9d49df39 100644 |
| --- a/runtime/vm/service.cc |
| +++ b/runtime/vm/service.cc |
| @@ -483,7 +483,7 @@ static RootMessageHandler FindRootMessageHandler(const char* command); |
| static void PrintArgumentsAndOptions(const JSONObject& obj, JSONStream* js) { |
| - JSONObject jsobj(&obj, "message"); |
| + JSONObject jsobj(&obj, "request"); |
| { |
| JSONArray jsarr(&jsobj, "arguments"); |
| for (intptr_t i = 0; i < js->num_arguments(); i++) { |
| @@ -505,7 +505,8 @@ static void PrintArgumentsAndOptions(const JSONObject& obj, JSONStream* js) { |
| } |
| -static void PrintError(JSONStream* js, const char* format, ...) { |
| +static void PrintError(JSONStream* js, |
| + const char* format, ...) { |
| Isolate* isolate = Isolate::Current(); |
| va_list args; |
| @@ -521,7 +522,33 @@ static void PrintError(JSONStream* js, const char* format, ...) { |
| JSONObject jsobj(js); |
| jsobj.AddProperty("type", "Error"); |
| - jsobj.AddProperty("text", buffer); |
| + jsobj.AddProperty("id", ""); |
|
turnidge
2014/03/10 21:03:28
Do we require an empty id now for Errors? Why?
Cutch
2014/03/11 03:17:48
We detect that a JSON map is a ServiceObject by ch
|
| + jsobj.AddProperty("message", buffer); |
| + PrintArgumentsAndOptions(jsobj, js); |
| +} |
| + |
| + |
| +static void PrintErrorWithKind(JSONStream* js, |
| + const char* kind, |
| + const char* format, ...) { |
| + Isolate* isolate = Isolate::Current(); |
| + |
| + va_list args; |
| + va_start(args, format); |
| + intptr_t len = OS::VSNPrint(NULL, 0, format, args); |
| + va_end(args); |
| + |
| + char* buffer = isolate->current_zone()->Alloc<char>(len + 1); |
| + va_list args2; |
| + va_start(args2, format); |
| + OS::VSNPrint(buffer, (len + 1), format, args2); |
| + va_end(args2); |
| + |
| + JSONObject jsobj(js); |
| + jsobj.AddProperty("type", "Error"); |
| + jsobj.AddProperty("id", ""); |
| + jsobj.AddProperty("kind", kind); |
| + jsobj.AddProperty("message", buffer); |
| PrintArgumentsAndOptions(jsobj, js); |
| } |
| @@ -604,6 +631,7 @@ static bool HandleStackTrace(Isolate* isolate, JSONStream* js) { |
| DebuggerStackTrace* stack = isolate->debugger()->StackTrace(); |
| JSONObject jsobj(js); |
| jsobj.AddProperty("type", "StackTrace"); |
| + jsobj.AddProperty("id", "stacktrace"); |
| JSONArray jsarr(&jsobj, "members"); |
| intptr_t num_frames = stack->Length(); |
| for (intptr_t i = 0; i < num_frames; i++) { |
| @@ -1012,7 +1040,8 @@ static bool HandleScriptsFetch(Isolate* isolate, JSONStream* js) { |
| } |
| } |
| } |
| - PrintError(js, "Cannot find script %s\n", requested_url.ToCString()); |
| + PrintErrorWithKind(js, "NotFoundError", "Cannot find script %s", |
| + requested_url.ToCString()); |
| return true; |
| } |