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

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

Issue 338353006: Changes routing of input events in view manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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_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 "base/stl_util.h" 8 #include "base/stl_util.h"
9 #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" 10 #include "mojo/services/public/cpp/input_events/input_events_type_converters.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 226 }
227 } 227 }
228 228
229 void ViewManagerServiceImpl::ProcessViewDeleted(const ViewId& view, 229 void ViewManagerServiceImpl::ProcessViewDeleted(const ViewId& view,
230 bool originated_change) { 230 bool originated_change) {
231 if (originated_change) 231 if (originated_change)
232 return; 232 return;
233 client()->OnViewDeleted(ViewIdToTransportId(view)); 233 client()->OnViewDeleted(ViewIdToTransportId(view));
234 } 234 }
235 235
236 void ViewManagerServiceImpl::ProcessViewInputEvent(const View* view,
237 const ui::Event* event) {
238 DCHECK_EQ(id_, view->id().connection_id);
239 client()->OnViewInputEvent(
240 ViewIdToTransportId(view->id()),
241 TypeConverter<EventPtr, ui::Event>::ConvertFrom(*event),
242 base::Bind(&base::DoNothing));
243 }
244
245 void ViewManagerServiceImpl::OnConnectionError() { 236 void ViewManagerServiceImpl::OnConnectionError() {
246 if (delete_on_connection_error_) 237 if (delete_on_connection_error_)
247 delete this; 238 delete this;
248 } 239 }
249 240
250 bool ViewManagerServiceImpl::CanRemoveNodeFromParent(const Node* node) const { 241 bool ViewManagerServiceImpl::CanRemoveNodeFromParent(const Node* node) const {
251 if (!node) 242 if (!node)
252 return false; 243 return false;
253 244
254 const Node* parent = node->GetParent(); 245 const Node* parent = node->GetParent();
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 ViewManagerServiceImpl* existing_connection = 737 ViewManagerServiceImpl* existing_connection =
747 root_node_manager_->GetConnectionByCreator(id_, url.To<std::string>()); 738 root_node_manager_->GetConnectionByCreator(id_, url.To<std::string>());
748 if (existing_connection) 739 if (existing_connection)
749 success = existing_connection->AddRoots(node_ids.storage()); 740 success = existing_connection->AddRoots(node_ids.storage());
750 else 741 else
751 root_node_manager_->Embed(id_, url, node_ids); 742 root_node_manager_->Embed(id_, url, node_ids);
752 } 743 }
753 callback.Run(success); 744 callback.Run(success);
754 } 745 }
755 746
747 void ViewManagerServiceImpl::DispatchOnViewInputEvent(Id transport_view_id,
748 EventPtr event) {
749 // We only allow the WM to dispatch events. At some point this function will
750 // move to a separate interface and the check can go away.
751 if (id_ != kWindowManagerConnection)
752 return;
753
754 const ViewId view_id(ViewIdFromTransportId(transport_view_id));
755 ViewManagerServiceImpl* connection = root_node_manager_->GetConnection(
756 view_id.connection_id);
757 if (connection)
758 connection->client()->OnViewInputEvent(
759 transport_view_id,
760 event.Pass(),
761 base::Bind(&base::DoNothing));
762 }
763
756 void ViewManagerServiceImpl::OnNodeHierarchyChanged(const Node* node, 764 void ViewManagerServiceImpl::OnNodeHierarchyChanged(const Node* node,
757 const Node* new_parent, 765 const Node* new_parent,
758 const Node* old_parent) { 766 const Node* old_parent) {
759 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent); 767 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent);
760 } 768 }
761 769
762 void ViewManagerServiceImpl::OnNodeViewReplaced(const Node* node, 770 void ViewManagerServiceImpl::OnNodeViewReplaced(const Node* node,
763 const View* new_view, 771 const View* new_view,
764 const View* old_view) { 772 const View* old_view) {
765 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); 773 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view);
766 } 774 }
767 775
768 void ViewManagerServiceImpl::OnViewInputEvent(const View* view, 776 void ViewManagerServiceImpl::OnViewInputEvent(const View* view,
769 const ui::Event* event) { 777 const ui::Event* event) {
770 ViewManagerServiceImpl* connection = root_node_manager_->GetConnection( 778 root_node_manager_->DispatchViewInputEventToWindowManager(view, event);
771 view->id().connection_id);
772 DCHECK(connection);
773 connection->ProcessViewInputEvent(view, event);
774 } 779 }
775 780
776 void ViewManagerServiceImpl::OnConnectionEstablished() { 781 void ViewManagerServiceImpl::OnConnectionEstablished() {
777 root_node_manager_->AddConnection(this); 782 root_node_manager_->AddConnection(this);
778 783
779 std::vector<const Node*> to_send; 784 std::vector<const Node*> to_send;
780 if (roots_.empty()) { 785 if (roots_.empty()) {
781 GetUnknownNodesFrom(root_node_manager_->root(), &to_send); 786 GetUnknownNodesFrom(root_node_manager_->root(), &to_send);
782 } else { 787 } else {
783 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i) 788 for (NodeIdSet::const_iterator i = roots_.begin(); i != roots_.end(); ++i)
784 GetUnknownNodesFrom(GetNode(NodeIdFromTransportId(*i)), &to_send); 789 GetUnknownNodesFrom(GetNode(NodeIdFromTransportId(*i)), &to_send);
785 } 790 }
786 791
787 client()->OnViewManagerConnectionEstablished( 792 client()->OnViewManagerConnectionEstablished(
788 id_, 793 id_,
789 creator_url_, 794 creator_url_,
790 root_node_manager_->next_server_change_id(), 795 root_node_manager_->next_server_change_id(),
791 NodesToNodeDatas(to_send)); 796 NodesToNodeDatas(to_send));
792 } 797 }
793 798
794 } // namespace service 799 } // namespace service
795 } // namespace view_manager 800 } // namespace view_manager
796 } // namespace mojo 801 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/view_manager_service_impl.h ('k') | mojo/services/view_manager/view_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698