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

Unified Diff: sky/engine/bindings/builtin_natives.cc

Issue 926163002: Program _uriBaseClosure into the DartVM (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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/bindings/builtin.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/bindings/builtin_natives.cc
diff --git a/sky/engine/bindings/builtin_natives.cc b/sky/engine/bindings/builtin_natives.cc
index 952c1b5aaa37d180bbfb0270c303d42a8c51ec3c..afe3c3d37e2d58a7a78c0119faeee90377af294e 100644
--- a/sky/engine/bindings/builtin_natives.cc
+++ b/sky/engine/bindings/builtin_natives.cc
@@ -36,6 +36,7 @@ namespace blink {
#define BUILTIN_NATIVE_LIST(V) \
V(Logger_PrintString, 1) \
V(ScheduleMicrotask, 1) \
+ V(GetBaseURLString, 0) \
V(Timer_create, 3) \
V(Timer_cancel, 1)
@@ -101,7 +102,14 @@ static void InitDartInternal(Dart_Handle builtin_library) {
DART_CHECK_VALID(Dart_SetField(vm_hooks, timer_name, timer));
}
-static void InitAsync(Dart_Handle builtin_library) {
+static void InitDartCore(Dart_Handle builtin) {
+ Dart_Handle get_base_url = GetClosure(builtin, "_getGetBaseURLClosure");
+ Dart_Handle core_library = DartBuiltin::LookupLibrary("dart:core");
+ DART_CHECK_VALID(Dart_SetField(core_library,
+ ToDart("_uriBaseClosure"), get_base_url));
+}
+
+static void InitDartAsync(Dart_Handle builtin_library) {
Dart_Handle schedule_microtask =
GetClosure(builtin_library, "_getScheduleMicrotaskClosure");
Dart_Handle async_library = DartBuiltin::LookupLibrary("dart:async");
@@ -114,7 +122,8 @@ void BuiltinNatives::Init() {
Dart_Handle builtin = Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
DART_CHECK_VALID(builtin);
InitDartInternal(builtin);
- InitAsync(builtin);
+ InitDartCore(builtin);
+ InitDartAsync(builtin);
}
// Implementation of native functions which are used for some
@@ -157,6 +166,11 @@ void ScheduleMicrotask(Dart_NativeArguments args) {
dart_state->GetWeakPtr(), DartValue::Create(dart_state, closure)));
}
+void GetBaseURLString(Dart_NativeArguments args) {
+ String url = DOMDartState::CurrentDocument()->url().string();
+ Dart_SetReturnValue(args, StringToDart(DartState::Current(), url));
+}
+
void Timer_create(Dart_NativeArguments args) {
int64_t milliseconds = 0;
DART_CHECK_VALID(Dart_GetNativeIntegerArgument(args, 0, &milliseconds));
« no previous file with comments | « sky/engine/bindings/builtin.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698