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

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

Issue 294833002: Mojo: more idiomatic C++ bindings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more 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"
9 #include "mojo/services/view_manager/node.h" 8 #include "mojo/services/view_manager/node.h"
10 #include "mojo/services/view_manager/root_node_manager.h" 9 #include "mojo/services/view_manager/root_node_manager.h"
11 #include "mojo/services/view_manager/type_converters.h" 10 #include "mojo/services/view_manager/type_converters.h"
12 #include "mojo/services/view_manager/view.h" 11 #include "mojo/services/view_manager/view.h"
13 #include "third_party/skia/include/core/SkBitmap.h" 12 #include "third_party/skia/include/core/SkBitmap.h"
14 #include "ui/aura/window.h" 13 #include "ui/aura/window.h"
15 #include "ui/gfx/codec/png_codec.h" 14 #include "ui/gfx/codec/png_codec.h"
16 15
17 namespace mojo { 16 namespace mojo {
18 namespace view_manager { 17 namespace view_manager {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end()); 55 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end());
57 root_node_manager_->RemoveConnection(this); 56 root_node_manager_->RemoveConnection(this);
58 } 57 }
59 58
60 void ViewManagerConnection::OnConnectionEstablished() { 59 void ViewManagerConnection::OnConnectionEstablished() {
61 DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once. 60 DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once.
62 id_ = root_node_manager_->GetAndAdvanceNextConnectionId(); 61 id_ = root_node_manager_->GetAndAdvanceNextConnectionId();
63 root_node_manager_->AddConnection(this); 62 root_node_manager_->AddConnection(this);
64 std::vector<const Node*> to_send; 63 std::vector<const Node*> to_send;
65 GetUnknownNodesFrom(root_node_manager_->root(), &to_send); 64 GetUnknownNodesFrom(root_node_manager_->root(), &to_send);
66 AllocationScope allocation_scope;
67 client()->OnConnectionEstablished( 65 client()->OnConnectionEstablished(
68 id_, 66 id_,
69 root_node_manager_->next_server_change_id(), 67 root_node_manager_->next_server_change_id(),
70 Array<INode>::From(to_send)); 68 Array<INodePtr>::From(to_send));
71 } 69 }
72 70
73 void ViewManagerConnection::OnConnectionError() {} 71 void ViewManagerConnection::OnConnectionError() {}
74 72
75 const Node* ViewManagerConnection::GetNode(const NodeId& id) const { 73 const Node* ViewManagerConnection::GetNode(const NodeId& id) const {
76 if (id_ == id.connection_id) { 74 if (id_ == id.connection_id) {
77 NodeMap::const_iterator i = node_map_.find(id.node_id); 75 NodeMap::const_iterator i = node_map_.find(id.node_id);
78 return i == node_map_.end() ? NULL : i->second; 76 return i == node_map_.end() ? NULL : i->second;
79 } 77 }
80 return root_node_manager_->GetNode(id); 78 return root_node_manager_->GetNode(id);
(...skipping 16 matching lines...) Expand all
97 if (originated_change || root_node_manager_->is_processing_delete_node()) 95 if (originated_change || root_node_manager_->is_processing_delete_node())
98 return; 96 return;
99 std::vector<const Node*> to_send; 97 std::vector<const Node*> to_send;
100 if (!ShouldNotifyOnHierarchyChange(node, new_parent, old_parent, &to_send)) { 98 if (!ShouldNotifyOnHierarchyChange(node, new_parent, old_parent, &to_send)) {
101 if (root_node_manager_->IsProcessingChange()) { 99 if (root_node_manager_->IsProcessingChange()) {
102 client()->OnServerChangeIdAdvanced( 100 client()->OnServerChangeIdAdvanced(
103 root_node_manager_->next_server_change_id() + 1); 101 root_node_manager_->next_server_change_id() + 1);
104 } 102 }
105 return; 103 return;
106 } 104 }
107 AllocationScope allocation_scope;
108 const NodeId new_parent_id(new_parent ? new_parent->id() : NodeId()); 105 const NodeId new_parent_id(new_parent ? new_parent->id() : NodeId());
109 const NodeId old_parent_id(old_parent ? old_parent->id() : NodeId()); 106 const NodeId old_parent_id(old_parent ? old_parent->id() : NodeId());
110 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node->id()), 107 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node->id()),
111 NodeIdToTransportId(new_parent_id), 108 NodeIdToTransportId(new_parent_id),
112 NodeIdToTransportId(old_parent_id), 109 NodeIdToTransportId(old_parent_id),
113 server_change_id, 110 server_change_id,
114 Array<INode>::From(to_send)); 111 Array<INodePtr>::From(to_send));
115 } 112 }
116 113
117 void ViewManagerConnection::ProcessNodeViewReplaced( 114 void ViewManagerConnection::ProcessNodeViewReplaced(
118 const Node* node, 115 const Node* node,
119 const View* new_view, 116 const View* new_view,
120 const View* old_view, 117 const View* old_view,
121 bool originated_change) { 118 bool originated_change) {
122 if (originated_change) 119 if (originated_change)
123 return; 120 return;
124 const TransportViewId new_view_id = new_view ? 121 const TransportViewId new_view_id = new_view ?
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 callback.Run(false); 268 callback.Run(false);
272 return; 269 return;
273 } 270 }
274 node_map_[node_id.node_id] = new Node(this, node_id); 271 node_map_[node_id.node_id] = new Node(this, node_id);
275 callback.Run(true); 272 callback.Run(true);
276 } 273 }
277 274
278 void ViewManagerConnection::DeleteNode( 275 void ViewManagerConnection::DeleteNode(
279 TransportNodeId transport_node_id, 276 TransportNodeId transport_node_id,
280 const Callback<void(bool)>& callback) { 277 const Callback<void(bool)>& callback) {
281 AllocationScope allocation_scope;
282 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); 278 const NodeId node_id(NodeIdFromTransportId(transport_node_id));
283 bool did_delete = CanDeleteNode(node_id); 279 bool did_delete = CanDeleteNode(node_id);
284 if (did_delete) { 280 if (did_delete) {
285 ViewManagerConnection* connection = root_node_manager_->GetConnection( 281 ViewManagerConnection* connection = root_node_manager_->GetConnection(
286 node_id.connection_id); 282 node_id.connection_id);
287 did_delete = connection && connection->DeleteNodeImpl(this, node_id); 283 did_delete = connection && connection->DeleteNodeImpl(this, node_id);
288 } 284 }
289 callback.Run(did_delete); 285 callback.Run(did_delete);
290 } 286 }
291 287
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 this, root_node_manager_, 319 this, root_node_manager_,
324 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false); 320 RootNodeManager::CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID, false);
325 node->GetParent()->Remove(node); 321 node->GetParent()->Remove(node);
326 } 322 }
327 } 323 }
328 callback.Run(success); 324 callback.Run(success);
329 } 325 }
330 326
331 void ViewManagerConnection::GetNodeTree( 327 void ViewManagerConnection::GetNodeTree(
332 TransportNodeId node_id, 328 TransportNodeId node_id,
333 const Callback<void(Array<INode>)>& callback) { 329 const Callback<void(Array<INodePtr>)>& callback) {
334 AllocationScope allocation_scope;
335 Node* node = GetNode(NodeIdFromTransportId(node_id)); 330 Node* node = GetNode(NodeIdFromTransportId(node_id));
336 std::vector<const Node*> nodes; 331 std::vector<const Node*> nodes;
337 GetDescendants(node, &nodes); 332 GetDescendants(node, &nodes);
338 for (size_t i = 0; i < nodes.size(); ++i) 333 for (size_t i = 0; i < nodes.size(); ++i)
339 known_nodes_.insert(NodeIdToTransportId(nodes[i]->id())); 334 known_nodes_.insert(NodeIdToTransportId(nodes[i]->id()));
340 callback.Run(Array<INode>::From(nodes)); 335 callback.Run(Array<INodePtr>::From(nodes));
341 } 336 }
342 337
343 void ViewManagerConnection::CreateView( 338 void ViewManagerConnection::CreateView(
344 TransportViewId transport_view_id, 339 TransportViewId transport_view_id,
345 const Callback<void(bool)>& callback) { 340 const Callback<void(bool)>& callback) {
346 const ViewId view_id(ViewIdFromTransportId(transport_view_id)); 341 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
347 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) { 342 if (view_id.connection_id != id_ || view_map_.count(view_id.view_id)) {
348 callback.Run(false); 343 callback.Run(false);
349 return; 344 return;
350 } 345 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 395
401 void ViewManagerConnection::OnNodeViewReplaced(const Node* node, 396 void ViewManagerConnection::OnNodeViewReplaced(const Node* node,
402 const View* new_view, 397 const View* new_view,
403 const View* old_view) { 398 const View* old_view) {
404 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); 399 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view);
405 } 400 }
406 401
407 } // namespace service 402 } // namespace service
408 } // namespace view_manager 403 } // namespace view_manager
409 } // namespace mojo 404 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698