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

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

Issue 288313002: Tweaks to ViewManager: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix 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/public/cpp/bindings/allocation_scope.h" 8 #include "mojo/public/cpp/bindings/allocation_scope.h"
9 #include "mojo/services/view_manager/node.h" 9 #include "mojo/services/view_manager/node.h"
10 #include "mojo/services/view_manager/root_node_manager.h" 10 #include "mojo/services/view_manager/root_node_manager.h"
11 #include "mojo/services/view_manager/type_converters.h"
11 #include "mojo/services/view_manager/view.h" 12 #include "mojo/services/view_manager/view.h"
12 #include "third_party/skia/include/core/SkBitmap.h" 13 #include "third_party/skia/include/core/SkBitmap.h"
13 #include "ui/aura/window.h" 14 #include "ui/aura/window.h"
14 #include "ui/gfx/codec/png_codec.h" 15 #include "ui/gfx/codec/png_codec.h"
15 16
16 namespace mojo { 17 namespace mojo {
17 namespace view_manager { 18 namespace view_manager {
18 namespace service { 19 namespace service {
19 namespace { 20 namespace {
20 21
21 // Implementation of NodeCount(). |count| is the current count. 22 // Places |node| in |nodes| and recurses through the children.
22 void NodeCountImpl(Node* node, size_t* count) { 23 void GetDescendants(Node* node, std::vector<Node*>* nodes) {
23 (*count)++;
24 std::vector<Node*> children(node->GetChildren());
25 for (size_t i = 0 ; i < children.size(); ++i)
26 NodeCountImpl(children[i], count);
27 }
28
29 // Returns the number of descendants of |node|.
30 size_t NodeCount(Node* node) {
31 size_t count = 0;
32 if (node)
33 NodeCountImpl(node, &count);
34 return count;
35 }
36
37 // Converts a Node to an INode, putting the result at |index| in
38 // |array_builder|. This then recurses through the children.
39 void NodeToINode(Node* node,
40 Array<INode>::Builder* array_builder,
41 size_t* index) {
42 if (!node) 24 if (!node)
43 return; 25 return;
44 26
45 INode::Builder builder; 27 nodes->push_back(node);
46 Node* parent = node->GetParent();
47 builder.set_parent_id(NodeIdToTransportId(parent ? parent->id() : NodeId()));
48 builder.set_node_id(NodeIdToTransportId(node->id()));
49 builder.set_view_id(ViewIdToTransportId(
50 node->view() ? node->view()->id() : ViewId()));
51 (*array_builder)[*index] = builder.Finish();
52 28
53 std::vector<Node*> children(node->GetChildren()); 29 std::vector<Node*> children(node->GetChildren());
54 for (size_t i = 0 ; i < children.size(); ++i) { 30 for (size_t i = 0 ; i < children.size(); ++i)
55 (*index)++; 31 GetDescendants(children[i], nodes);
56 NodeToINode(children[i], array_builder, index);
57 }
58 } 32 }
59 33
60 } // namespace 34 } // namespace
61 35
62 ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager) 36 ViewManagerConnection::ViewManagerConnection(RootNodeManager* root_node_manager)
63 : root_node_manager_(root_node_manager), 37 : root_node_manager_(root_node_manager),
64 id_(0) { 38 id_(0) {
65 } 39 }
66 40
67 ViewManagerConnection::~ViewManagerConnection() { 41 ViewManagerConnection::~ViewManagerConnection() {
68 // Delete any views we own. 42 // Delete any views we own.
69 while (!view_map_.empty()) { 43 while (!view_map_.empty()) {
70 bool result = DeleteViewImpl(this, view_map_.begin()->second->id()); 44 bool result = DeleteViewImpl(this, view_map_.begin()->second->id());
71 DCHECK(result); 45 DCHECK(result);
72 } 46 }
73 47
74 // We're about to destroy all our nodes. Detach any views from them. 48 // We're about to destroy all our nodes. Detach any views from them.
75 for (NodeMap::iterator i = node_map_.begin(); i != node_map_.end(); ++i) { 49 for (NodeMap::iterator i = node_map_.begin(); i != node_map_.end(); ++i) {
76 if (i->second->view()) { 50 if (i->second->view()) {
77 bool result = SetViewImpl(i->second->id(), ViewId()); 51 bool result = SetViewImpl(i->second->id(), ViewId());
78 DCHECK(result); 52 DCHECK(result);
79 } 53 }
80 } 54 }
81 55
82 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end()); 56 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end());
83 root_node_manager_->RemoveConnection(this); 57 root_node_manager_->RemoveConnection(this);
84 } 58 }
85 59
86 void ViewManagerConnection::OnConnectionEstablished() { 60 void ViewManagerConnection::OnConnectionEstablished() {
87 DCHECK_EQ(0, id_); // Should only get SetClient() once. 61 DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once.
88 id_ = root_node_manager_->GetAndAdvanceNextConnectionId(); 62 id_ = root_node_manager_->GetAndAdvanceNextConnectionId();
89 root_node_manager_->AddConnection(this); 63 root_node_manager_->AddConnection(this);
64 std::vector<Node*> to_send;
65 GetUnknownNodesFrom(root_node_manager_->root(), &to_send);
66 AllocationScope allocation_scope;
90 client()->OnConnectionEstablished( 67 client()->OnConnectionEstablished(
91 id_, root_node_manager_->next_server_change_id()); 68 id_,
69 root_node_manager_->next_server_change_id(),
70 Array<INode>::From(to_send));
92 } 71 }
93 72
94 void ViewManagerConnection::OnConnectionError() {} 73 void ViewManagerConnection::OnConnectionError() {}
95 74
96 Node* ViewManagerConnection::GetNode(const NodeId& id) { 75 Node* ViewManagerConnection::GetNode(const NodeId& id) {
97 if (id_ == id.connection_id) { 76 if (id_ == id.connection_id) {
98 NodeMap::iterator i = node_map_.find(id.node_id); 77 NodeMap::iterator i = node_map_.find(id.node_id);
99 return i == node_map_.end() ? NULL : i->second; 78 return i == node_map_.end() ? NULL : i->second;
100 } 79 }
101 return root_node_manager_->GetNode(id); 80 return root_node_manager_->GetNode(id);
102 } 81 }
103 82
104 View* ViewManagerConnection::GetView(const ViewId& id) { 83 View* ViewManagerConnection::GetView(const ViewId& id) {
105 if (id_ == id.connection_id) { 84 if (id_ == id.connection_id) {
106 ViewMap::const_iterator i = view_map_.find(id.view_id); 85 ViewMap::const_iterator i = view_map_.find(id.view_id);
107 return i == view_map_.end() ? NULL : i->second; 86 return i == view_map_.end() ? NULL : i->second;
108 } 87 }
109 return root_node_manager_->GetView(id); 88 return root_node_manager_->GetView(id);
110 } 89 }
111 90
112 void ViewManagerConnection::NotifyNodeHierarchyChanged( 91 void ViewManagerConnection::ProcessNodeHierarchyChanged(
113 const NodeId& node, 92 const NodeId& node_id,
114 const NodeId& new_parent, 93 const NodeId& new_parent_id,
115 const NodeId& old_parent, 94 const NodeId& old_parent_id,
116 TransportChangeId server_change_id) { 95 TransportChangeId server_change_id,
117 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node), 96 bool originated_change) {
118 NodeIdToTransportId(new_parent), 97 if (originated_change || root_node_manager_->is_processing_delete_node())
119 NodeIdToTransportId(old_parent), 98 return;
120 server_change_id); 99 std::vector<Node*> to_send;
100 if (!ShouldNotifyOnHierarchyChange(node_id, new_parent_id, old_parent_id,
101 &to_send)) {
102 if (root_node_manager_->IsProcessingChange()) {
103 client()->OnServerChangeIdAdvanced(
104 root_node_manager_->next_server_change_id() + 1);
105 }
106 return;
107 }
108 AllocationScope allocation_scope;
109 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node_id),
110 NodeIdToTransportId(new_parent_id),
111 NodeIdToTransportId(old_parent_id),
112 server_change_id,
113 Array<INode>::From(to_send));
121 } 114 }
122 115
123 void ViewManagerConnection::NotifyNodeViewReplaced( 116 void ViewManagerConnection::ProcessNodeViewReplaced(
124 const NodeId& node, 117 const NodeId& node,
125 const ViewId& new_view_id, 118 const ViewId& new_view_id,
126 const ViewId& old_view_id) { 119 const ViewId& old_view_id,
120 bool originated_change) {
121 if (originated_change)
122 return;
127 client()->OnNodeViewReplaced(NodeIdToTransportId(node), 123 client()->OnNodeViewReplaced(NodeIdToTransportId(node),
128 ViewIdToTransportId(new_view_id), 124 ViewIdToTransportId(new_view_id),
129 ViewIdToTransportId(old_view_id)); 125 ViewIdToTransportId(old_view_id));
130 } 126 }
131 127
132 void ViewManagerConnection::NotifyNodeDeleted( 128 void ViewManagerConnection::ProcessNodeDeleted(
133 const NodeId& node, 129 const NodeId& node,
134 TransportChangeId server_change_id) { 130 TransportChangeId server_change_id,
135 client()->OnNodeDeleted(NodeIdToTransportId(node), server_change_id); 131 bool originated_change) {
132 const bool in_known = known_nodes_.erase(NodeIdToTransportId(node)) > 0;
133
134 if (originated_change)
135 return;
136
137 if (in_known) {
138 client()->OnNodeDeleted(NodeIdToTransportId(node), server_change_id);
139 } else if (root_node_manager_->IsProcessingChange()) {
140 client()->OnServerChangeIdAdvanced(
141 root_node_manager_->next_server_change_id() + 1);
142 }
136 } 143 }
137 144
138 void ViewManagerConnection::NotifyViewDeleted(const ViewId& view) { 145 void ViewManagerConnection::ProcessViewDeleted(const ViewId& view,
146 bool originated_change) {
147 if (originated_change)
148 return;
139 client()->OnViewDeleted(ViewIdToTransportId(view)); 149 client()->OnViewDeleted(ViewIdToTransportId(view));
140 } 150 }
141 151
142 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, 152 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source,
143 const NodeId& node_id) { 153 const NodeId& node_id) {
144 DCHECK_EQ(node_id.connection_id, id_); 154 DCHECK_EQ(node_id.connection_id, id_);
145 Node* node = GetNode(node_id); 155 Node* node = GetNode(node_id);
146 if (!node) 156 if (!node)
147 return false; 157 return false;
148 RootNodeManager::ScopedChange change( 158 RootNodeManager::ScopedChange change(
149 source, root_node_manager_, 159 source, root_node_manager_,
150 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); 160 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, true);
151 if (node->GetParent()) 161 if (node->GetParent())
152 node->GetParent()->Remove(node); 162 node->GetParent()->Remove(node);
153 std::vector<Node*> children(node->GetChildren()); 163 std::vector<Node*> children(node->GetChildren());
154 for (size_t i = 0; i < children.size(); ++i) 164 for (size_t i = 0; i < children.size(); ++i)
155 node->Remove(children[i]); 165 node->Remove(children[i]);
156 DCHECK(node->GetChildren().empty()); 166 DCHECK(node->GetChildren().empty());
157 node_map_.erase(node_id.node_id); 167 node_map_.erase(node_id.node_id);
158 delete node; 168 delete node;
159 node = NULL; 169 node = NULL;
160 root_node_manager_->NotifyNodeDeleted(node_id); 170 root_node_manager_->ProcessNodeDeleted(node_id);
161 return true; 171 return true;
162 } 172 }
163 173
164 bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source, 174 bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source,
165 const ViewId& view_id) { 175 const ViewId& view_id) {
166 DCHECK_EQ(view_id.connection_id, id_); 176 DCHECK_EQ(view_id.connection_id, id_);
167 View* view = GetView(view_id); 177 View* view = GetView(view_id);
168 if (!view) 178 if (!view)
169 return false; 179 return false;
170 RootNodeManager::ScopedChange change( 180 RootNodeManager::ScopedChange change(
171 source, root_node_manager_, 181 source, root_node_manager_,
172 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID); 182 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID, false);
173 if (view->node()) 183 if (view->node())
174 view->node()->SetView(NULL); 184 view->node()->SetView(NULL);
175 view_map_.erase(view_id.view_id); 185 view_map_.erase(view_id.view_id);
176 // Make a copy of |view_id| as once we delete view |view_id| may no longer be 186 // Make a copy of |view_id| as once we delete view |view_id| may no longer be
177 // valid. 187 // valid.
178 const ViewId view_id_copy(view_id); 188 const ViewId view_id_copy(view_id);
179 delete view; 189 delete view;
180 root_node_manager_->NotifyViewDeleted(view_id_copy); 190 root_node_manager_->ProcessViewDeleted(view_id_copy);
181 return true; 191 return true;
182 } 192 }
183 193
184 bool ViewManagerConnection::SetViewImpl(const NodeId& node_id, 194 bool ViewManagerConnection::SetViewImpl(const NodeId& node_id,
185 const ViewId& view_id) { 195 const ViewId& view_id) {
186 Node* node = GetNode(node_id); 196 Node* node = GetNode(node_id);
187 if (!node) 197 if (!node)
188 return false; 198 return false;
189 View* view = GetView(view_id); 199 View* view = GetView(view_id);
190 if (!view && view_id != ViewId()) 200 if (!view && view_id != ViewId())
191 return false; 201 return false;
192 RootNodeManager::ScopedChange change( 202 RootNodeManager::ScopedChange change(
193 this, root_node_manager_, 203 this, root_node_manager_,
194 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID); 204 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID, false);
195 node->SetView(view); 205 node->SetView(view);
196 return true; 206 return true;
197 } 207 }
198 208
209 void ViewManagerConnection::GetUnknownNodesFrom(
210 Node* node,
211 std::vector<Node*>* nodes) {
212 const TransportNodeId transport_id = NodeIdToTransportId(node->id());
213 if (known_nodes_.count(transport_id) == 1)
214 return;
215 nodes->push_back(node);
216 known_nodes_.insert(transport_id);
217 std::vector<Node*> children(node->GetChildren());
218 for (size_t i = 0 ; i < children.size(); ++i)
219 GetUnknownNodesFrom(children[i], nodes);
220 }
221
222 bool ViewManagerConnection::ShouldNotifyOnHierarchyChange(
223 const NodeId& node_id,
224 const NodeId& new_parent_id,
225 const NodeId& old_parent_id,
226 std::vector<Node*>* to_send) {
227 Node* new_parent = GetNode(new_parent_id);
228 if (new_parent) {
229 // On getting a new parent we may need to communicate new nodes to the
230 // client. We do that in the following cases:
231 // . New parent is a descendant of the root. In this case the client already
232 // knows all ancestors, so we only have to communicate descendants of node
233 // the client doesn't know about.
234 // . If the client knew about the parent, we have to do the same.
235 // . If the client knows about the node and is added to a tree the client
236 // doesn't know about we have to communicate from the root down (the
237 // client is learning about a new root).
238 if (root_node_manager_->root()->Contains(new_parent) ||
239 known_nodes_.count(NodeIdToTransportId(new_parent_id))) {
240 GetUnknownNodesFrom(GetNode(node_id), to_send);
241 return true;
242 }
243 // If parent wasn't known we have to communicate from the root down.
244 if (known_nodes_.count(NodeIdToTransportId(node_id))) {
245 GetUnknownNodesFrom(new_parent->GetRoot(), to_send);
246 return true;
247 }
248 }
249 // Otherwise only communicate the change if the node was known. We shouldn't
250 // need to communicate any nodes on a remove.
251 return known_nodes_.count(NodeIdToTransportId(node_id)) > 0;
252 }
253
199 void ViewManagerConnection::CreateNode( 254 void ViewManagerConnection::CreateNode(
200 TransportNodeId transport_node_id, 255 TransportNodeId transport_node_id,
201 const Callback<void(bool)>& callback) { 256 const Callback<void(bool)>& callback) {
202 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 257 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
203 if (node_id.connection_id != id_ || 258 if (node_id.connection_id != id_ ||
204 node_map_.find(node_id.node_id) != node_map_.end()) { 259 node_map_.find(node_id.node_id) != node_map_.end()) {
205 callback.Run(false); 260 callback.Run(false);
206 return; 261 return;
207 } 262 }
208 node_map_[node_id.node_id] = new Node(this, node_id); 263 node_map_[node_id.node_id] = new Node(this, node_id);
209 callback.Run(true); 264 callback.Run(true);
210 } 265 }
211 266
212 void ViewManagerConnection::DeleteNode( 267 void ViewManagerConnection::DeleteNode(
213 TransportNodeId transport_node_id, 268 TransportNodeId transport_node_id,
214 const Callback<void(bool)>& callback) { 269 const Callback<void(bool)>& callback) {
270 AllocationScope allocation_scope;
215 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 271 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
216 ViewManagerConnection* connection = root_node_manager_->GetConnection( 272 ViewManagerConnection* connection = root_node_manager_->GetConnection(
217 node_id.connection_id); 273 node_id.connection_id);
218 callback.Run(connection && 274 callback.Run(connection &&
219 connection->DeleteNodeImpl(this, node_id)); 275 connection->DeleteNodeImpl(this, node_id));
220 } 276 }
221 277
222 void ViewManagerConnection::AddNode( 278 void ViewManagerConnection::AddNode(
223 TransportNodeId parent_id, 279 TransportNodeId parent_id,
224 TransportNodeId child_id, 280 TransportNodeId child_id,
225 TransportChangeId server_change_id, 281 TransportChangeId server_change_id,
226 const Callback<void(bool)>& callback) { 282 const Callback<void(bool)>& callback) {
227 bool success = false; 283 bool success = false;
228 if (server_change_id == root_node_manager_->next_server_change_id()) { 284 if (server_change_id == root_node_manager_->next_server_change_id()) {
229 Node* parent = GetNode(NodeIdFromTransportId(parent_id)); 285 Node* parent = GetNode(NodeIdFromTransportId(parent_id));
230 Node* child = GetNode(NodeIdFromTransportId(child_id)); 286 Node* child = GetNode(NodeIdFromTransportId(child_id));
231 if (parent && child && child->GetParent() != parent && 287 if (parent && child && child->GetParent() != parent &&
232 !child->window()->Contains(parent->window())) { 288 !child->window()->Contains(parent->window())) {
233 success = true; 289 success = true;
234 RootNodeManager::ScopedChange change( 290 RootNodeManager::ScopedChange change(
235 this, root_node_manager_, 291 this, root_node_manager_,
236 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); 292 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
237 parent->Add(child); 293 parent->Add(child);
238 } 294 }
239 } 295 }
240 callback.Run(success); 296 callback.Run(success);
241 } 297 }
242 298
243 void ViewManagerConnection::RemoveNodeFromParent( 299 void ViewManagerConnection::RemoveNodeFromParent(
244 TransportNodeId node_id, 300 TransportNodeId node_id,
245 TransportChangeId server_change_id, 301 TransportChangeId server_change_id,
246 const Callback<void(bool)>& callback) { 302 const Callback<void(bool)>& callback) {
247 bool success = false; 303 bool success = false;
248 if (server_change_id == root_node_manager_->next_server_change_id()) { 304 if (server_change_id == root_node_manager_->next_server_change_id()) {
249 Node* node = GetNode(NodeIdFromTransportId(node_id)); 305 Node* node = GetNode(NodeIdFromTransportId(node_id));
250 if (node && node->GetParent()) { 306 if (node && node->GetParent()) {
251 success = true; 307 success = true;
252 RootNodeManager::ScopedChange change( 308 RootNodeManager::ScopedChange change(
253 this, root_node_manager_, 309 this, root_node_manager_,
254 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID); 310 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
255 node->GetParent()->Remove(node); 311 node->GetParent()->Remove(node);
256 } 312 }
257 } 313 }
258 callback.Run(success); 314 callback.Run(success);
259 } 315 }
260 316
261 void ViewManagerConnection::GetNodeTree( 317 void ViewManagerConnection::GetNodeTree(
262 TransportNodeId node_id, 318 TransportNodeId node_id,
263 const Callback<void(Array<INode>)>& callback) { 319 const Callback<void(Array<INode>)>& callback) {
264 AllocationScope allocation_scope; 320 AllocationScope allocation_scope;
265 Node* node = GetNode(NodeIdFromTransportId(node_id)); 321 Node* node = GetNode(NodeIdFromTransportId(node_id));
266 Array<INode>::Builder array_builder(NodeCount(node)); 322 std::vector<Node*> nodes;
267 { 323 GetDescendants(node, &nodes);
268 size_t index = 0; 324 for (size_t i = 0; i < nodes.size(); ++i)
269 NodeToINode(node, &array_builder, &index); 325 known_nodes_.insert(NodeIdToTransportId(nodes[i]->id()));
270 } 326 callback.Run(Array<INode>::From(nodes));
271 callback.Run(array_builder.Finish());
272 } 327 }
273 328
274 void ViewManagerConnection::CreateView( 329 void ViewManagerConnection::CreateView(
275 TransportViewId transport_view_id, 330 TransportViewId transport_view_id,
276 const Callback<void(bool)>& callback) { 331 const Callback<void(bool)>& callback) {
277 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 332 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
278 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) { 333 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) {
279 callback.Run(false); 334 callback.Run(false);
280 return; 335 return;
281 } 336 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 SkBitmap bitmap; 370 SkBitmap bitmap;
316 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(handle_data), 371 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(handle_data),
317 buffer_size, &bitmap); 372 buffer_size, &bitmap);
318 view->SetBitmap(bitmap); 373 view->SetBitmap(bitmap);
319 UnmapBuffer(handle_data); 374 UnmapBuffer(handle_data);
320 } 375 }
321 376
322 void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node, 377 void ViewManagerConnection::OnNodeHierarchyChanged(const NodeId& node,
323 const NodeId& new_parent, 378 const NodeId& new_parent,
324 const NodeId& old_parent) { 379 const NodeId& old_parent) {
325 root_node_manager_->NotifyNodeHierarchyChanged(node, new_parent, old_parent); 380 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent);
326 } 381 }
327 382
328 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node, 383 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node,
329 const ViewId& new_view_id, 384 const ViewId& new_view_id,
330 const ViewId& old_view_id) { 385 const ViewId& old_view_id) {
331 root_node_manager_->NotifyNodeViewReplaced(node, new_view_id, old_view_id); 386 root_node_manager_->ProcessNodeViewReplaced(node, new_view_id, old_view_id);
332 } 387 }
333 388
334 } // namespace service 389 } // namespace service
335 } // namespace view_manager 390 } // namespace view_manager
336 } // namespace mojo 391 } // 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