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

Unified Diff: sky/engine/core/script/dart_controller.cc

Issue 1130353009: Teach SkyView how to load the main script (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 7 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: sky/engine/core/script/dart_controller.cc
diff --git a/sky/engine/core/script/dart_controller.cc b/sky/engine/core/script/dart_controller.cc
index e03cb3435de57e626d29c91ecb6e5e2abd3ae53e..b0b1639438d308ad14b950e83a1418d6fab395e8 100644
--- a/sky/engine/core/script/dart_controller.cc
+++ b/sky/engine/core/script/dart_controller.cc
@@ -52,7 +52,7 @@ static const char* kCheckedModeArgs[] = {
extern const uint8_t* kDartVmIsolateSnapshotBuffer;
extern const uint8_t* kDartIsolateSnapshotBuffer;
-DartController::DartController() {
+DartController::DartController() : weak_factory_(this) {
}
DartController::~DartController() {
@@ -107,6 +107,24 @@ Dart_Handle DartController::CreateLibrary(AbstractModule* module,
return library;
}
+void DartController::DidLoadMainLibrary(KURL url) {
+ DCHECK(Dart_CurrentIsolate() == dart_state()->isolate());
+ DartApiScope dart_api_scope;
+
+ Dart_Handle library = Dart_LookupLibrary(
+ StringToDart(dart_state(), url.string()));
+ CHECK(!LogIfError(library));
+ DartInvokeAppField(library, ToDart("main"), 0, nullptr);
+}
+
+void DartController::LoadMainLibrary(const KURL& url) {
+ DartLoader& loader = dart_state()->loader();
+ DartDependencyCatcher dependency_catcher(loader);
+ loader.LoadLibrary(url);
+ loader.WaitForDependencies(dependency_catcher.dependencies(),
+ base::Bind(&DartController::DidLoadMainLibrary, weak_factory_.GetWeakPtr(), url));
+}
+
void DartController::LoadScriptInModule(
AbstractModule* module,
const String& source,

Powered by Google App Engine
This is Rietveld 408576698