Chromium Code Reviews| Index: sky/viewer/document_view.cc |
| diff --git a/sky/viewer/document_view.cc b/sky/viewer/document_view.cc |
| index cb3e3edc1c07631a3770456edc2c64960076b7bb..8a45b52d71b1f0ce2c3ed2df6b54d1bdae5ebe77 100644 |
| --- a/sky/viewer/document_view.cc |
| +++ b/sky/viewer/document_view.cc |
| @@ -103,6 +103,7 @@ DocumentView::DocumentView( |
| mojo::Shell* shell) |
| : response_(response.Pass()), |
| exported_services_(services.Pass()), |
| + imported_services_(exported_services.Pass()), |
| shell_(shell), |
| web_view_(nullptr), |
| root_(nullptr), |
| @@ -110,6 +111,7 @@ DocumentView::DocumentView( |
| bitmap_rasterizer_(nullptr), |
| weak_factory_(this) { |
| exported_services_.AddService(&view_manager_client_factory_); |
| + InitServiceRegistry(); |
| } |
| DocumentView::~DocumentView() { |
| @@ -194,6 +196,10 @@ mojo::ScopedMessagePipeHandle DocumentView::TakeServicesProvidedByEmbedder() { |
| return services_provided_by_embedder_.PassMessagePipe(); |
| } |
| +mojo::ScopedMessagePipeHandle DocumentView::TakeServiceRegistry() { |
| + return service_registry_.PassMessagePipe(); |
| +} |
| + |
| mojo::Shell* DocumentView::GetShell() { |
| return shell_; |
| } |
| @@ -360,4 +366,16 @@ void DocumentView::StartDebuggerInspectorBackend() { |
| // FIXME: Do we need this for dart? |
| } |
| +void DocumentView::InitServiceRegistry() { |
| + mojo::ConnectToService(imported_services_.get(), &service_registry_); |
| + mojo::Array<mojo::String> interface_names(1); |
| + interface_names[0] = "ViewManagerClient"; |
| + mojo::ServiceProviderImpl* sp_impl(new mojo::ServiceProviderImpl()); |
|
abarth-chromium
2015/02/26 23:28:04
scoped_ptr?
|
| + sp_impl->AddService(&view_manager_client_factory_); |
| + mojo::ServiceProviderPtr sp; |
| + service_registry_service_provider_binding_.reset( |
| + new mojo::Binding<mojo::ServiceProvider>(sp_impl, &sp)); |
|
abarth-chromium
2015/02/26 23:28:04
StrongBinding?
Doesn't sp_impl leak in this code?
hansmuller1
2015/02/27 03:16:06
I made the binding a StrongBinding which deletes t
|
| + service_registry_->AddServices(interface_names.Pass(), sp.Pass()); |
| +} |
| + |
| } // namespace sky |