| 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/public/cpp/view_manager/lib/view_manager_synchronizer.h" | 5 #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "mojo/public/cpp/application/connect.h" | 9 #include "mojo/public/cpp/application/connect.h" |
| 10 #include "mojo/public/interfaces/service_provider/service_provider.mojom.h" | 10 #include "mojo/public/interfaces/service_provider/service_provider.mojom.h" |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 // ViewManagerSynchronizer, IViewManagerClient implementation: | 554 // ViewManagerSynchronizer, IViewManagerClient implementation: |
| 555 | 555 |
| 556 void ViewManagerSynchronizer::OnViewManagerConnectionEstablished( | 556 void ViewManagerSynchronizer::OnViewManagerConnectionEstablished( |
| 557 TransportConnectionId connection_id, | 557 TransportConnectionId connection_id, |
| 558 TransportChangeId next_server_change_id, | 558 TransportChangeId next_server_change_id, |
| 559 mojo::Array<INodePtr> nodes) { | 559 mojo::Array<INodePtr> nodes) { |
| 560 connected_ = true; | 560 connected_ = true; |
| 561 connection_id_ = connection_id; | 561 connection_id_ = connection_id; |
| 562 next_server_change_id_ = next_server_change_id; | 562 next_server_change_id_ = next_server_change_id; |
| 563 | 563 |
| 564 DCHECK(pending_transactions_.empty()); |
| 564 ViewManagerPrivate private_manager(view_manager()); | 565 ViewManagerPrivate private_manager(view_manager()); |
| 565 private_manager.set_root(BuildNodeTree(view_manager(), nodes)); | 566 private_manager.AddRoot(BuildNodeTree(view_manager(), nodes)); |
| 566 Sync(); | |
| 567 private_manager.NotifyReady(); | |
| 568 } | 567 } |
| 569 | 568 |
| 570 void ViewManagerSynchronizer::OnRootsAdded(Array<INodePtr> nodes) { | 569 void ViewManagerSynchronizer::OnRootsAdded(Array<INodePtr> nodes) { |
| 570 ViewManagerPrivate private_manager(view_manager()); |
| 571 private_manager.AddRoot(BuildNodeTree(view_manager(), nodes)); |
| 571 } | 572 } |
| 572 | 573 |
| 573 void ViewManagerSynchronizer::OnServerChangeIdAdvanced( | 574 void ViewManagerSynchronizer::OnServerChangeIdAdvanced( |
| 574 uint32_t next_server_change_id) { | 575 uint32_t next_server_change_id) { |
| 575 next_server_change_id_ = next_server_change_id; | 576 next_server_change_id_ = next_server_change_id; |
| 576 } | 577 } |
| 577 | 578 |
| 578 void ViewManagerSynchronizer::OnNodeBoundsChanged(uint32 node_id, | 579 void ViewManagerSynchronizer::OnNodeBoundsChanged(uint32 node_id, |
| 579 RectPtr old_bounds, | 580 RectPtr old_bounds, |
| 580 RectPtr new_bounds) { | 581 RectPtr new_bounds) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 601 ViewTreeNodePrivate(new_parent).LocalAddChild(node); | 602 ViewTreeNodePrivate(new_parent).LocalAddChild(node); |
| 602 else | 603 else |
| 603 ViewTreeNodePrivate(old_parent).LocalRemoveChild(node); | 604 ViewTreeNodePrivate(old_parent).LocalRemoveChild(node); |
| 604 } | 605 } |
| 605 | 606 |
| 606 void ViewManagerSynchronizer::OnNodeDeleted(uint32_t node_id, | 607 void ViewManagerSynchronizer::OnNodeDeleted(uint32_t node_id, |
| 607 uint32_t server_change_id) { | 608 uint32_t server_change_id) { |
| 608 next_server_change_id_ = server_change_id + 1; | 609 next_server_change_id_ = server_change_id + 1; |
| 609 | 610 |
| 610 ViewTreeNode* node = view_manager()->GetNodeById(node_id); | 611 ViewTreeNode* node = view_manager()->GetNodeById(node_id); |
| 611 if (node) { | 612 if (node) |
| 612 if (view_manager()->tree() == node) | |
| 613 ViewManagerPrivate(view_manager()).set_root(NULL); | |
| 614 ViewTreeNodePrivate(node).LocalDestroy(); | 613 ViewTreeNodePrivate(node).LocalDestroy(); |
| 615 } | |
| 616 } | 614 } |
| 617 | 615 |
| 618 void ViewManagerSynchronizer::OnNodeViewReplaced(uint32_t node_id, | 616 void ViewManagerSynchronizer::OnNodeViewReplaced(uint32_t node_id, |
| 619 uint32_t new_view_id, | 617 uint32_t new_view_id, |
| 620 uint32_t old_view_id) { | 618 uint32_t old_view_id) { |
| 621 ViewTreeNode* node = view_manager()->GetNodeById(node_id); | 619 ViewTreeNode* node = view_manager()->GetNodeById(node_id); |
| 622 View* new_view = view_manager()->GetViewById(new_view_id); | 620 View* new_view = view_manager()->GetViewById(new_view_id); |
| 623 if (!new_view && new_view_id != 0) { | 621 if (!new_view && new_view_id != 0) { |
| 624 // This client wasn't aware of this View until now. | 622 // This client wasn't aware of this View until now. |
| 625 new_view = ViewPrivate::LocalCreate(); | 623 new_view = ViewPrivate::LocalCreate(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 void ViewManagerSynchronizer::RemoveFromPendingQueue( | 671 void ViewManagerSynchronizer::RemoveFromPendingQueue( |
| 674 ViewManagerTransaction* transaction) { | 672 ViewManagerTransaction* transaction) { |
| 675 DCHECK_EQ(transaction, pending_transactions_.front()); | 673 DCHECK_EQ(transaction, pending_transactions_.front()); |
| 676 pending_transactions_.erase(pending_transactions_.begin()); | 674 pending_transactions_.erase(pending_transactions_.begin()); |
| 677 if (pending_transactions_.empty() && !changes_acked_callback_.is_null()) | 675 if (pending_transactions_.empty() && !changes_acked_callback_.is_null()) |
| 678 changes_acked_callback_.Run(); | 676 changes_acked_callback_.Run(); |
| 679 } | 677 } |
| 680 | 678 |
| 681 } // namespace view_manager | 679 } // namespace view_manager |
| 682 } // namespace mojo | 680 } // namespace mojo |
| OLD | NEW |