| 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 cac1ef3ec02fbd1ea22f825cf04bd9429f0a79c9..ed92cd519b12040734211865357ce3982674153b 100644
|
| --- a/mojo/services/view_manager/view_manager_connection.cc
|
| +++ b/mojo/services/view_manager/view_manager_connection.cc
|
| @@ -72,9 +72,9 @@ void ViewManagerConnection::OnConnectionEstablished() {
|
|
|
| void ViewManagerConnection::OnConnectionError() {}
|
|
|
| -Node* ViewManagerConnection::GetNode(const NodeId& id) {
|
| +const Node* ViewManagerConnection::GetNode(const NodeId& id) const {
|
| if (id_ == id.connection_id) {
|
| - NodeMap::iterator i = node_map_.find(id.node_id);
|
| + NodeMap::const_iterator i = node_map_.find(id.node_id);
|
| return i == node_map_.end() ? NULL : i->second;
|
| }
|
| return root_node_manager_->GetNode(id);
|
| @@ -153,6 +153,14 @@ void ViewManagerConnection::ProcessViewDeleted(const ViewId& view,
|
| client()->OnViewDeleted(ViewIdToTransportId(view));
|
| }
|
|
|
| +bool ViewManagerConnection::CanDeleteNode(const NodeId& node_id) const {
|
| + return node_id.connection_id == id_;
|
| +}
|
| +
|
| +bool ViewManagerConnection::CanDeleteView(const ViewId& view_id) const {
|
| + return view_id.connection_id == id_;
|
| +}
|
| +
|
| bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source,
|
| const NodeId& node_id) {
|
| DCHECK_EQ(node_id.connection_id, id_);
|
| @@ -272,10 +280,13 @@ void ViewManagerConnection::DeleteNode(
|
| const Callback<void(bool)>& callback) {
|
| AllocationScope allocation_scope;
|
| const NodeId node_id(NodeIdFromTransportId(transport_node_id));
|
| - ViewManagerConnection* connection = root_node_manager_->GetConnection(
|
| - node_id.connection_id);
|
| - callback.Run(connection &&
|
| - connection->DeleteNodeImpl(this, node_id));
|
| + bool did_delete = CanDeleteNode(node_id);
|
| + if (did_delete) {
|
| + ViewManagerConnection* connection = root_node_manager_->GetConnection(
|
| + node_id.connection_id);
|
| + did_delete = connection && connection->DeleteNodeImpl(this, node_id);
|
| + }
|
| + callback.Run(did_delete);
|
| }
|
|
|
| void ViewManagerConnection::AddNode(
|
| @@ -345,9 +356,13 @@ void ViewManagerConnection::DeleteView(
|
| TransportViewId transport_view_id,
|
| const Callback<void(bool)>& callback) {
|
| const ViewId view_id(ViewIdFromTransportId(transport_view_id));
|
| - ViewManagerConnection* connection = root_node_manager_->GetConnection(
|
| - view_id.connection_id);
|
| - callback.Run(connection && connection->DeleteViewImpl(this, view_id));
|
| + bool did_delete = CanDeleteView(view_id);
|
| + if (did_delete) {
|
| + ViewManagerConnection* connection = root_node_manager_->GetConnection(
|
| + view_id.connection_id);
|
| + did_delete = (connection && connection->DeleteViewImpl(this, view_id));
|
| + }
|
| + callback.Run(did_delete);
|
| }
|
|
|
| void ViewManagerConnection::SetView(
|
|
|