Chromium Code Reviews| Index: Source/bindings/dart/DartController.cpp |
| diff --git a/Source/bindings/dart/DartController.cpp b/Source/bindings/dart/DartController.cpp |
| index 116e9890bfe80de7c3f1f805ea3aaf50407fe161..7a024139b73b78377f55ba480a17e704e28f2baf 100644 |
| --- a/Source/bindings/dart/DartController.cpp |
| +++ b/Source/bindings/dart/DartController.cpp |
| @@ -350,10 +350,11 @@ private: |
| Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, const char* entryPoint, void* data, char** errorMsg) |
| { |
| - bool needAsyncLoader = false; |
| + bool isSpawnUri = false; |
| { |
| DartApiScope apiScope; |
| + // FIXME: http://dartbug.com/13920 |
| // Hacky way to find out if it's spawnFunction or spawnUri. |
| Dart_Handle parentIsolateRootLibrary = Dart_RootLibrary(); |
| if (Dart_IsError(parentIsolateRootLibrary)) { |
| @@ -372,11 +373,17 @@ Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, co |
| return 0; |
| } |
| - needAsyncLoader = strcmp(scriptURL, parentIsolateURL); |
| + isSpawnUri = strcmp(scriptURL, parentIsolateURL); |
| } |
| DartDOMData* parentDOMData = static_cast<DartDOMData*>(data); |
| ScriptExecutionContext* context = parentDOMData->scriptExecutionContext(); |
| + |
| + if (parentDOMData->isDOMEnabled() && !isSpawnUri) { |
| + // spawnFunction is not allowed from a DOM enabled isolate |
| + DartUtilities::reportProblem(context, "spawnFunction is not supported from a dom-enabled isolate. Please use spawnUri instead."); |
|
ricow1
2013/10/11 11:08:37
Why don't we throw an exception here? This is mess
|
| + } |
| + |
| ASSERT(context->isDocument()); |
| Document* document = static_cast<Document*>(context); |
| @@ -384,7 +391,7 @@ Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, co |
| if (!isolate) |
| return 0; |
| - if (needAsyncLoader) { |
| + if (isSpawnUri) { |
| // We need to request the sources asynchronously. |
| RefPtr<DartSpawnLoadCallback> callback = adoptRef(new DartSpawnLoadCallback(isolate, scriptURL, document)); |
| // A DartAsyncLoader will delete itself once all resources are fetched. |