Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(758)

Unified Diff: mojo/services/view_manager/view_manager_connection.cc

Issue 284113008: Cleanup of ViewManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge to trunk Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 7dbbb456ac7527f996b4dd9d4d970e75d443006e..cac1ef3ec02fbd1ea22f825cf04bd9429f0a79c9 100644
--- a/mojo/services/view_manager/view_manager_connection.cc
+++ b/mojo/services/view_manager/view_manager_connection.cc
@@ -20,13 +20,13 @@ namespace service {
namespace {
// Places |node| in |nodes| and recurses through the children.
-void GetDescendants(Node* node, std::vector<Node*>* nodes) {
+void GetDescendants(const Node* node, std::vector<const Node*>* nodes) {
if (!node)
return;
nodes->push_back(node);
- std::vector<Node*> children(node->GetChildren());
+ std::vector<const Node*> children(node->GetChildren());
for (size_t i = 0 ; i < children.size(); ++i)
GetDescendants(children[i], nodes);
}
@@ -61,7 +61,7 @@ void ViewManagerConnection::OnConnectionEstablished() {
DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once.
id_ = root_node_manager_->GetAndAdvanceNextConnectionId();
root_node_manager_->AddConnection(this);
- std::vector<Node*> to_send;
+ std::vector<const Node*> to_send;
GetUnknownNodesFrom(root_node_manager_->root(), &to_send);
AllocationScope allocation_scope;
client()->OnConnectionEstablished(
@@ -89,16 +89,15 @@ View* ViewManagerConnection::GetView(const ViewId& id) {
}
void ViewManagerConnection::ProcessNodeHierarchyChanged(
- const NodeId& node_id,
- const NodeId& new_parent_id,
- const NodeId& old_parent_id,
+ const Node* node,
+ const Node* new_parent,
+ const Node* old_parent,
TransportChangeId server_change_id,
bool originated_change) {
if (originated_change || root_node_manager_->is_processing_delete_node())
return;
- std::vector<Node*> to_send;
- if (!ShouldNotifyOnHierarchyChange(node_id, new_parent_id, old_parent_id,
- &to_send)) {
+ std::vector<const Node*> to_send;
+ if (!ShouldNotifyOnHierarchyChange(node, new_parent, old_parent, &to_send)) {
if (root_node_manager_->IsProcessingChange()) {
client()->OnServerChangeIdAdvanced(
root_node_manager_->next_server_change_id() + 1);
@@ -106,7 +105,9 @@ void ViewManagerConnection::ProcessNodeHierarchyChanged(
return;
}
AllocationScope allocation_scope;
- client()->OnNodeHierarchyChanged(NodeIdToTransportId(node_id),
+ const NodeId new_parent_id(new_parent ? new_parent->id() : NodeId());
+ const NodeId old_parent_id(old_parent ? old_parent->id() : NodeId());
+ client()->OnNodeHierarchyChanged(NodeIdToTransportId(node->id()),
NodeIdToTransportId(new_parent_id),
NodeIdToTransportId(old_parent_id),
server_change_id,
@@ -114,15 +115,18 @@ void ViewManagerConnection::ProcessNodeHierarchyChanged(
}
void ViewManagerConnection::ProcessNodeViewReplaced(
- const NodeId& node,
- const ViewId& new_view_id,
- const ViewId& old_view_id,
+ const Node* node,
+ const View* new_view,
+ const View* old_view,
bool originated_change) {
if (originated_change)
return;
- client()->OnNodeViewReplaced(NodeIdToTransportId(node),
- ViewIdToTransportId(new_view_id),
- ViewIdToTransportId(old_view_id));
+ const TransportViewId new_view_id = new_view ?
+ ViewIdToTransportId(new_view->id()) : 0;
+ const TransportViewId old_view_id = old_view ?
+ ViewIdToTransportId(old_view->id()) : 0;
+ client()->OnNodeViewReplaced(NodeIdToTransportId(node->id()),
+ new_view_id, old_view_id);
}
void ViewManagerConnection::ProcessNodeDeleted(
@@ -207,24 +211,23 @@ bool ViewManagerConnection::SetViewImpl(const NodeId& node_id,
}
void ViewManagerConnection::GetUnknownNodesFrom(
- Node* node,
- std::vector<Node*>* nodes) {
+ const Node* node,
+ std::vector<const Node*>* nodes) {
const TransportNodeId transport_id = NodeIdToTransportId(node->id());
if (known_nodes_.count(transport_id) == 1)
return;
nodes->push_back(node);
known_nodes_.insert(transport_id);
- std::vector<Node*> children(node->GetChildren());
+ std::vector<const Node*> children(node->GetChildren());
for (size_t i = 0 ; i < children.size(); ++i)
GetUnknownNodesFrom(children[i], nodes);
}
bool ViewManagerConnection::ShouldNotifyOnHierarchyChange(
- const NodeId& node_id,
- const NodeId& new_parent_id,
- const NodeId& old_parent_id,
- std::vector<Node*>* to_send) {
- Node* new_parent = GetNode(new_parent_id);
+ const Node* node,
+ const Node* new_parent,
+ const Node* old_parent,
+ std::vector<const Node*>* to_send) {
if (new_parent) {
// On getting a new parent we may need to communicate new nodes to the
// client. We do that in the following cases:
@@ -236,19 +239,19 @@ bool ViewManagerConnection::ShouldNotifyOnHierarchyChange(
// doesn't know about we have to communicate from the root down (the
// client is learning about a new root).
if (root_node_manager_->root()->Contains(new_parent) ||
- known_nodes_.count(NodeIdToTransportId(new_parent_id))) {
- GetUnknownNodesFrom(GetNode(node_id), to_send);
+ known_nodes_.count(NodeIdToTransportId(new_parent->id()))) {
+ GetUnknownNodesFrom(node, to_send);
return true;
}
// If parent wasn't known we have to communicate from the root down.
- if (known_nodes_.count(NodeIdToTransportId(node_id))) {
+ if (known_nodes_.count(NodeIdToTransportId(node->id()))) {
GetUnknownNodesFrom(new_parent->GetRoot(), to_send);
return true;
}
}
// Otherwise only communicate the change if the node was known. We shouldn't
// need to communicate any nodes on a remove.
- return known_nodes_.count(NodeIdToTransportId(node_id)) > 0;
+ return known_nodes_.count(NodeIdToTransportId(node->id())) > 0;
}
void ViewManagerConnection::CreateNode(
@@ -319,7 +322,7 @@ void ViewManagerConnection::GetNodeTree(
const Callback<void(Array<INode>)>& callback) {
AllocationScope allocation_scope;
Node* node = GetNode(NodeIdFromTransportId(node_id));
- std::vector<Node*> nodes;
+ std::vector<const Node*> nodes;
GetDescendants(node, &nodes);
for (size_t i = 0; i < nodes.size(); ++i)
known_nodes_.insert(NodeIdToTransportId(nodes[i]->id()));
@@ -374,16 +377,16 @@ void ViewManagerConnection::SetViewContents(
UnmapBuffer(handle_data);
}
-void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node,
- const NodeId& new_parent,
- const NodeId& old_parent) {
+void ViewManagerConnection::OnNodeHierarchyChanged(const Node* node,
+ const Node* new_parent,
+ const Node* old_parent) {
root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent);
}
-void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node,
- const ViewId& new_view_id,
- const ViewId& old_view_id) {
- root_node_manager_->ProcessNodeViewReplaced(node, new_view_id, old_view_id);
+void ViewManagerConnection::OnNodeViewReplaced(const Node* node,
+ const View* new_view,
+ const View* old_view) {
+ root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view);
}
} // namespace service
« no previous file with comments | « mojo/services/view_manager/view_manager_connection.h ('k') | mojo/services/view_manager/view_manager_connection_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698