Index: mojo/services/public/cpp/view_manager/lib/node.cc |
diff --git a/mojo/services/public/cpp/view_manager/lib/node.cc b/mojo/services/public/cpp/view_manager/lib/node.cc |
index 738a5be97c4750e9f6db3e5e53282d1cc65e7297..f313d8aed26468ef75a9f394d378a74a03bafcd4 100644 |
--- a/mojo/services/public/cpp/view_manager/lib/node.cc |
+++ b/mojo/services/public/cpp/view_manager/lib/node.cc |
@@ -4,6 +4,7 @@ |
#include "mojo/services/public/cpp/view_manager/node.h" |
+#include "mojo/public/cpp/application/service_provider_impl.h" |
#include "mojo/services/public/cpp/view_manager/lib/node_private.h" |
#include "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.h" |
#include "mojo/services/public/cpp/view_manager/lib/view_private.h" |
@@ -336,6 +337,21 @@ void Node::Embed(const String& url) { |
static_cast<ViewManagerClientImpl*>(manager_)->Embed(url, id_); |
} |
+scoped_ptr<ServiceProvider> |
+ Node::Embed(const String& url, |
+ scoped_ptr<ServiceProviderImpl> exported_services) { |
+ scoped_ptr<ServiceProvider> imported_services; |
+ // BindToProxy() takes ownership of |exported_services|. |
+ ServiceProviderImpl* registry = exported_services.release(); |
+ ServiceProviderPtr sp; |
+ if (registry) { |
+ BindToProxy(registry, &sp); |
+ imported_services.reset(exported_services->CreateRemoteServiceProvider()); |
+ } |
+ static_cast<ViewManagerClientImpl*>(manager_)->Embed(url, id_, sp.Pass()); |
+ return imported_services.Pass(); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// Node, protected: |