Chromium Code Reviews| 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/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "mojo/geometry/geometry_type_converters.h" | |
| 8 #include "mojo/public/cpp/bindings/allocation_scope.h" | 9 #include "mojo/public/cpp/bindings/allocation_scope.h" |
| 9 #include "mojo/services/view_manager/node.h" | 10 #include "mojo/services/view_manager/node.h" |
| 10 #include "mojo/services/view_manager/root_node_manager.h" | 11 #include "mojo/services/view_manager/root_node_manager.h" |
| 11 #include "mojo/services/view_manager/view.h" | 12 #include "mojo/services/view_manager/view.h" |
| 12 #include "third_party/skia/include/core/SkBitmap.h" | 13 #include "third_party/skia/include/core/SkBitmap.h" |
| 13 #include "ui/aura/window.h" | 14 #include "ui/aura/window.h" |
| 14 #include "ui/gfx/codec/png_codec.h" | 15 #include "ui/gfx/codec/png_codec.h" |
| 15 | 16 |
| 16 namespace mojo { | 17 namespace mojo { |
| 17 namespace view_manager { | 18 namespace view_manager { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 78 } | 79 } |
| 79 | 80 |
| 80 View* ViewManagerConnection::GetView(const ViewId& id) { | 81 View* ViewManagerConnection::GetView(const ViewId& id) { |
| 81 if (id_ == id.connection_id) { | 82 if (id_ == id.connection_id) { |
| 82 ViewMap::const_iterator i = view_map_.find(id.view_id); | 83 ViewMap::const_iterator i = view_map_.find(id.view_id); |
| 83 return i == view_map_.end() ? NULL : i->second; | 84 return i == view_map_.end() ? NULL : i->second; |
| 84 } | 85 } |
| 85 return root_node_manager_->GetView(id); | 86 return root_node_manager_->GetView(id); |
| 86 } | 87 } |
| 87 | 88 |
| 89 void ViewManagerConnection::ProcessNodeBoundsChanged( | |
| 90 const Node* node, | |
| 91 const gfx::Rect& old_bounds, | |
| 92 const gfx::Rect& new_bounds, | |
| 93 bool originated_change) { | |
| 94 if (originated_change) | |
| 95 return; | |
| 96 TransportNodeId node_id = NodeIdToTransportId(node->id()); | |
| 97 if (known_nodes_.count(node_id) > 0) { | |
| 98 AllocationScope scope; | |
| 99 client()->OnNodeBoundsChanged(node_id, old_bounds, new_bounds); | |
| 100 } | |
| 101 } | |
| 102 | |
| 88 void ViewManagerConnection::ProcessNodeHierarchyChanged( | 103 void ViewManagerConnection::ProcessNodeHierarchyChanged( |
| 89 const Node* node, | 104 const Node* node, |
| 90 const Node* new_parent, | 105 const Node* new_parent, |
| 91 const Node* old_parent, | 106 const Node* old_parent, |
| 92 TransportChangeId server_change_id, | 107 TransportChangeId server_change_id, |
| 93 bool originated_change) { | 108 bool originated_change) { |
| 94 if (known_nodes_.count(NodeIdToTransportId(node->id())) > 0) { | 109 if (known_nodes_.count(NodeIdToTransportId(node->id())) > 0) { |
| 95 if (originated_change) | 110 if (originated_change) |
| 96 return; | 111 return; |
| 97 if (node->id().connection_id != id_ && !IsNodeDescendantOfRoots(node)) { | 112 if (node->id().connection_id != id_ && !IsNodeDescendantOfRoots(node)) { |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 504 void ViewManagerConnection::SetRoots( | 519 void ViewManagerConnection::SetRoots( |
| 505 TransportConnectionId connection_id, | 520 TransportConnectionId connection_id, |
| 506 const Array<TransportNodeId>& transport_node_ids, | 521 const Array<TransportNodeId>& transport_node_ids, |
| 507 const Callback<void(bool)>& callback) { | 522 const Callback<void(bool)>& callback) { |
| 508 ViewManagerConnection* connection = | 523 ViewManagerConnection* connection = |
| 509 root_node_manager_->GetConnection(connection_id); | 524 root_node_manager_->GetConnection(connection_id); |
| 510 callback.Run(connection && | 525 callback.Run(connection && |
| 511 connection->ProcessSetRoots(id_, transport_node_ids)); | 526 connection->ProcessSetRoots(id_, transport_node_ids)); |
| 512 } | 527 } |
| 513 | 528 |
| 529 void ViewManagerConnection::SetNodeBounds( | |
| 530 TransportNodeId node_id, | |
| 531 const Rect& bounds, | |
| 532 const Callback<void(bool)>& callback) { | |
| 533 bool success = false; | |
| 534 Node* node = GetNode(NodeIdFromTransportId(node_id)); | |
|
sky
2014/05/21 21:16:35
Only do this if node->id().connection_id == id_.
| |
| 535 if (node) { | |
| 536 RootNodeManager::ScopedChange change( | |
| 537 this, root_node_manager_, | |
| 538 RootNodeManager::CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID, false); | |
| 539 gfx::Rect old_bounds = node->window()->bounds(); | |
| 540 node->window()->SetBounds(bounds); | |
| 541 root_node_manager_->ProcessNodeBoundsChanged(node, old_bounds, bounds); | |
| 542 success = true; | |
| 543 } | |
| 544 callback.Run(success); | |
| 545 } | |
| 546 | |
| 514 void ViewManagerConnection::OnNodeHierarchyChanged(const Node* node, | 547 void ViewManagerConnection::OnNodeHierarchyChanged(const Node* node, |
| 515 const Node* new_parent, | 548 const Node* new_parent, |
| 516 const Node* old_parent) { | 549 const Node* old_parent) { |
| 517 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent); | 550 root_node_manager_->ProcessNodeHierarchyChanged(node, new_parent, old_parent); |
| 518 } | 551 } |
| 519 | 552 |
| 520 void ViewManagerConnection::OnNodeViewReplaced(const Node* node, | 553 void ViewManagerConnection::OnNodeViewReplaced(const Node* node, |
| 521 const View* new_view, | 554 const View* new_view, |
| 522 const View* old_view) { | 555 const View* old_view) { |
| 523 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); | 556 root_node_manager_->ProcessNodeViewReplaced(node, new_view, old_view); |
| 524 } | 557 } |
| 525 | 558 |
| 526 } // namespace service | 559 } // namespace service |
| 527 } // namespace view_manager | 560 } // namespace view_manager |
| 528 } // namespace mojo | 561 } // namespace mojo |
| OLD | NEW |