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

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

Issue 265793015: Mojo: Replace RemotePtr with InterfacePtr and InterfaceImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 std::vector<Node*> children(node->GetChildren()); 50 std::vector<Node*> children(node->GetChildren());
51 for (size_t i = 0 ; i < children.size(); ++i) { 51 for (size_t i = 0 ; i < children.size(); ++i) {
52 (*index)++; 52 (*index)++;
53 NodeToINode(children[i], array_builder, index); 53 NodeToINode(children[i], array_builder, index);
54 } 54 }
55 } 55 }
56 56
57 } // namespace 57 } // namespace
58 58
59 ViewManagerConnection::ViewManagerConnection() : id_(0) { 59 ViewManagerConnection::ViewManagerConnection() : client_(NULL), id_(0) {
60 } 60 }
61 61
62 ViewManagerConnection::~ViewManagerConnection() { 62 ViewManagerConnection::~ViewManagerConnection() {
63 // Delete any views we own. 63 // Delete any views we own.
64 while (!view_map_.empty()) { 64 while (!view_map_.empty()) {
65 bool result = DeleteViewImpl(this, view_map_.begin()->second->id(), 0); 65 bool result = DeleteViewImpl(this, view_map_.begin()->second->id(), 0);
66 DCHECK(result); 66 DCHECK(result);
67 } 67 }
68 68
69 // We're about to destroy all our nodes. Detach any views from them. 69 // We're about to destroy all our nodes. Detach any views from them.
70 for (NodeMap::iterator i = node_map_.begin(); i != node_map_.end(); ++i) { 70 for (NodeMap::iterator i = node_map_.begin(); i != node_map_.end(); ++i) {
71 if (i->second->view()) { 71 if (i->second->view()) {
72 bool result = SetViewImpl(i->second->id(), ViewId(), 0); 72 bool result = SetViewImpl(i->second->id(), ViewId(), 0);
73 DCHECK(result); 73 DCHECK(result);
74 } 74 }
75 } 75 }
76 76
77 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end()); 77 STLDeleteContainerPairSecondPointers(node_map_.begin(), node_map_.end());
78 context()->RemoveConnection(this); 78 context()->RemoveConnection(this);
79 } 79 }
80 80
81 void ViewManagerConnection::Initialize( 81 void ViewManagerConnection::Initialize() {
82 ServiceConnector<ViewManagerConnection, RootNodeManager>* service_factory,
83 ScopedMessagePipeHandle client_handle) {
84 DCHECK_EQ(0, id_); // Should only get Initialize() once. 82 DCHECK_EQ(0, id_); // Should only get Initialize() once.
85 ServiceConnection<IViewManager, ViewManagerConnection, RootNodeManager>::
86 Initialize(service_factory, client_handle.Pass());
87 id_ = context()->GetAndAdvanceNextConnectionId(); 83 id_ = context()->GetAndAdvanceNextConnectionId();
88 context()->AddConnection(this); 84 context()->AddConnection(this);
89 client()->OnConnectionEstablished(id_); 85 client_->OnConnectionEstablished(id_);
90 } 86 }
91 87
92 Node* ViewManagerConnection::GetNode(const NodeId& id) { 88 Node* ViewManagerConnection::GetNode(const NodeId& id) {
93 if (id_ == id.connection_id) { 89 if (id_ == id.connection_id) {
94 NodeMap::iterator i = node_map_.find(id.node_id); 90 NodeMap::iterator i = node_map_.find(id.node_id);
95 return i == node_map_.end() ? NULL : i->second; 91 return i == node_map_.end() ? NULL : i->second;
96 } 92 }
97 return context()->GetNode(id); 93 return context()->GetNode(id);
98 } 94 }
99 95
100 View* ViewManagerConnection::GetView(const ViewId& id) { 96 View* ViewManagerConnection::GetView(const ViewId& id) {
101 if (id_ == id.connection_id) { 97 if (id_ == id.connection_id) {
102 ViewMap::const_iterator i = view_map_.find(id.view_id); 98 ViewMap::const_iterator i = view_map_.find(id.view_id);
103 return i == view_map_.end() ? NULL : i->second; 99 return i == view_map_.end() ? NULL : i->second;
104 } 100 }
105 return context()->GetView(id); 101 return context()->GetView(id);
106 } 102 }
107 103
108 void ViewManagerConnection::NotifyNodeHierarchyChanged( 104 void ViewManagerConnection::NotifyNodeHierarchyChanged(
109 const NodeId& node, 105 const NodeId& node,
110 const NodeId& new_parent, 106 const NodeId& new_parent,
111 const NodeId& old_parent, 107 const NodeId& old_parent,
112 TransportChangeId change_id) { 108 TransportChangeId change_id) {
113 client()->OnNodeHierarchyChanged(NodeIdToTransportId(node), 109 client_->OnNodeHierarchyChanged(NodeIdToTransportId(node),
114 NodeIdToTransportId(new_parent), 110 NodeIdToTransportId(new_parent),
115 NodeIdToTransportId(old_parent), 111 NodeIdToTransportId(old_parent),
116 change_id); 112 change_id);
117 } 113 }
118 114
119 void ViewManagerConnection::NotifyNodeViewReplaced( 115 void ViewManagerConnection::NotifyNodeViewReplaced(
120 const NodeId& node, 116 const NodeId& node,
121 const ViewId& new_view_id, 117 const ViewId& new_view_id,
122 const ViewId& old_view_id, 118 const ViewId& old_view_id,
123 TransportChangeId change_id) { 119 TransportChangeId change_id) {
124 client()->OnNodeViewReplaced(NodeIdToTransportId(node), 120 client_->OnNodeViewReplaced(NodeIdToTransportId(node),
125 ViewIdToTransportId(new_view_id), 121 ViewIdToTransportId(new_view_id),
126 ViewIdToTransportId(old_view_id), 122 ViewIdToTransportId(old_view_id),
127 change_id); 123 change_id);
128 } 124 }
129 125
130 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, 126 bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source,
131 const NodeId& node_id, 127 const NodeId& node_id,
132 TransportChangeId change_id) { 128 TransportChangeId change_id) {
133 DCHECK_EQ(node_id.connection_id, id_); 129 DCHECK_EQ(node_id.connection_id, id_);
134 Node* node = GetNode(node_id); 130 Node* node = GetNode(node_id);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 if (!node) 164 if (!node)
169 return false; 165 return false;
170 View* view = GetView(view_id); 166 View* view = GetView(view_id);
171 if (!view && view_id != ViewId()) 167 if (!view && view_id != ViewId())
172 return false; 168 return false;
173 RootNodeManager::ScopedChange change(this, context(), change_id); 169 RootNodeManager::ScopedChange change(this, context(), change_id);
174 node->SetView(view); 170 node->SetView(view);
175 return true; 171 return true;
176 } 172 }
177 173
174 void ViewManagerConnection::SetClient(IViewManagerClient* client) {
175 client_ = client;
176 }
177
178 void ViewManagerConnection::CreateNode( 178 void ViewManagerConnection::CreateNode(
179 TransportConnectionSpecificNodeId node_id, 179 TransportConnectionSpecificNodeId node_id,
180 const Callback<void(bool)>& callback) { 180 const Callback<void(bool)>& callback) {
181 // Negative values are reserved. 181 // Negative values are reserved.
182 if (node_map_.find(node_id) != node_map_.end()) { 182 if (node_map_.find(node_id) != node_map_.end()) {
183 callback.Run(false); 183 callback.Run(false);
184 return; 184 return;
185 } 185 }
186 node_map_[node_id] = new Node(this, NodeId(id_, node_id)); 186 node_map_[node_id] = new Node(this, NodeId(id_, node_id));
187 callback.Run(true); 187 callback.Run(true);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 279
280 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node, 280 void ViewManagerConnection::OnNodeViewReplaced(const NodeId& node,
281 const ViewId& new_view_id, 281 const ViewId& new_view_id,
282 const ViewId& old_view_id) { 282 const ViewId& old_view_id) {
283 context()->NotifyNodeViewReplaced(node, new_view_id, old_view_id); 283 context()->NotifyNodeViewReplaced(node, new_view_id, old_view_id);
284 } 284 }
285 285
286 } // namespace view_manager 286 } // namespace view_manager
287 } // namespace services 287 } // namespace services
288 } // namespace mojo 288 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698