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

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

Issue 327073003: Reorder (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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 8d4d0a6438ec31f1a7336fed2ddfdb1d7ab66464..ada5e84b17288773cb3029dde7fe70c3d2f71052 100644
--- a/mojo/services/view_manager/view_manager_connection.cc
+++ b/mojo/services/view_manager/view_manager_connection.cc
@@ -170,6 +170,23 @@ void ViewManagerConnection::ProcessNodeHierarchyChanged(
NodesToINodes(to_send));
}
+void ViewManagerConnection::ProcessNodeReorder(const Node* node,
+ const Node* relative_node,
+ OrderDirection direction,
+ Id server_change_id,
+ bool originated_change) {
+ if (originated_change ||
+ !known_nodes_.count(NodeIdToTransportId(node->id())) ||
+ !known_nodes_.count(NodeIdToTransportId(relative_node->id()))) {
+ return;
+ }
+
+ client()->OnNodeReordered(NodeIdToTransportId(node->id()),
+ NodeIdToTransportId(relative_node->id()),
+ direction,
+ server_change_id);
+}
+
void ViewManagerConnection::ProcessNodeViewReplaced(
const Node* node,
const View* new_view,
@@ -267,6 +284,12 @@ bool ViewManagerConnection::CanAddNode(const Node* parent,
return (IsNodeDescendantOfRoots(child) || child->id().connection_id == id_);
}
+bool ViewManagerConnection::CanReorderNode(const Node* node,
+ const Node* relatve_node) const {
sky 2014/06/11 19:36:44 relative_node.
+ return node->id().connection_id == id_ &&
sky 2014/06/11 19:36:44 You should also check: both nodes are non-null, an
+ node->GetParent() == relatve_node->GetParent();
+}
+
bool ViewManagerConnection::CanDeleteNode(const NodeId& node_id) const {
return node_id.connection_id == id_;
}
@@ -553,6 +576,27 @@ void ViewManagerConnection::RemoveNodeFromParent(
callback.Run(success);
}
+void ViewManagerConnection::ReorderNode(Id node_id,
+ Id relative_node_id,
+ OrderDirection direction,
+ Id server_change_id,
+ const Callback<void(bool)>& callback) {
+ bool success = false;
+ if (server_change_id == root_node_manager_->next_server_change_id()) {
+ Node* node = GetNode(NodeIdFromTransportId(node_id));
+ Node* relative_node = GetNode(NodeIdFromTransportId(relative_node_id));
+ if (CanReorderNode(node, relative_node)) {
+ success = true;
+ RootNodeManager::ScopedChange change(
+ this, root_node_manager_,
+ RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
+ node->GetParent()->Reorder(node, relative_node, direction);
+ root_node_manager_->ProcessNodeReorder(node, relative_node, direction);
+ }
+ }
+ callback.Run(success);
+}
+
void ViewManagerConnection::GetNodeTree(
Id node_id,
const Callback<void(Array<INodePtr>)>& callback) {

Powered by Google App Engine
This is Rietveld 408576698