Chromium Code Reviews| Index: Source/bindings/dart/DartController.cpp |
| diff --git a/Source/bindings/dart/DartController.cpp b/Source/bindings/dart/DartController.cpp |
| index ecbbfd9316979729d251191f755674f4fefbe168..663472de2b6c9077c320e30bc272554a936129ce 100644 |
| --- a/Source/bindings/dart/DartController.cpp |
| +++ b/Source/bindings/dart/DartController.cpp |
| @@ -254,19 +254,19 @@ void DartController::createDOMEnabledIsolateIfNeeded(const String& scriptURL, co |
| char* errorMessage = 0; |
| m_isolate = createIsolate(scriptURL.utf8().data(), entryPoint.utf8().data(), document, true, &errorMessage); |
| ASSERT(m_isolate); |
| - if (getenv("DARTIUM_VMSERVICE")) { |
| + if (true) { |
|
Jacob
2014/01/08 18:47:10
remove
if (true) {
Cutch
2014/01/10 21:34:26
Done.
|
| // createIsolate exits with current isolate set to m_isolate, we need to |
| // exit it so we can startup the service. |
| Dart_ExitIsolate(); |
| - |
| + // Start the service. |
| bool result = DartService::Start(document); |
| UNUSED_PARAM(result); |
| ASSERT(result); |
| ASSERT(!Dart_CurrentIsolate()); |
| - |
| + // Register DOM isolate with service. |
| Dart_EnterIsolate(m_isolate); |
| Dart_EnterScope(); |
| - DartService::SendIsolateStartupMessage(); |
| + Dart_RegisterWithService(); |
| Dart_ExitScope(); |
| } |
| @@ -284,8 +284,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; |
| } |
| @@ -408,6 +406,22 @@ private: |
| String m_url; |
| }; |
| + |
| +void DartController::shutdownIsolateCallback(void* data) |
|
Jacob
2014/01/08 18:47:10
The method name seems generic while the behavior i
Cutch
2014/01/10 21:34:26
This method was registered as the isolate shutdown
|
| +{ |
| + Dart_UnregisterFromService(); |
| +} |
| + |
|
siva
2014/01/10 00:10:13
See comment in other CL, we need to see if it make
|
| + |
| +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); |
|
Jacob
2014/01/08 18:47:10
As the package is internal only, change the name f
Cutch
2014/01/10 21:34:26
This isn't a library that a user could ever encoun
|
| + Dart_ExitIsolate(); |
| + return serviceIsolate; |
| +} |
| + |
| + |
| Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, const char* entryPoint, void* data, char** errorMsg) |
| { |
| bool isSpawnUri = scriptURL ? true : false; |
| @@ -451,7 +465,7 @@ Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, co |
| Dart_Isolate isolate = createIsolate(scriptURL, entryPoint, document, false, errorMsg); |
| { |
| Dart_EnterScope(); |
| - DartService::SendIsolateStartupMessage(); |
| + Dart_RegisterWithService(); |
| Dart_ExitScope(); |
| } |
| @@ -600,9 +614,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, shutdownIsolateCallback, openFileCallback, readFileCallback, writeFileCallback, closeFileCallback, generateEntropy, createServiceIsolateCallback); |
| hasBeenInitialized = true; |
| } |