| Index: Source/bindings/dart/DartController.cpp
|
| diff --git a/Source/bindings/dart/DartController.cpp b/Source/bindings/dart/DartController.cpp
|
| index a82f8451802e6e60c6cd0b6610625dd71e47f914..871cfdf4a8cc671d69e6a1e175fcdedf47045249 100644
|
| --- a/Source/bindings/dart/DartController.cpp
|
| +++ b/Source/bindings/dart/DartController.cpp
|
| @@ -244,7 +244,6 @@ Dart_Isolate DartController::createIsolate(const char* scriptURL, const char* en
|
| return isolate;
|
| }
|
|
|
| -
|
| void DartController::createDOMEnabledIsolateIfNeeded(const String& scriptURL, const String& entryPoint, Document* document)
|
| {
|
| if (m_isolate) {
|
| @@ -252,26 +251,16 @@ void DartController::createDOMEnabledIsolateIfNeeded(const String& scriptURL, co
|
| return;
|
| }
|
|
|
| + // Start the service.
|
| + bool result = DartService::Start(document);
|
| + UNUSED_PARAM(result);
|
| + ASSERT(result);
|
| + ASSERT(!Dart_CurrentIsolate());
|
| +
|
| // FIXME: proper error reporting.
|
| char* errorMessage = 0;
|
| m_isolate = createIsolate(scriptURL.utf8().data(), entryPoint.utf8().data(), document, true, &errorMessage);
|
| ASSERT(m_isolate);
|
| - if (getenv("DARTIUM_VMSERVICE")) {
|
| - // createIsolate exits with current isolate set to m_isolate, we need to
|
| - // exit it so we can startup the service.
|
| - Dart_ExitIsolate();
|
| -
|
| - bool result = DartService::Start(document);
|
| - UNUSED_PARAM(result);
|
| - ASSERT(result);
|
| - ASSERT(!Dart_CurrentIsolate());
|
| -
|
| - Dart_EnterIsolate(m_isolate);
|
| - Dart_EnterScope();
|
| - DartService::SendIsolateStartupMessage();
|
| - Dart_ExitScope();
|
| - }
|
| -
|
| }
|
|
|
| void DartController::shutdownIsolate(Dart_Isolate isolate)
|
| @@ -286,8 +275,6 @@ void DartController::shutdownIsolate(Dart_Isolate isolate)
|
| for (DartIsolateDestructionObservers::iterator it = observers->begin(); it != observers->end(); ++it)
|
| (*it)->isolateDestroyed();
|
| Dart_ShutdownIsolate();
|
| - // Stop the service.
|
| - DartService::Stop();
|
| delete domData;
|
| }
|
|
|
| @@ -410,6 +397,16 @@ private:
|
| String m_url;
|
| };
|
|
|
| +
|
| +Dart_Isolate DartController::createServiceIsolateCallback(void* callbackData, char** error)
|
| +{
|
| + Document* document = static_cast<Document*>(callbackData);
|
| + Dart_Isolate serviceIsolate = DartController::createIsolate("dart:vmservice_dartium", "main", document, true, error);
|
| + Dart_ExitIsolate();
|
| + return serviceIsolate;
|
| +}
|
| +
|
| +
|
| Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, const char* entryPoint, void* data, char** errorMsg)
|
| {
|
| bool isSpawnUri = scriptURL ? true : false;
|
| @@ -451,11 +448,6 @@ Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, co
|
| Document* document = static_cast<Document*>(context);
|
|
|
| Dart_Isolate isolate = createIsolate(scriptURL, entryPoint, document, false, errorMsg);
|
| - {
|
| - Dart_EnterScope();
|
| - DartService::SendIsolateStartupMessage();
|
| - Dart_ExitScope();
|
| - }
|
|
|
| if (!isolate) {
|
| // This triggers an exception in the caller.
|
| @@ -602,9 +594,8 @@ void DartController::initVMIfNeeded()
|
| setDartFlags(0);
|
| }
|
|
|
| - // FIXME(antonm): implement proper shutdown callback.
|
| // FIXME(antonm): implement proper unhandled exception callback.
|
| - Dart_Initialize(&createPureIsolateCallback, 0, 0, DartService::VmServiceShutdownCallback, openFileCallback, readFileCallback, writeFileCallback, closeFileCallback, generateEntropy);
|
| + Dart_Initialize(&createPureIsolateCallback, 0, 0, 0, openFileCallback, readFileCallback, writeFileCallback, closeFileCallback, generateEntropy, createServiceIsolateCallback);
|
| hasBeenInitialized = true;
|
| }
|
|
|
|
|