Chromium Code Reviews| Index: runtime/vm/service.cc |
| diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc |
| index 0593f7faa5edd29610cd8a5c1f164c3c2c2aecf0..0f35311be471d67c14d33643e802253454e0e46e 100644 |
| --- a/runtime/vm/service.cc |
| +++ b/runtime/vm/service.cc |
| @@ -2620,6 +2620,65 @@ static bool GetVM(Isolate* isolate, JSONStream* js) { |
| } |
| +static const MethodParameter* get_exception_pause_info_params[] = { |
| + ISOLATE_PARAMETER, |
| + NULL, |
| +}; |
| + |
| + |
| +static bool GetExceptionPauseInfo(Isolate* isolate, JSONStream* js) { |
| + JSONObject jsobj(js); |
| + jsobj.AddProperty("type", "ExceptionPauseInfo"); |
| + switch (isolate->debugger()->GetExceptionPauseInfo()) { |
| + case kNoPauseOnExceptions: |
| + jsobj.AddProperty("exceptions", "none"); |
| + break; |
| + case kPauseOnAllExceptions: |
| + jsobj.AddProperty("exceptions", "all"); |
| + break; |
| + case kPauseOnUnhandledExceptions: |
| + jsobj.AddProperty("exceptions", "unhandled"); |
| + break; |
| + default: |
| + UNREACHABLE(); |
| + } |
| + return true; |
| +} |
| + |
| + |
| +static const MethodParameter* set_exception_pause_info_params[] = { |
| + ISOLATE_PARAMETER, |
| + NULL, |
| +}; |
| + |
| + |
| +static bool SetExceptionPauseInfo(Isolate* isolate, JSONStream* js) { |
| + const char* exceptions = js->LookupParam("exceptions"); |
| + if (exceptions == NULL) { |
| + PrintMissingParamError(js, "exceptions"); |
| + return true; |
| + } |
| + |
| + Dart_ExceptionPauseInfo info = kNoPauseOnExceptions; |
| + if (strcmp(exceptions, "none") == 0) { |
| + info = kNoPauseOnExceptions; |
| + } else if (strcmp(exceptions, "all") == 0) { |
| + info = kPauseOnAllExceptions; |
| + } else if (strcmp(exceptions, "unhandled") == 0) { |
| + info = kPauseOnUnhandledExceptions; |
| + } else { |
| + JSONObject jsobj(js); |
| + jsobj.AddProperty("type", "Error"); |
| + jsobj.AddProperty("message", "illegal value for parameter 'exceptions'"); |
| + return true; |
| + } |
| + |
| + isolate->debugger()->SetExceptionPauseInfo(info); |
|
Cutch
2015/06/11 21:20:12
This state change affects all debuggers. This shou
rmacnak
2015/06/12 00:09:38
Rejiggered as a DebuggerChanged event.
|
| + PrintSuccess(js); |
| + return true; |
| +} |
| + |
| + |
| static const MethodParameter* get_flag_list_params[] = { |
| NO_ISOLATE_PARAMETER, |
| NULL, |
| @@ -2738,6 +2797,8 @@ static ServiceMethodDescriptor service_methods_[] = { |
| get_coverage_params }, |
| { "_getCpuProfile", GetCpuProfile, |
| get_cpu_profile_params }, |
| + { "_getExceptionPauseInfo", GetExceptionPauseInfo, |
| + get_exception_pause_info_params }, |
| { "getFlagList", GetFlagList , |
| get_flag_list_params }, |
| { "_getHeapMap", GetHeapMap, |
| @@ -2782,6 +2843,8 @@ static ServiceMethodDescriptor service_methods_[] = { |
| resume_params }, |
| { "_requestHeapSnapshot", RequestHeapSnapshot, |
| request_heap_snapshot_params }, |
| + { "_setExceptionPauseInfo", SetExceptionPauseInfo, |
| + set_exception_pause_info_params }, |
| { "_setFlag", SetFlag, |
| set_flags_params }, |
| { "setLibraryDebuggable", SetLibraryDebuggable, |