OLD | NEW |
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_service_impl.h" | 5 #include "mojo/services/view_manager/view_manager_service_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" | 8 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" |
9 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h" | 9 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h" |
10 #include "mojo/services/view_manager/node.h" | 10 #include "mojo/services/view_manager/node.h" |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
535 inode->view_id = | 535 inode->view_id = |
536 ViewIdToTransportId(node->view() ? node->view()->id() : ViewId()); | 536 ViewIdToTransportId(node->view() ? node->view()->id() : ViewId()); |
537 inode->bounds = Rect::From(node->bounds()); | 537 inode->bounds = Rect::From(node->bounds()); |
538 array[i] = inode.Pass(); | 538 array[i] = inode.Pass(); |
539 } | 539 } |
540 return array.Pass(); | 540 return array.Pass(); |
541 } | 541 } |
542 | 542 |
543 void ViewManagerServiceImpl::CreateNode( | 543 void ViewManagerServiceImpl::CreateNode( |
544 Id transport_node_id, | 544 Id transport_node_id, |
545 const Callback<void(bool)>& callback) { | 545 const Callback<void(ErrorCode)>& callback) { |
546 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); | 546 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); |
547 if (node_id.connection_id != id_ || | 547 ErrorCode error_code = ERROR_CODE_NONE; |
548 node_map_.find(node_id.node_id) != node_map_.end()) { | 548 if (node_id.connection_id != id_) { |
549 callback.Run(false); | 549 error_code = ERROR_CODE_ILLEGAL_ARGUMENT; |
550 return; | 550 } else if (node_map_.find(node_id.node_id) != node_map_.end()) { |
| 551 error_code = ERROR_CODE_VALUE_IN_USE; |
| 552 } else { |
| 553 node_map_[node_id.node_id] = new Node(root_node_manager_, node_id); |
| 554 known_nodes_.insert(transport_node_id); |
551 } | 555 } |
552 node_map_[node_id.node_id] = new Node(root_node_manager_, node_id); | 556 callback.Run(error_code); |
553 known_nodes_.insert(transport_node_id); | |
554 callback.Run(true); | |
555 } | 557 } |
556 | 558 |
557 void ViewManagerServiceImpl::DeleteNode( | 559 void ViewManagerServiceImpl::DeleteNode( |
558 Id transport_node_id, | 560 Id transport_node_id, |
559 Id server_change_id, | 561 Id server_change_id, |
560 const Callback<void(bool)>& callback) { | 562 const Callback<void(bool)>& callback) { |
561 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); | 563 const NodeId node_id(NodeIdFromTransportId(transport_node_id)); |
562 bool success = false; | 564 bool success = false; |
563 if (server_change_id == root_node_manager_->next_server_change_id() && | 565 if (server_change_id == root_node_manager_->next_server_change_id() && |
564 CanDeleteNode(node_id)) { | 566 CanDeleteNode(node_id)) { |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 client()->OnViewManagerConnectionEstablished( | 797 client()->OnViewManagerConnectionEstablished( |
796 id_, | 798 id_, |
797 creator_url_, | 799 creator_url_, |
798 root_node_manager_->next_server_change_id(), | 800 root_node_manager_->next_server_change_id(), |
799 NodesToNodeDatas(to_send)); | 801 NodesToNodeDatas(to_send)); |
800 } | 802 } |
801 | 803 |
802 } // namespace service | 804 } // namespace service |
803 } // namespace view_manager | 805 } // namespace view_manager |
804 } // namespace mojo | 806 } // namespace mojo |
OLD | NEW |