Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Unified Diff: Source/bindings/dart/DartController.cpp

Issue 128733002: Refactor service usage in Dartium (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/1700
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698