Chromium Code Reviews| Index: mojo/services/view_manager/view_manager_connection.cc |
| diff --git a/mojo/services/view_manager/view_manager_connection.cc b/mojo/services/view_manager/view_manager_connection.cc |
| index 749f25cf2fe939be68a678338c60e010e9e16e71..6f0c58cc8956ac8e19b877833789e5e4854fd619 100644 |
| --- a/mojo/services/view_manager/view_manager_connection.cc |
| +++ b/mojo/services/view_manager/view_manager_connection.cc |
| @@ -59,7 +59,9 @@ void NodeToINode(Node* node, |
| } // namespace |
| -ViewManagerConnection::ViewManagerConnection() : id_(0) { |
| +ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager) |
| + : root_node_manager_(root_node_manager), |
| + id_(0) { |
| } |
| ViewManagerConnection::~ViewManagerConnection() { |
| @@ -78,14 +80,18 @@ ViewManagerConnection::~ViewManagerConnection() { |
| } |
| STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end()); |
| - context()->RemoveConnection(this); |
| + root_node_manager_->RemoveConnection(this); |
| } |
| -void ViewManagerConnection::Initialize() { |
| - DCHECK_EQ(0, id_); // Should only get Initialize() once. |
| - id_ = context()->GetAndAdvanceNextConnectionId(); |
| - context()->AddConnection(this); |
| - client()->OnConnectionEstablished(id_, context()->next_server_change_id()); |
| +void ViewManagerConnection::OnConnectionError() {} |
| + |
| +void ViewManagerConnection::SetClient(IViewManagerClient* client) { |
| + DCHECK_EQ(0, id_); // Should only get SetClient() once. |
| + InterfaceImpl<IViewManager>::SetClient(client); |
|
darin (slow to review)
2014/05/14 20:00:21
It is this case that makes me wonder if the ViewMa
sky
2014/05/14 20:12:29
The clients don't know this information, only the
|
| + id_ = root_node_manager_->GetAndAdvanceNextConnectionId(); |
| + root_node_manager_->AddConnection(this); |
| + client->OnConnectionEstablished( |
| + id_, root_node_manager_->next_server_change_id()); |
| } |
| Node* ViewManagerConnection::GetNode(const NodeId& id) { |
| @@ -93,7 +99,7 @@ Node* ViewManagerConnection::GetNode(const NodeId& id) { |
| NodeMap::iterator i = node_map_.find(id.node_id); |
| return i == node_map_.end() ? NULL : i->second; |
| } |
| - return context()->GetNode(id); |
| + return root_node_manager_->GetNode(id); |
| } |
| View* ViewManagerConnection::GetView(const ViewId& id) { |
| @@ -101,7 +107,7 @@ View* ViewManagerConnection::GetView(const ViewId& id) { |
| ViewMap::const_iterator i = view_map_.find(id.view_id); |
| return i == view_map_.end() ? NULL : i->second; |
| } |
| - return context()->GetView(id); |
| + return root_node_manager_->GetView(id); |
| } |
| void ViewManagerConnection::NotifyNodeHierarchyChanged( |
| @@ -141,7 +147,8 @@ bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, |
| if (!node) |
| return false; |
| RootNodeManager::ScopedChange change( |
| - source, context(), RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); |
| + source, root_node_manager_, |
| + RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); |
| if (node->GetParent()) |
| node->GetParent()->Remove(node); |
| std::vector<Node*> children(node->GetChildren()); |
| @@ -151,7 +158,7 @@ bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, |
| node_map_.erase(node_id.node_id); |
| delete node; |
| node = NULL; |
| - context()->NotifyNodeDeleted(node_id); |
| + root_node_manager_->NotifyNodeDeleted(node_id); |
| return true; |
| } |
| @@ -162,7 +169,7 @@ bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source, |
| if (!view) |
| return false; |
| RootNodeManager::ScopedChange change( |
| - source, context(), |
| + source, root_node_manager_, |
| RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID); |
| if (view->node()) |
| view->node()->SetView(NULL); |
| @@ -171,7 +178,7 @@ bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source, |
| // valid. |
| const ViewId view_id_copy(view_id); |
| delete view; |
| - context()->NotifyViewDeleted(view_id_copy); |
| + root_node_manager_->NotifyViewDeleted(view_id_copy); |
| return true; |
| } |
| @@ -184,7 +191,7 @@ bool ViewManagerConnection::SetViewImpl(const NodeId& node_id, |
| if (!view && view_id != ViewId()) |
| return false; |
| RootNodeManager::ScopedChange change( |
| - this, context(), |
| + this, root_node_manager_, |
| RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID); |
| node->SetView(view); |
| return true; |
| @@ -207,7 +214,7 @@ void ViewManagerConnection::DeleteNode( |
| TransportNodeId transport_node_id, |
| const Callback<void(bool)>& callback) { |
| const NodeId node_id(NodeIdFromTransportId(transport_node_id)); |
| - ViewManagerConnection* connection = context()->GetConnection( |
| + ViewManagerConnection* connection = root_node_manager_->GetConnection( |
| node_id.connection_id); |
| callback.Run(connection && |
| connection->DeleteNodeImpl(this, node_id)); |
| @@ -219,14 +226,14 @@ void ViewManagerConnection::AddNode( |
| TransportChangeId server_change_id, |
| const Callback<void(bool)>& callback) { |
| bool success = false; |
| - if (server_change_id == context()->next_server_change_id()) { |
| + if (server_change_id == root_node_manager_->next_server_change_id()) { |
| Node* parent = GetNode(NodeIdFromTransportId(parent_id)); |
| Node* child = GetNode(NodeIdFromTransportId(child_id)); |
| if (parent && child && child->GetParent() != parent && |
| !child->window()->Contains(parent->window())) { |
| success = true; |
| RootNodeManager::ScopedChange change( |
| - this, context(), |
| + this, root_node_manager_, |
| RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); |
| parent->Add(child); |
| } |
| @@ -239,12 +246,12 @@ void ViewManagerConnection::RemoveNodeFromParent( |
| TransportChangeId server_change_id, |
| const Callback<void(bool)>& callback) { |
| bool success = false; |
| - if (server_change_id == context()->next_server_change_id()) { |
| + if (server_change_id == root_node_manager_->next_server_change_id()) { |
| Node* node = GetNode(NodeIdFromTransportId(node_id)); |
| if (node && node->GetParent()) { |
| success = true; |
| RootNodeManager::ScopedChange change( |
| - this, context(), |
| + this, root_node_manager_, |
| RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); |
| node->GetParent()->Remove(node); |
| } |
| @@ -281,7 +288,7 @@ void ViewManagerConnection::DeleteView( |
| TransportViewId transport_view_id, |
| const Callback<void(bool)>& callback) { |
| const ViewId view_id(ViewIdFromTransportId(transport_view_id)); |
| - ViewManagerConnection* connection = context()->GetConnection( |
| + ViewManagerConnection* connection = root_node_manager_->GetConnection( |
| view_id.connection_id); |
| callback.Run(connection && connection->DeleteViewImpl(this, view_id)); |
| } |
| @@ -316,13 +323,13 @@ void ViewManagerConnection::SetViewContents( |
| void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node, |
| const NodeId& new_parent, |
| const NodeId& old_parent) { |
| - context()->NotifyNodeHierarchyChanged(node, new_parent, old_parent); |
| + root_node_manager_->NotifyNodeHierarchyChanged(node, new_parent, old_parent); |
| } |
| void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node, |
| const ViewId& new_view_id, |
| const ViewId& old_view_id) { |
| - context()->NotifyNodeViewReplaced(node, new_view_id, old_view_id); |
| + root_node_manager_->NotifyNodeViewReplaced(node, new_view_id, old_view_id); |
| } |
| } // namespace service |