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

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 2059883003: DevFS initial implementation (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
Index: runtime/vm/dart_api_impl.cc
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 254d829e5bfcc3b60beeaed579d4231348b05583..b3ff7b749a7805b26a3d1fe4b1576ad0391fc160 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -16,6 +16,7 @@
#include "vm/dart_api_state.h"
#include "vm/dart_entry.h"
#include "vm/debugger.h"
+#include "vm/dev_fs.h"
#include "vm/exceptions.h"
#include "vm/flags.h"
#include "vm/growable_array.h"
@@ -5895,6 +5896,80 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id,
}
+DART_EXPORT bool Dart_IsDevFSUri(Dart_Handle uri) {
+ DARTSCOPE(Thread::Current());
+ const String& uri_string = Api::UnwrapStringHandle(Z, uri);
+ if (uri_string.IsNull()) {
+ return false;
+ }
+ ParsedUri parsed_uri;
+ if (!ParseUri(uri_string.ToCString(), &parsed_uri)) {
+ return false;
+ }
+ if ((parsed_uri.scheme == NULL) ||
+ (strcmp(parsed_uri.scheme, "dart-devfs") != 0)) {
+ return false;
+ }
+ return true;
+}
+
+
+DART_EXPORT Dart_Handle Dart_DevFSReadFile(Dart_Handle uri) {
+ DARTSCOPE(Thread::Current());
+ const String& uri_string = Api::UnwrapStringHandle(Z, uri);
+ if (uri_string.IsNull()) {
+ RETURN_TYPE_ERROR(Z, uri, String);
+ }
+ ParsedUri parsed_uri;
+ if (!ParseUri(uri_string.ToCString(), &parsed_uri)) {
+ return Api::NewError("%s: Unable to parse uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if ((parsed_uri.scheme == NULL) ||
+ (strcmp(parsed_uri.scheme, "dart-devfs") != 0)) {
+ return Api::NewError("%s: Not a dart-devfs uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if (parsed_uri.host == NULL) {
+ return Api::NewError("%s: Invalid dart-devfs uri '%s'.",
turnidge 2016/06/10 18:45:34 Make error message better. "No authority specified
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if (parsed_uri.path == NULL) {
+ return Api::NewError("%s: No path specified in dart-devfs uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ return DevFS::ReadFile(parsed_uri.host, parsed_uri.path);
+}
+
+
+DART_EXPORT Dart_Handle Dart_DevFSReadFileAsUTF8String(Dart_Handle uri) {
+ DARTSCOPE(Thread::Current());
+ const String& uri_string = Api::UnwrapStringHandle(Z, uri);
+ if (uri_string.IsNull()) {
+ RETURN_TYPE_ERROR(Z, uri, String);
+ }
+ ParsedUri parsed_uri;
+ if (!ParseUri(uri_string.ToCString(), &parsed_uri)) {
+ return Api::NewError("%s: Unable to parse uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if ((parsed_uri.scheme == NULL) ||
+ (strcmp(parsed_uri.scheme, "dart-devfs") != 0)) {
+ return Api::NewError("%s: Not a dart-devfs uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if (parsed_uri.host == NULL) {
+ return Api::NewError("%s: Invalid dart-devfs uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ if (parsed_uri.path == NULL) {
+ return Api::NewError("%s: No path specified in dart-devfs uri '%s'.",
+ CURRENT_FUNC, uri_string.ToCString());
+ }
+ return DevFS::ReadFileAsString(parsed_uri.host, parsed_uri.path);
+}
+
+
DART_EXPORT int64_t Dart_TimelineGetMicros() {
return OS::GetCurrentMonotonicMicros();
}

Powered by Google App Engine
This is Rietveld 408576698