Index: runtime/vm/isolate.cc |
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
index fe5289180a6a853a853c82ff35c8e883cfc0c9fe..e001c5f2c5906e4ae2bfe340495b65eb63613e1f 100644 |
--- a/runtime/vm/isolate.cc |
+++ b/runtime/vm/isolate.cc |
@@ -1859,6 +1859,17 @@ void Isolate::PrintJSON(JSONStream* stream, bool ref) { |
JSONObject jssettings(&jsobj, "_debuggerSettings"); |
debugger()->PrintSettingsToJSONObject(&jssettings); |
} |
+ |
+ { |
+ JSONArray extensions(&jsobj, "serviceExtensions"); |
+ GrowableObjectArray& handlers = |
+ GrowableObjectArray::Handle(registered_service_extension_handlers()); |
+ String& handler_name = String::Handle(); |
+ for (intptr_t i = 0; i < handlers.Length(); i += kRegisteredEntrySize) { |
+ handler_name ^= handlers.At(i + kRegisteredNameIndex); |
+ extensions.AddValue(handler_name.ToCString()); |
+ } |
+ } |
} |
@@ -2042,6 +2053,12 @@ void Isolate::RegisterServiceExtensionHandler(const String& name, |
handlers.Add(name, Heap::kOld); |
ASSERT(kRegisteredHandlerIndex == 1); |
handlers.Add(closure, Heap::kOld); |
+ { |
+ // Fire off an event. |
+ ServiceEvent event(this, ServiceEvent::kIsolateServiceExtensionRegistered); |
+ event.set_extension_name(&name); |
+ Service::HandleEvent(&event); |
+ } |
} |