| 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));
|
|
|