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

Side by Side Diff: mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc

Issue 316083002: Add support for multiple roots to the client lib. (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/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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698