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

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

Issue 1203143004: Make it possible to run Sky apps offline (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: gn check Created 5 years, 6 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
« no previous file with comments | « sky/engine/core/script/dart_controller.h ('k') | sky/engine/core/script/dart_library_provider_network.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1be5dd9f89914ce268db94d8b7bff23122e82b1f..f12119736a7e871e90073b41bfe6b1a57e8a8ddd 100644
--- a/sky/engine/core/script/dart_controller.cc
+++ b/sky/engine/core/script/dart_controller.cc
@@ -23,7 +23,7 @@
#include "sky/engine/core/html/imports/HTMLImportChild.h"
#include "sky/engine/core/loader/FrameLoaderClient.h"
#include "sky/engine/core/script/dart_debugger.h"
-#include "sky/engine/core/script/dart_library_provider_network.h"
+#include "sky/engine/core/script/dart_library_provider_webview.h"
#include "sky/engine/core/script/dart_service_isolate.h"
#include "sky/engine/core/script/dom_dart_state.h"
#include "sky/engine/public/platform/Platform.h"
@@ -50,18 +50,6 @@ void CreateEmptyRootLibraryIfNeeded() {
}
}
-PassOwnPtr<DartLibraryProviderNetwork::PrefetchedLibrary>
-CreatePrefetchedLibraryIfNeeded(const KURL& url,
- mojo::URLResponsePtr response) {
- OwnPtr<DartLibraryProviderNetwork::PrefetchedLibrary> prefetched;
- if (response && response->status_code == 200) {
- prefetched = adoptPtr(new DartLibraryProviderNetwork::PrefetchedLibrary());
- prefetched->name = url.string();
- prefetched->pipe = response->body.Pass();
- }
- return prefetched.release();
-}
-
} // namespace
#if ENABLE(DART_STRICT)
@@ -133,37 +121,20 @@ Dart_Handle DartController::CreateLibrary(AbstractModule* module,
return library;
}
-void DartController::DidLoadMainLibrary(KURL url) {
+void DartController::DidLoadMainLibrary(String name) {
DCHECK(Dart_CurrentIsolate() == dart_state()->isolate());
DartApiScope dart_api_scope;
if (LogIfError(Dart_FinalizeLoading(true)))
return;
- Dart_Handle library = Dart_LookupLibrary(
- StringToDart(dart_state(), url.string()));
+ Dart_Handle library = Dart_LookupLibrary(StringToDart(dart_state(), name));
// TODO(eseidel): We need to load a 404 page instead!
if (LogIfError(library))
return;
DartInvokeAppField(library, ToDart("main"), 0, nullptr);
}
-void DartController::LoadMainLibrary(const KURL& url, mojo::URLResponsePtr response) {
- DartState::Scope scope(dart_state());
- CreateEmptyRootLibraryIfNeeded();
-
- library_provider_ = adoptPtr(new DartLibraryProviderNetwork(
- CreatePrefetchedLibraryIfNeeded(url, response.Pass())));
-
- DartLibraryLoader& loader = dart_state()->library_loader();
- loader.set_library_provider(library_provider_.get());
-
- DartDependencyCatcher dependency_catcher(loader);
- loader.LoadLibrary(url.string());
- loader.WaitForDependencies(dependency_catcher.dependencies(),
- base::Bind(&DartController::DidLoadMainLibrary, weak_factory_.GetWeakPtr(), url));
-}
-
void DartController::DidLoadSnapshot() {
DCHECK(Dart_CurrentIsolate() == nullptr);
snapshot_loader_ = nullptr;
@@ -185,6 +156,21 @@ void DartController::LoadSnapshot(const KURL& url, mojo::URLResponsePtr response
base::Bind(&DartController::DidLoadSnapshot, weak_factory_.GetWeakPtr()));
}
+void DartController::RunFromLibrary(const String& name,
+ DartLibraryProvider* library_provider) {
+ DartState::Scope scope(dart_state());
+ CreateEmptyRootLibraryIfNeeded();
+
+ DartLibraryLoader& loader = dart_state()->library_loader();
+ loader.set_library_provider(library_provider);
+
+ DartDependencyCatcher dependency_catcher(loader);
+ loader.LoadLibrary(name);
+ loader.WaitForDependencies(dependency_catcher.dependencies(),
+ base::Bind(&DartController::DidLoadMainLibrary,
+ weak_factory_.GetWeakPtr(), name));
+}
+
void DartController::LoadScriptInModule(
AbstractModule* module,
const String& source,
@@ -196,7 +182,7 @@ void DartController::LoadScriptInModule(
DartLibraryLoader& loader = dart_state()->library_loader();
if (!library_provider_) {
- library_provider_ = adoptPtr(new DartLibraryProviderNetwork(nullptr));
+ library_provider_ = adoptPtr(new DartLibraryProviderWebView());
loader.set_library_provider(library_provider_.get());
}
@@ -381,9 +367,8 @@ void DartController::CreateIsolateFor(PassOwnPtr<DOMDartState> state) {
char* error = nullptr;
dom_dart_state_ = state;
Dart_Isolate isolate = Dart_CreateIsolate(
- dom_dart_state_->url().string().utf8().data(), "main",
- kDartIsolateSnapshotBuffer, nullptr,
- static_cast<DartState*>(dom_dart_state_.get()), &error);
+ dom_dart_state_->url().utf8().data(), "main", kDartIsolateSnapshotBuffer,
+ nullptr, static_cast<DartState*>(dom_dart_state_.get()), &error);
Dart_SetMessageNotifyCallback(MessageNotifyCallback);
CHECK(isolate) << error;
dom_dart_state_->SetIsolate(isolate);
« no previous file with comments | « sky/engine/core/script/dart_controller.h ('k') | sky/engine/core/script/dart_library_provider_network.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698