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 |