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_connection.h" | 5 #include "mojo/services/view_manager/view_manager_connection.h" |
6 | 6 |
| 7 #include "base/bind.h" |
7 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
8 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" | 9 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" |
| 10 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h" |
9 #include "mojo/services/view_manager/node.h" | 11 #include "mojo/services/view_manager/node.h" |
10 #include "mojo/services/view_manager/root_node_manager.h" | 12 #include "mojo/services/view_manager/root_node_manager.h" |
11 #include "mojo/services/view_manager/view.h" | 13 #include "mojo/services/view_manager/view.h" |
12 #include "third_party/skia/include/core/SkBitmap.h" | 14 #include "third_party/skia/include/core/SkBitmap.h" |
13 #include "ui/aura/window.h" | 15 #include "ui/aura/window.h" |
14 #include "ui/gfx/codec/png_codec.h" | 16 #include "ui/gfx/codec/png_codec.h" |
15 | 17 |
16 namespace mojo { | 18 namespace mojo { |
17 namespace view_manager { | 19 namespace view_manager { |
18 namespace service { | 20 namespace service { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 if (originated_change || !known_nodes_.count(NodeIdToTransportId(node->id()))) | 164 if (originated_change || !known_nodes_.count(NodeIdToTransportId(node->id()))) |
163 return; | 165 return; |
164 const TransportViewId new_view_id = new_view ? | 166 const TransportViewId new_view_id = new_view ? |
165 ViewIdToTransportId(new_view->id()) : 0; | 167 ViewIdToTransportId(new_view->id()) : 0; |
166 const TransportViewId old_view_id = old_view ? | 168 const TransportViewId old_view_id = old_view ? |
167 ViewIdToTransportId(old_view->id()) : 0; | 169 ViewIdToTransportId(old_view->id()) : 0; |
168 client()->OnNodeViewReplaced(NodeIdToTransportId(node->id()), | 170 client()->OnNodeViewReplaced(NodeIdToTransportId(node->id()), |
169 new_view_id, old_view_id); | 171 new_view_id, old_view_id); |
170 } | 172 } |
171 | 173 |
| 174 void ViewManagerConnection::ProcessViewInputEvent(const View* view, |
| 175 const ui::Event* event) { |
| 176 const TransportViewId view_id = ViewIdToTransportId(view->id()); |
| 177 if (view->id().connection_id != id_) |
| 178 return; |
| 179 client()->OnViewInputEvent( |
| 180 view_id, |
| 181 TypeConverter<EventPtr, ui::Event>::ConvertFrom(*event), |
| 182 base::Bind(&base::DoNothing)); |
| 183 } |
| 184 |
172 void ViewManagerConnection::ProcessNodeDeleted( | 185 void ViewManagerConnection::ProcessNodeDeleted( |
173 const NodeId& node, | 186 const NodeId& node, |
174 TransportChangeId server_change_id, | 187 TransportChangeId server_change_id, |
175 bool originated_change) { | 188 bool originated_change) { |
176 const bool in_known = known_nodes_.erase(NodeIdToTransportId(node)) > 0; | 189 const bool in_known = known_nodes_.erase(NodeIdToTransportId(node)) > 0; |
177 const bool in_roots = roots_.erase(NodeIdToTransportId(node)) > 0; | 190 const bool in_roots = roots_.erase(NodeIdToTransportId(node)) > 0; |
178 | 191 |
179 if (in_roots && roots_.empty()) | 192 if (in_roots && roots_.empty()) |
180 roots_.insert(NodeIdToTransportId(InvalidNodeId())); | 193 roots_.insert(NodeIdToTransportId(InvalidNodeId())); |
181 | 194 |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 const Node* old_parent) { | 619 const Node* old_parent) { |
607 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent); | 620 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent); |
608 } | 621 } |
609 | 622 |
610 void ViewManagerConnection::OnNodeViewReplaced(const Node* node, | 623 void ViewManagerConnection::OnNodeViewReplaced(const Node* node, |
611 const View* new_view, | 624 const View* new_view, |
612 const View* old_view) { | 625 const View* old_view) { |
613 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); | 626 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); |
614 } | 627 } |
615 | 628 |
| 629 void ViewManagerConnection::OnViewInputEvent(const View* view, |
| 630 const ui::Event* event) { |
| 631 root_node_manager_->ProcessViewInputEvent(view, event); |
| 632 } |
| 633 |
616 void ViewManagerConnection::OnConnectionEstablished() { | 634 void ViewManagerConnection::OnConnectionEstablished() { |
617 DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once. | 635 DCHECK_EQ(0, id_); // Should only get OnConnectionEstablished() once. |
618 | 636 |
619 id_ = root_node_manager_->GetAndAdvanceNextConnectionId(); | 637 id_ = root_node_manager_->GetAndAdvanceNextConnectionId(); |
620 | 638 |
621 root_node_manager_->AddConnection(this); | 639 root_node_manager_->AddConnection(this); |
622 | 640 |
623 std::vector<const Node*> to_send; | 641 std::vector<const Node*> to_send; |
624 if (roots_.empty()) { | 642 if (roots_.empty()) { |
625 GetUnknownNodesFrom(root_node_manager_->root(), &to_send); | 643 GetUnknownNodesFrom(root_node_manager_->root(), &to_send); |
626 } else { | 644 } else { |
627 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i) | 645 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i) |
628 GetUnknownNodesFrom(GetNode(NodeIdFromTransportId(*i)), &to_send); | 646 GetUnknownNodesFrom(GetNode(NodeIdFromTransportId(*i)), &to_send); |
629 } | 647 } |
630 | 648 |
631 client()->OnViewManagerConnectionEstablished( | 649 client()->OnViewManagerConnectionEstablished( |
632 id_, | 650 id_, |
633 root_node_manager_->next_server_change_id(), | 651 root_node_manager_->next_server_change_id(), |
634 NodesToINodes(to_send)); | 652 NodesToINodes(to_send)); |
635 } | 653 } |
636 | 654 |
637 } // namespace service | 655 } // namespace service |
638 } // namespace view_manager | 656 } // namespace view_manager |
639 } // namespace mojo | 657 } // namespace mojo |
OLD | NEW |