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

Unified Diff: runtime/bin/dartutils.cc

Issue 1916793003: - Allow for loading dart:html and friends into the standalone (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Review comments. Created 4 years, 8 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: runtime/bin/dartutils.cc
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index 396b116fdd6d6dadb4b3fff83cba50a42d8796e2..b5a784cbf4c3f15e81ef8b0e8e410472676cac69 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -41,6 +41,7 @@ const char* const DartUtils::kInternalLibURL = "dart:_internal";
const char* const DartUtils::kIsolateLibURL = "dart:isolate";
const char* const DartUtils::kIOLibURL = "dart:io";
const char* const DartUtils::kIOLibPatchURL = "dart:io-patch";
+const char* const DartUtils::kHTMLLibURL = "dart:html";
siva 2016/04/25 23:38:31 Ditto.
Ivan Posva 2016/04/26 21:17:43 Done.
const char* const DartUtils::kUriLibURL = "dart:uri";
const char* const DartUtils::kHttpScheme = "http:";
const char* const DartUtils::kVMServiceLibURL = "dart:vmservice";
@@ -395,37 +396,37 @@ Dart_Handle DartUtils::LibraryTagHandler(Dart_LibraryTag tag,
}
bool is_dart_scheme_url = DartUtils::IsDartSchemeURL(url_string);
- bool is_io_library = DartUtils::IsDartIOLibURL(library_url_string);
+ bool is_dart_library = DartUtils::IsDartSchemeURL(library_url_string);
// Handle URI canonicalization requests.
if (tag == Dart_kCanonicalizeUrl) {
// If this is a Dart Scheme URL or 'part' of a io library
siva 2016/04/25 23:38:31 Comment needs to change from io library to 'part'
Ivan Posva 2016/04/26 21:17:43 Done.
// then it is not modified as it will be handled internally.
- if (is_dart_scheme_url || is_io_library) {
+ if (is_dart_scheme_url || is_dart_library) {
return url;
}
// Resolve the url within the context of the library's URL.
return ResolveUri(library_url, url);
}
- // Handle 'import' of dart scheme URIs (i.e they start with 'dart:').
- if (is_dart_scheme_url) {
+ // Handle 'import' and 'part' of dart scheme URIs (i.e. they
+ // start with 'dart:').
+ if (is_dart_scheme_url || is_dart_library) {
if (tag == Dart_kImportTag) {
- // Handle imports of other built-in libraries present in the SDK.
- if (DartUtils::IsDartIOLibURL(url_string)) {
- return Builtin::LoadLibrary(url, Builtin::kIOLibrary);
+ Builtin::BuiltinLibraryId id = Builtin::FindId(url_string);
+ if (id == Builtin::kInvalidLibrary) {
+ return NewError("The built-in library '%s' is not available"
+ " on the stand-alone VM.\n", url_string);
}
siva 2016/04/25 23:38:31 This FindId part can be hoisted out of the if (...
Ivan Posva 2016/05/03 21:46:40 Unfortunately not as for one case you are looking
- return NewError("The built-in library '%s' is not available"
- " on the stand-alone VM.\n", url_string);
+ return Builtin::LoadLibrary(url, id);
} else {
ASSERT(tag == Dart_kSourceTag);
- return NewError("Unable to load source '%s' ", url_string);
- }
- }
-
- // Handle 'part' of IO library.
- if (is_io_library) {
- if (tag == Dart_kSourceTag) {
+ Builtin::BuiltinLibraryId id = Builtin::FindId(library_url_string);
+ if (id == Builtin::kInvalidLibrary) {
+ return NewError("The built-in library '%s' is not available"
+ " on the stand-alone VM. Trying to load"
+ " '%s'.\n", library_url_string, url_string);
+ }
// Prepend the library URI to form a unique script URI for the part.
intptr_t len = snprintf(NULL, 0, "%s/%s", library_url_string, url_string);
char* part_uri = reinterpret_cast<char*>(malloc(len + 1));
@@ -433,15 +434,17 @@ Dart_Handle DartUtils::LibraryTagHandler(Dart_LibraryTag tag,
Dart_Handle part_uri_obj = DartUtils::NewString(part_uri);
free(part_uri);
return Dart_LoadSource(
- library,
- part_uri_obj,
- Builtin::PartSource(Builtin::kIOLibrary, url_string), 0, 0);
- } else {
- ASSERT(tag == Dart_kImportTag);
- return NewError("Unable to import '%s' ", url_string);
+ library,
+ part_uri_obj,
+ Builtin::PartSource(id, url_string), 0, 0);
}
}
+ // Handle 'part' of dart: library being supplied by the embedder.
+ if (is_dart_library) {
+ UNREACHABLE();
+ }
siva 2016/04/25 23:38:31 This is not needed right?
Ivan Posva 2016/04/26 21:17:43 Refactored this code here and above...
+
if (DartUtils::IsDartExtensionSchemeURL(url_string)) {
// Load a native code shared library to use in a native extension
if (tag != Dart_kImportTag) {

Powered by Google App Engine
This is Rietveld 408576698