Index: runtime/vm/service.cc |
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc |
index 1dc403b15ffc2cfc67d5c998bb0dd50447365932..ba562356b0fefaa7a6b586ed9791ac742d21a465 100644 |
--- a/runtime/vm/service.cc |
+++ b/runtime/vm/service.cc |
@@ -2041,17 +2041,9 @@ static bool GetCallSiteData(Isolate* isolate, JSONStream* js) { |
} |
-static const MethodParameter* add_breakpoint_params[] = { |
- ISOLATE_PARAMETER, |
- new IdParameter("scriptId", false), |
- new IdParameter("scriptUri", false), |
- new UIntParameter("line", true), |
- new UIntParameter("column", false), |
- NULL, |
-}; |
- |
- |
-static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { |
+static bool AddBreakpointCommon(Isolate* isolate, |
+ JSONStream* js, |
+ const String& script_uri) { |
const char* line_param = js->LookupParam("line"); |
intptr_t line = UIntParameter::Parse(line_param); |
const char* col_param = js->LookupParam("column"); |
@@ -2064,28 +2056,6 @@ static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { |
return true; |
} |
} |
- const char* script_id_param = js->LookupParam("scriptId"); |
- const char* script_uri_param = js->LookupParam("scriptUri"); |
- if (script_id_param == NULL && script_uri_param == NULL) { |
- js->PrintError(kInvalidParams, |
- "%s expects the 'scriptId' or the 'scriptUri' parameter", |
- js->method()); |
- return true; |
- } |
- String& script_uri = String::Handle(isolate); |
- if (script_id_param != NULL) { |
- Object& obj = |
- Object::Handle(LookupHeapObject(isolate, script_id_param, NULL)); |
- if (obj.raw() == Object::sentinel().raw() || !obj.IsScript()) { |
- PrintInvalidParamError(js, "scriptId"); |
- return true; |
- } |
- const Script& script = Script::Cast(obj); |
- script_uri = script.url(); |
- } |
- if (script_uri_param != NULL) { |
- script_uri = String::New(script_uri_param); |
- } |
ASSERT(!script_uri.IsNull()); |
Breakpoint* bpt = NULL; |
bpt = isolate->debugger()->SetBreakpointAtLineCol(script_uri, line, col); |
@@ -2100,6 +2070,46 @@ static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { |
} |
+static const MethodParameter* add_breakpoint_params[] = { |
+ ISOLATE_PARAMETER, |
+ new IdParameter("scriptId", true), |
+ new UIntParameter("line", true), |
+ new UIntParameter("column", false), |
+ NULL, |
+}; |
+ |
+ |
+static bool AddBreakpoint(Isolate* isolate, JSONStream* js) { |
+ const char* script_id_param = js->LookupParam("scriptId"); |
+ Object& obj = |
+ Object::Handle(LookupHeapObject(isolate, script_id_param, NULL)); |
+ if (obj.raw() == Object::sentinel().raw() || !obj.IsScript()) { |
+ PrintInvalidParamError(js, "scriptId"); |
+ return true; |
+ } |
+ const Script& script = Script::Cast(obj); |
+ const String& script_uri = String::Handle(script.url()); |
+ ASSERT(!script_uri.IsNull()); |
+ return AddBreakpointCommon(isolate, js, script_uri); |
+} |
+ |
+ |
+static const MethodParameter* add_breakpoint_with_script_uri_params[] = { |
+ ISOLATE_PARAMETER, |
+ new IdParameter("scriptUri", true), |
+ new UIntParameter("line", true), |
+ new UIntParameter("column", false), |
+ NULL, |
+}; |
+ |
+ |
+static bool AddBreakpointWithScriptUri(Isolate* isolate, JSONStream* js) { |
+ const char* script_uri_param = js->LookupParam("scriptUri"); |
+ const String& script_uri = String::Handle(String::New(script_uri_param)); |
+ return AddBreakpointCommon(isolate, js, script_uri); |
+} |
+ |
+ |
static const MethodParameter* add_breakpoint_at_entry_params[] = { |
ISOLATE_PARAMETER, |
new IdParameter("functionId", true), |
@@ -3121,6 +3131,8 @@ static ServiceMethodDescriptor service_methods_[] = { |
NULL }, |
{ "addBreakpoint", AddBreakpoint, |
add_breakpoint_params }, |
+ { "addBreakpointWithScriptUri", AddBreakpointWithScriptUri, |
+ add_breakpoint_with_script_uri_params }, |
{ "addBreakpointAtEntry", AddBreakpointAtEntry, |
add_breakpoint_at_entry_params }, |
{ "_addBreakpointAtActivation", AddBreakpointAtActivation, |