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 |