| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sky/engine/config.h" | 5 #include "sky/engine/config.h" |
| 6 #include "sky/engine/core/script/dart_controller.h" | 6 #include "sky/engine/core/script/dart_controller.h" |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 DartState* dart_state = new DartState(); | 192 DartState* dart_state = new DartState(); |
| 193 Dart_Isolate isolate = Dart_CreateIsolate("sky:handle_watcher", "", | 193 Dart_Isolate isolate = Dart_CreateIsolate("sky:handle_watcher", "", |
| 194 kDartSnapshotBuffer, dart_state, error); | 194 kDartSnapshotBuffer, dart_state, error); |
| 195 CHECK(isolate) << error; | 195 CHECK(isolate) << error; |
| 196 dart_state->set_isolate(isolate); | 196 dart_state->set_isolate(isolate); |
| 197 | 197 |
| 198 CHECK(!LogIfError(Dart_SetLibraryTagHandler(LibraryTagHandler))); | 198 CHECK(!LogIfError(Dart_SetLibraryTagHandler(LibraryTagHandler))); |
| 199 | 199 |
| 200 { | 200 { |
| 201 DartApiScope apiScope; | 201 DartApiScope apiScope; |
| 202 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); | 202 Builtin::PrepareLibrary(Builtin::kBuiltinLibrary); |
| 203 Builtin::SetNativeResolver(Builtin::kMojoCoreLibrary); | 203 Builtin::PrepareLibrary(Builtin::kMojoCoreLibrary); |
| 204 } | 204 } |
| 205 | 205 |
| 206 Dart_ExitIsolate(); | 206 Dart_ExitIsolate(); |
| 207 | 207 |
| 208 CHECK(Dart_IsolateMakeRunnable(isolate)); | 208 CHECK(Dart_IsolateMakeRunnable(isolate)); |
| 209 return isolate; | 209 return isolate; |
| 210 } | 210 } |
| 211 | 211 |
| 212 static void CallHandleMessage(base::WeakPtr<DartState> dart_state) { | 212 static void CallHandleMessage(base::WeakPtr<DartState> dart_state) { |
| 213 if (!dart_state) | 213 if (!dart_state) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 224 base::Bind(&CallHandleMessage, DartState::From(dest_isolate)->GetWeakPtr()
)); | 224 base::Bind(&CallHandleMessage, DartState::From(dest_isolate)->GetWeakPtr()
)); |
| 225 } | 225 } |
| 226 | 226 |
| 227 static void EnsureHandleWatcherStarted() { | 227 static void EnsureHandleWatcherStarted() { |
| 228 static bool handle_watcher_started = false; | 228 static bool handle_watcher_started = false; |
| 229 if (handle_watcher_started) | 229 if (handle_watcher_started) |
| 230 return; | 230 return; |
| 231 | 231 |
| 232 // TODO(dart): Call Dart_Cleanup (ensure the handle watcher isolate is closed) | 232 // TODO(dart): Call Dart_Cleanup (ensure the handle watcher isolate is closed) |
| 233 // during shutdown. | 233 // during shutdown. |
| 234 Dart_Handle mojo_core_lib = | 234 Dart_Handle mojo_core_lib = Builtin::GetLibrary(Builtin::kMojoCoreLibrary); |
| 235 Builtin::LoadAndCheckLibrary(Builtin::kMojoCoreLibrary); | |
| 236 CHECK(!LogIfError((mojo_core_lib))); | 235 CHECK(!LogIfError((mojo_core_lib))); |
| 237 Dart_Handle handle_watcher_type = Dart_GetType( | 236 Dart_Handle handle_watcher_type = Dart_GetType( |
| 238 mojo_core_lib, | 237 mojo_core_lib, |
| 239 Dart_NewStringFromCString("MojoHandleWatcher"), | 238 Dart_NewStringFromCString("MojoHandleWatcher"), |
| 240 0, | 239 0, |
| 241 nullptr); | 240 nullptr); |
| 242 CHECK(!LogIfError(handle_watcher_type)); | 241 CHECK(!LogIfError(handle_watcher_type)); |
| 243 CHECK(!LogIfError(Dart_Invoke( | 242 CHECK(!LogIfError(Dart_Invoke( |
| 244 handle_watcher_type, | 243 handle_watcher_type, |
| 245 Dart_NewStringFromCString("_start"), | 244 Dart_NewStringFromCString("_start"), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 261 static_cast<DartState*>(dom_dart_state_.get()), &error); | 260 static_cast<DartState*>(dom_dart_state_.get()), &error); |
| 262 Dart_SetMessageNotifyCallback(MessageNotifyCallback); | 261 Dart_SetMessageNotifyCallback(MessageNotifyCallback); |
| 263 CHECK(isolate) << error; | 262 CHECK(isolate) << error; |
| 264 dom_dart_state_->set_isolate(isolate); | 263 dom_dart_state_->set_isolate(isolate); |
| 265 Dart_SetGcCallbacks(DartGCPrologue, DartGCEpilogue); | 264 Dart_SetGcCallbacks(DartGCPrologue, DartGCEpilogue); |
| 266 CHECK(!LogIfError(Dart_SetLibraryTagHandler(LibraryTagHandler))); | 265 CHECK(!LogIfError(Dart_SetLibraryTagHandler(LibraryTagHandler))); |
| 267 | 266 |
| 268 { | 267 { |
| 269 DartApiScope apiScope; | 268 DartApiScope apiScope; |
| 270 | 269 |
| 271 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); | 270 Builtin::PrepareLibrary(Builtin::kBuiltinLibrary); |
| 272 Builtin::SetNativeResolver(Builtin::kMojoCoreLibrary); | 271 Builtin::PrepareLibrary(Builtin::kMojoCoreLibrary); |
| 273 BuiltinNatives::Init(); | 272 BuiltinNatives::Init(); |
| 274 | 273 |
| 275 builtin_sky_ = adoptPtr(new BuiltinSky(dart_state())); | 274 builtin_sky_ = adoptPtr(new BuiltinSky(dart_state())); |
| 276 dart_state()->class_library().set_provider(builtin_sky_.get()); | 275 dart_state()->class_library().set_provider(builtin_sky_.get()); |
| 277 builtin_sky_->InstallWindow(dart_state()); | 276 builtin_sky_->InstallWindow(dart_state()); |
| 278 | 277 |
| 279 document->frame()->loaderClient()->didCreateIsolate(isolate); | 278 document->frame()->loaderClient()->didCreateIsolate(isolate); |
| 280 | 279 |
| 281 EnsureHandleWatcherStarted(); | 280 EnsureHandleWatcherStarted(); |
| 282 } | 281 } |
| (...skipping 18 matching lines...) Expand all Loading... |
| 301 | 300 |
| 302 CHECK(Dart_SetVMFlags(argc, argv)); | 301 CHECK(Dart_SetVMFlags(argc, argv)); |
| 303 CHECK(Dart_Initialize(IsolateCreateCallback, | 302 CHECK(Dart_Initialize(IsolateCreateCallback, |
| 304 nullptr, // Isolate interrupt callback. | 303 nullptr, // Isolate interrupt callback. |
| 305 UnhandledExceptionCallback, IsolateShutdownCallback, | 304 UnhandledExceptionCallback, IsolateShutdownCallback, |
| 306 // File IO callbacks. | 305 // File IO callbacks. |
| 307 nullptr, nullptr, nullptr, nullptr, nullptr)); | 306 nullptr, nullptr, nullptr, nullptr, nullptr)); |
| 308 } | 307 } |
| 309 | 308 |
| 310 } // namespace blink | 309 } // namespace blink |
| OLD | NEW |