| Index: mojo/services/view_manager/root_node_manager.cc
|
| diff --git a/mojo/services/view_manager/root_node_manager.cc b/mojo/services/view_manager/root_node_manager.cc
|
| index 2381db75f94779bf0008823d4878e2d6b98a0ccb..d9ed9fe31da3cbebef7802157048a9efa6f23da0 100644
|
| --- a/mojo/services/view_manager/root_node_manager.cc
|
| +++ b/mojo/services/view_manager/root_node_manager.cc
|
| @@ -86,20 +86,27 @@ void RootNodeManager::RemoveConnection(ViewManagerServiceImpl* connection) {
|
| }
|
| }
|
|
|
| -void RootNodeManager::EmbedRoot(const std::string& url) {
|
| +void RootNodeManager::EmbedRoot(
|
| + const std::string& url,
|
| + InterfaceRequest<ServiceProvider> service_provider) {
|
| if (connection_map_.empty()) {
|
| - EmbedImpl(kInvalidConnectionId, String::From(url), RootNodeId());
|
| + EmbedImpl(kInvalidConnectionId, String::From(url), RootNodeId(),
|
| + service_provider.Pass());
|
| return;
|
| }
|
| ViewManagerServiceImpl* connection = GetConnection(kWindowManagerConnection);
|
| - connection->client()->Embed(url);
|
| + connection->client()->Embed(url, service_provider.Pass());
|
| }
|
|
|
| -void RootNodeManager::Embed(ConnectionSpecificId creator_id,
|
| - const String& url,
|
| - Id transport_node_id) {
|
| - EmbedImpl(creator_id, url, NodeIdFromTransportId(transport_node_id))->
|
| - set_delete_on_connection_error();
|
| +void RootNodeManager::Embed(
|
| + ConnectionSpecificId creator_id,
|
| + const String& url,
|
| + Id transport_node_id,
|
| + InterfaceRequest<ServiceProvider> service_provider) {
|
| + EmbedImpl(creator_id,
|
| + url,
|
| + NodeIdFromTransportId(transport_node_id),
|
| + service_provider.Pass())->set_delete_on_connection_error();
|
| }
|
|
|
| ViewManagerServiceImpl* RootNodeManager::GetConnection(
|
| @@ -244,12 +251,13 @@ void RootNodeManager::FinishChange() {
|
| ViewManagerServiceImpl* RootNodeManager::EmbedImpl(
|
| const ConnectionSpecificId creator_id,
|
| const String& url,
|
| - const NodeId& root_id) {
|
| + const NodeId& root_id,
|
| + InterfaceRequest<ServiceProvider> service_provider) {
|
| MessagePipe pipe;
|
|
|
| - ServiceProvider* service_provider =
|
| + ServiceProvider* view_manager_service_provider =
|
| app_connection_->ConnectToApplication(url)->GetServiceProvider();
|
| - service_provider->ConnectToService(
|
| + view_manager_service_provider->ConnectToService(
|
| ViewManagerServiceImpl::Client::Name_,
|
| pipe.handle1.Pass());
|
|
|
| @@ -263,7 +271,8 @@ ViewManagerServiceImpl* RootNodeManager::EmbedImpl(
|
| creator_id,
|
| creator_url,
|
| url.To<std::string>(),
|
| - root_id);
|
| + root_id,
|
| + service_provider.Pass());
|
| WeakBindToPipe(connection, pipe.handle0.Pass());
|
| connections_created_by_connect_.insert(connection);
|
| OnConnectionMessagedClient(connection->id());
|
|
|