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

Side by Side Diff: mojo/services/view_manager/view_manager_connection.cc

Issue 253883005: Makes change_id unsigned (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mojo/services/view_manager/view_manager_connection.h" 5 #include "mojo/services/view_manager/view_manager_connection.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "mojo/services/view_manager/node.h" 8 #include "mojo/services/view_manager/node.h"
9 #include "mojo/services/view_manager/root_node_manager.h" 9 #include "mojo/services/view_manager/root_node_manager.h"
10 #include "mojo/services/view_manager/view.h" 10 #include "mojo/services/view_manager/view.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 ViewMap::const_iterator i = view_map_.find(id.view_id); 59 ViewMap::const_iterator i = view_map_.find(id.view_id);
60 return i == view_map_.end() ? NULL : i->second; 60 return i == view_map_.end() ? NULL : i->second;
61 } 61 }
62 return context()->GetView(id); 62 return context()->GetView(id);
63 } 63 }
64 64
65 void ViewManagerConnection::NotifyNodeHierarchyChanged( 65 void ViewManagerConnection::NotifyNodeHierarchyChanged(
66 const NodeId& node, 66 const NodeId& node,
67 const NodeId& new_parent, 67 const NodeId& new_parent,
68 const NodeId& old_parent, 68 const NodeId& old_parent,
69 int32_t change_id) { 69 ChangeId change_id) {
70 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node), 70 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node),
71 NodeIdToTransportId(new_parent), 71 NodeIdToTransportId(new_parent),
72 NodeIdToTransportId(old_parent), 72 NodeIdToTransportId(old_parent),
73 change_id); 73 change_id);
74 } 74 }
75 75
76 void ViewManagerConnection::NotifyNodeViewReplaced(const NodeId& node, 76 void ViewManagerConnection::NotifyNodeViewReplaced(const NodeId& node,
77 const ViewId& new_view_id, 77 const ViewId& new_view_id,
78 const ViewId& old_view_id, 78 const ViewId& old_view_id,
79 int32_t change_id) { 79 ChangeId change_id) {
80 client()->OnNodeViewReplaced(NodeIdToTransportId(node), 80 client()->OnNodeViewReplaced(NodeIdToTransportId(node),
81 ViewIdToTransportId(new_view_id), 81 ViewIdToTransportId(new_view_id),
82 ViewIdToTransportId(old_view_id), 82 ViewIdToTransportId(old_view_id),
83 change_id); 83 change_id);
84 } 84 }
85 85
86 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, 86 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source,
87 const NodeId& node_id, 87 const NodeId& node_id,
88 int32_t change_id) { 88 ChangeId change_id) {
89 DCHECK_EQ(node_id.connection_id, id_); 89 DCHECK_EQ(node_id.connection_id, id_);
90 Node* node = GetNode(node_id); 90 Node* node = GetNode(node_id);
91 if (!node) 91 if (!node)
92 return false; 92 return false;
93 RootNodeManager::ScopedChange change(source, context(), change_id); 93 RootNodeManager::ScopedChange change(source, context(), change_id);
94 if (node->GetParent()) 94 if (node->GetParent())
95 node->GetParent()->Remove(node); 95 node->GetParent()->Remove(node);
96 std::vector<Node*> children(node->GetChildren()); 96 std::vector<Node*> children(node->GetChildren());
97 for (size_t i = 0; i < children.size(); ++i) 97 for (size_t i = 0; i < children.size(); ++i)
98 node->Remove(children[i]); 98 node->Remove(children[i]);
99 DCHECK(node->GetChildren().empty()); 99 DCHECK(node->GetChildren().empty());
100 node_map_.erase(node_id.node_id); 100 node_map_.erase(node_id.node_id);
101 delete node; 101 delete node;
102 return true; 102 return true;
103 } 103 }
104 104
105 bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source, 105 bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source,
106 const ViewId& view_id, 106 const ViewId& view_id,
107 int32_t change_id) { 107 ChangeId change_id) {
108 DCHECK_EQ(view_id.connection_id, id_); 108 DCHECK_EQ(view_id.connection_id, id_);
109 View* view = GetView(view_id); 109 View* view = GetView(view_id);
110 if (!view) 110 if (!view)
111 return false; 111 return false;
112 RootNodeManager::ScopedChange change(source, context(), change_id); 112 RootNodeManager::ScopedChange change(source, context(), change_id);
113 if (view->node()) 113 if (view->node())
114 view->node()->SetView(NULL); 114 view->node()->SetView(NULL);
115 view_map_.erase(view_id.view_id); 115 view_map_.erase(view_id.view_id);
116 delete view; 116 delete view;
117 return true; 117 return true;
118 } 118 }
119 119
120 bool ViewManagerConnection::SetViewImpl(const NodeId& node_id, 120 bool ViewManagerConnection::SetViewImpl(const NodeId& node_id,
121 const ViewId& view_id, 121 const ViewId& view_id,
122 int32_t change_id) { 122 ChangeId change_id) {
123 Node* node = GetNode(node_id); 123 Node* node = GetNode(node_id);
124 if (!node) 124 if (!node)
125 return false; 125 return false;
126 View* view = GetView(view_id); 126 View* view = GetView(view_id);
127 if (!view && view_id != ViewId()) 127 if (!view && view_id != ViewId())
128 return false; 128 return false;
129 RootNodeManager::ScopedChange change(this, context(), change_id); 129 RootNodeManager::ScopedChange change(this, context(), change_id);
130 node->SetView(view); 130 node->SetView(view);
131 return true; 131 return true;
132 } 132 }
133 133
134 void ViewManagerConnection::CreateNode( 134 void ViewManagerConnection::CreateNode(
135 uint16_t node_id, 135 uint16_t node_id,
136 const Callback<void(bool)>& callback) { 136 const Callback<void(bool)>& callback) {
137 // Negative values are reserved. 137 // Negative values are reserved.
138 if (node_map_.find(node_id) != node_map_.end()) { 138 if (node_map_.find(node_id) != node_map_.end()) {
139 callback.Run(false); 139 callback.Run(false);
140 return; 140 return;
141 } 141 }
142 node_map_[node_id] = new Node(this, NodeId(id_, node_id)); 142 node_map_[node_id] = new Node(this, NodeId(id_, node_id));
143 callback.Run(true); 143 callback.Run(true);
144 } 144 }
145 145
146 void ViewManagerConnection::DeleteNode( 146 void ViewManagerConnection::DeleteNode(
147 uint32_t transport_node_id, 147 uint32_t transport_node_id,
148 int32_t change_id, 148 ChangeId change_id,
149 const mojo::Callback<void(bool)>& callback) { 149 const mojo::Callback<void(bool)>& callback) {
150 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 150 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
151 ViewManagerConnection* connection = context()->GetConnection( 151 ViewManagerConnection* connection = context()->GetConnection(
152 node_id.connection_id); 152 node_id.connection_id);
153 callback.Run(connection && 153 callback.Run(connection &&
154 connection->DeleteNodeImpl(this, node_id, change_id)); 154 connection->DeleteNodeImpl(this, node_id, change_id));
155 } 155 }
156 156
157 void ViewManagerConnection::AddNode( 157 void ViewManagerConnection::AddNode(
158 uint32_t parent_id, 158 uint32_t parent_id,
159 uint32_t child_id, 159 uint32_t child_id,
160 int32_t change_id, 160 ChangeId change_id,
161 const Callback<void(bool)>& callback) { 161 const Callback<void(bool)>& callback) {
162 Node* parent = GetNode(NodeIdFromTransportId(parent_id)); 162 Node* parent = GetNode(NodeIdFromTransportId(parent_id));
163 Node* child = GetNode(NodeIdFromTransportId(child_id)); 163 Node* child = GetNode(NodeIdFromTransportId(child_id));
164 const bool success = parent && child && parent != child; 164 const bool success = parent && child && parent != child;
165 if (success) { 165 if (success) {
166 RootNodeManager::ScopedChange change(this, context(), change_id); 166 RootNodeManager::ScopedChange change(this, context(), change_id);
167 parent->Add(child); 167 parent->Add(child);
168 } 168 }
169 callback.Run(success); 169 callback.Run(success);
170 } 170 }
171 171
172 void ViewManagerConnection::RemoveNodeFromParent( 172 void ViewManagerConnection::RemoveNodeFromParent(
173 uint32_t node_id, 173 uint32_t node_id,
174 int32_t change_id, 174 ChangeId change_id,
175 const Callback<void(bool)>& callback) { 175 const Callback<void(bool)>& callback) {
176 Node* node = GetNode(NodeIdFromTransportId(node_id)); 176 Node* node = GetNode(NodeIdFromTransportId(node_id));
177 const bool success = (node && node->GetParent()); 177 const bool success = (node && node->GetParent());
178 if (success) { 178 if (success) {
179 RootNodeManager::ScopedChange change(this, context(), change_id); 179 RootNodeManager::ScopedChange change(this, context(), change_id);
180 node->GetParent()->Remove(node); 180 node->GetParent()->Remove(node);
181 } 181 }
182 callback.Run(success); 182 callback.Run(success);
183 } 183 }
184 184
185 void ViewManagerConnection::CreateView( 185 void ViewManagerConnection::CreateView(
186 uint16_t view_id, 186 uint16_t view_id,
187 const mojo::Callback<void(bool)>& callback) { 187 const mojo::Callback<void(bool)>& callback) {
188 if (view_map_.count(view_id)) { 188 if (view_map_.count(view_id)) {
189 callback.Run(false); 189 callback.Run(false);
190 return; 190 return;
191 } 191 }
192 view_map_[view_id] = new View(ViewId(id_, view_id)); 192 view_map_[view_id] = new View(ViewId(id_, view_id));
193 callback.Run(true); 193 callback.Run(true);
194 } 194 }
195 195
196 void ViewManagerConnection::DeleteView( 196 void ViewManagerConnection::DeleteView(
197 uint32_t transport_view_id, 197 uint32_t transport_view_id,
198 int32_t change_id, 198 ChangeId change_id,
199 const mojo::Callback<void(bool)>& callback) { 199 const mojo::Callback<void(bool)>& callback) {
200 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 200 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
201 ViewManagerConnection* connection = context()->GetConnection( 201 ViewManagerConnection* connection = context()->GetConnection(
202 view_id.connection_id); 202 view_id.connection_id);
203 callback.Run(connection && 203 callback.Run(connection &&
204 connection->DeleteViewImpl(this, view_id, change_id)); 204 connection->DeleteViewImpl(this, view_id, change_id));
205 } 205 }
206 206
207 void ViewManagerConnection::SetView( 207 void ViewManagerConnection::SetView(
208 uint32_t transport_node_id, 208 uint32_t transport_node_id,
209 uint32_t transport_view_id, 209 uint32_t transport_view_id,
210 int32_t change_id, 210 ChangeId change_id,
211 const mojo::Callback<void(bool)>& callback) { 211 const mojo::Callback<void(bool)>& callback) {
212 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 212 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
213 callback.Run(SetViewImpl(node_id, ViewIdFromTransportId(transport_view_id), 213 callback.Run(SetViewImpl(node_id, ViewIdFromTransportId(transport_view_id),
214 change_id)); 214 change_id));
215 } 215 }
216 216
217 void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node, 217 void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node,
218 const NodeId& new_parent, 218 const NodeId& new_parent,
219 const NodeId& old_parent) { 219 const NodeId& old_parent) {
220 context()->NotifyNodeHierarchyChanged(node, new_parent, old_parent); 220 context()->NotifyNodeHierarchyChanged(node, new_parent, old_parent);
221 } 221 }
222 222
223 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node, 223 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node,
224 const ViewId& new_view_id, 224 const ViewId& new_view_id,
225 const ViewId& old_view_id) { 225 const ViewId& old_view_id) {
226 context()->NotifyNodeViewReplaced(node, new_view_id, old_view_id); 226 context()->NotifyNodeViewReplaced(node, new_view_id, old_view_id);
227 } 227 }
228 228
229 } // namespace view_manager 229 } // namespace view_manager
230 } // namespace services 230 } // namespace services
231 } // namespace mojo 231 } // namespace mojo
OLDNEW
« 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