Index: sky/shell/ui/engine.cc |
diff --git a/sky/shell/ui/engine.cc b/sky/shell/ui/engine.cc |
index 705fc224b89228af99f811a7583a594c21546a4a..e28b55ee1448ac356759a114eb0587127d21a5ac 100644 |
--- a/sky/shell/ui/engine.cc |
+++ b/sky/shell/ui/engine.cc |
@@ -12,6 +12,7 @@ |
#include "sky/engine/public/web/WebSettings.h" |
#include "sky/engine/public/web/WebView.h" |
#include "sky/services/platform/platform_impl.h" |
+#include "sky/shell/java_service_provider.h" |
#include "sky/shell/ui/animator.h" |
#include "sky/shell/ui/input_event_converter.h" |
#include "sky/shell/ui/internals.h" |
@@ -32,7 +33,8 @@ void ConfigureSettings(blink::WebSettings* settings) { |
} |
Engine::Engine(const Config& config) |
- : animator_(new Animator(config, this)), |
+ : java_task_runner_(config.java_task_runner), |
+ animator_(new Animator(config, this)), |
web_view_(nullptr), |
device_pixel_ratio_(1.0f), |
viewport_observer_binding_(this), |
@@ -48,9 +50,17 @@ base::WeakPtr<Engine> Engine::GetWeakPtr() { |
return weak_factory_.GetWeakPtr(); |
} |
-void Engine::Init(mojo::ScopedMessagePipeHandle service_provider_handle) { |
- service_provider_ = |
- mojo::MakeProxy<mojo::ServiceProvider>(service_provider_handle.Pass()); |
+mojo::ServiceProviderPtr Engine::CreateServiceProvider() { |
+ mojo::MessagePipe pipe; |
+ java_task_runner_->PostTask(FROM_HERE, base::Bind( |
+ CreateJavaServiceProvider, |
+ base::Passed(mojo::MakeRequest<mojo::ServiceProvider>( |
+ pipe.handle1.Pass())))); |
+ return mojo::MakeProxy<mojo::ServiceProvider>(pipe.handle0.Pass()); |
+} |
+ |
+void Engine::Init() { |
+ service_provider_ = CreateServiceProvider(); |
mojo::NetworkServicePtr network_service; |
mojo::ConnectToService(service_provider_.get(), &network_service); |
platform_impl_.reset(new PlatformImpl(network_service.Pass())); |
@@ -144,7 +154,7 @@ void Engine::scheduleVisualUpdate() { |
void Engine::didCreateIsolate(blink::WebLocalFrame* frame, |
Dart_Isolate isolate) { |
- Internals::Create(isolate, service_provider_.Pass()); |
+ Internals::Create(isolate, CreateServiceProvider()); |
} |
blink::ServiceProvider* Engine::services() { |