Index: sky/shell/ui/internals.cc |
diff --git a/sky/shell/ui/internals.cc b/sky/shell/ui/internals.cc |
index 039c323a9012e835cb92f795463f3ff21ce0f286..e87b7520a05768458f5e57159452db7d2f23396e 100644 |
--- a/sky/shell/ui/internals.cc |
+++ b/sky/shell/ui/internals.cc |
@@ -29,6 +29,11 @@ Internals* GetInternals() { |
void NotifyTestComplete(Dart_NativeArguments args) { |
} |
+void TakeRootBundleHandle(Dart_NativeArguments args) { |
+ Dart_SetIntegerReturnValue( |
+ args, GetInternals()->TakeRootBundleHandle().value()); |
+} |
+ |
void TakeShellProxyHandle(Dart_NativeArguments args) { |
Dart_SetIntegerReturnValue(args, 0); |
} |
@@ -48,10 +53,11 @@ void TakeServiceRegistry(Dart_NativeArguments args) { |
const DartBuiltin::Natives kNativeFunctions[] = { |
{"notifyTestComplete", NotifyTestComplete, 1}, |
- {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
+ {"takeRootBundleHandle", TakeRootBundleHandle, 0}, |
+ {"takeServiceRegistry", TakeServiceRegistry, 0}, |
{"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, |
{"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, |
- {"takeServiceRegistry", TakeServiceRegistry, 0}, |
+ {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
}; |
const DartBuiltin& GetBuiltin() { |
@@ -75,17 +81,21 @@ const char kLibraryName[] = "dart:sky.internals"; |
} // namespace |
void Internals::Create(Dart_Isolate isolate, |
- mojo::ServiceProviderPtr service_provider) { |
+ mojo::ServiceProviderPtr service_provider, |
+ mojo::asset_bundle::AssetBundlePtr root_bundle) { |
DartState* state = DartState::From(isolate); |
- state->SetUserData(&kInternalsKey, new Internals(service_provider.Pass())); |
+ state->SetUserData(&kInternalsKey, new Internals(service_provider.Pass(), |
+ root_bundle.Pass())); |
Dart_Handle library = |
Dart_LookupLibrary(Dart_NewStringFromCString(kLibraryName)); |
CHECK(!LogIfError(library)); |
CHECK(!LogIfError(Dart_SetNativeResolver(library, Resolver, Symbolizer))); |
} |
-Internals::Internals(mojo::ServiceProviderPtr platform_service_provider) |
- : service_provider_impl_(GetProxy(&service_provider_)), |
+Internals::Internals(mojo::ServiceProviderPtr platform_service_provider, |
+ mojo::asset_bundle::AssetBundlePtr root_bundle) |
+ : root_bundle_(root_bundle.Pass()), |
+ service_provider_impl_(GetProxy(&service_provider_)), |
platform_service_provider_(platform_service_provider.Pass()) { |
service_provider_impl_.set_fallback_service_provider( |
platform_service_provider_.get()); |
@@ -106,5 +116,9 @@ mojo::Handle Internals::TakeServicesProvidedByEmbedder() { |
return service_provider_.PassInterface().PassHandle().release(); |
} |
+mojo::Handle Internals::TakeRootBundleHandle() { |
+ return root_bundle_.PassInterface().PassHandle().release(); |
+} |
+ |
} // namespace shell |
} // namespace sky |