| 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 37cda55d3d2098ad2992392d69680c65491537e5..b88e1a3108c058a7adf6e7e9a99d2ad9e8edc9bd 100644
|
| --- a/mojo/services/view_manager/root_node_manager.cc
|
| +++ b/mojo/services/view_manager/root_node_manager.cc
|
| @@ -33,15 +33,17 @@ RootNodeManager::Context::Context() {
|
| }
|
|
|
| RootNodeManager::Context::~Context() {
|
| + aura::Env::DeleteInstance();
|
| }
|
|
|
| -RootNodeManager::RootNodeManager(ServiceProvider* service_provider)
|
| +RootNodeManager::RootNodeManager(ServiceProvider* service_provider,
|
| + RootViewManagerDelegate* view_manager_delegate)
|
| : service_provider_(service_provider),
|
| next_connection_id_(1),
|
| next_server_change_id_(1),
|
| change_source_(kRootConnection),
|
| is_processing_delete_node_(false),
|
| - root_view_manager_(service_provider, this),
|
| + root_view_manager_(service_provider, this, view_manager_delegate),
|
| root_(this, RootNodeId()) {
|
| }
|
|
|
| @@ -68,14 +70,16 @@ void RootNodeManager::RemoveConnection(ViewManagerConnection* connection) {
|
| connections_created_by_connect_.erase(connection);
|
| }
|
|
|
| +void RootNodeManager::InitialConnect(const std::string& url) {
|
| + CHECK(connection_map_.empty());
|
| + Array<TransportNodeId> roots(0);
|
| + ConnectImpl(String::From(url), roots);
|
| +}
|
| +
|
| void RootNodeManager::Connect(const String& url,
|
| const Array<TransportNodeId>& node_ids) {
|
| - MessagePipe pipe;
|
| - service_provider_->ConnectToService(url, pipe.handle1.Pass());
|
| - ViewManagerConnection* connection = new ViewManagerConnection(this);
|
| - connection->SetRoots(node_ids);
|
| - BindToPipe(connection, pipe.handle0.Pass());
|
| - connections_created_by_connect_.insert(connection);
|
| + CHECK_GT(node_ids.size(), 0u);
|
| + ConnectImpl(url, node_ids)->set_delete_on_connection_error();
|
| }
|
|
|
| ViewManagerConnection* RootNodeManager::GetConnection(
|
| @@ -159,6 +163,18 @@ void RootNodeManager::FinishChange(ChangeType change_type) {
|
| next_server_change_id_++;
|
| }
|
|
|
| +ViewManagerConnection* RootNodeManager::ConnectImpl(
|
| + const String& url,
|
| + const Array<TransportNodeId>& node_ids) {
|
| + MessagePipe pipe;
|
| + service_provider_->ConnectToService(url, pipe.handle1.Pass());
|
| + ViewManagerConnection* connection = new ViewManagerConnection(this);
|
| + connection->SetRoots(node_ids);
|
| + BindToPipe(connection, pipe.handle0.Pass());
|
| + connections_created_by_connect_.insert(connection);
|
| + return connection;
|
| +}
|
| +
|
| void RootNodeManager::OnNodeHierarchyChanged(const Node* node,
|
| const Node* new_parent,
|
| const Node* old_parent) {
|
|
|