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

Unified Diff: sky/viewer/document_view.cc

Issue 958673002: Added ServiceRegistry interface (Closed) Base URL: https://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
Index: sky/viewer/document_view.cc
diff --git a/sky/viewer/document_view.cc b/sky/viewer/document_view.cc
index cb3e3edc1c07631a3770456edc2c64960076b7bb..8adb9930061c923b4c282f90621ec877580d7f10 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());
+ sp_impl->AddService(&view_manager_client_factory_);
+ mojo::ServiceProviderPtr sp;
+ service_registry_service_provider_binding_.reset(
+ new mojo::StrongBinding<mojo::ServiceProvider>(sp_impl, &sp));
+ service_registry_->AddServices(interface_names.Pass(), sp.Pass());
+}
+
} // namespace sky

Powered by Google App Engine
This is Rietveld 408576698