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

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

Issue 311373005: Nesting (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_private.h" 5 #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h"
6 6
7 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" 7 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h"
8 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
8 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h" 9 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h"
9 10
10 namespace mojo { 11 namespace mojo {
11 namespace view_manager { 12 namespace view_manager {
12 namespace { 13 namespace {
13 14
14 // Responsible for removing a root from the ViewManager when that node is 15 // Responsible for removing a root from the ViewManager when that node is
15 // destroyed. 16 // destroyed.
16 class RootObserver : public ViewTreeNodeObserver { 17 class RootObserver : public ViewTreeNodeObserver {
17 public: 18 public:
(...skipping 25 matching lines...) Expand all
43 void ViewManagerPrivate::AddRoot(ViewTreeNode* root) { 44 void ViewManagerPrivate::AddRoot(ViewTreeNode* root) {
44 // A new root must not already exist as a root or be contained by an existing 45 // A new root must not already exist as a root or be contained by an existing
45 // hierarchy visible to this view manager. 46 // hierarchy visible to this view manager.
46 std::vector<ViewTreeNode*>::const_iterator it = manager_->roots().begin(); 47 std::vector<ViewTreeNode*>::const_iterator it = manager_->roots().begin();
47 for (; it != manager_->roots().end(); ++it) { 48 for (; it != manager_->roots().end(); ++it) {
48 if (*it == root || (*it)->Contains(root)) 49 if (*it == root || (*it)->Contains(root))
49 return; 50 return;
50 } 51 }
51 manager_->roots_.push_back(root); 52 manager_->roots_.push_back(root);
52 root->AddObserver(new RootObserver(root)); 53 root->AddObserver(new RootObserver(root));
53 if (!manager_->root_added_callback_.is_null()) 54 manager_->delegate_->OnRootAdded(manager_, root);
54 manager_->root_added_callback_.Run(manager_, root);
55 } 55 }
56 56
57 void ViewManagerPrivate::RemoveRoot(ViewTreeNode* root) { 57 void ViewManagerPrivate::RemoveRoot(ViewTreeNode* root) {
58 std::vector<ViewTreeNode*>::iterator it = 58 std::vector<ViewTreeNode*>::iterator it =
59 std::find(manager_->roots_.begin(), manager_->roots_.end(), root); 59 std::find(manager_->roots_.begin(), manager_->roots_.end(), root);
60 if (it != manager_->roots_.end()) { 60 if (it != manager_->roots_.end()) {
61 manager_->roots_.erase(it); 61 manager_->roots_.erase(it);
62 if (!manager_->root_removed_callback_.is_null()) 62 manager_->delegate_->OnRootRemoved(manager_, root);
63 manager_->root_removed_callback_.Run(manager_, root);
64 } 63 }
65 } 64 }
66 65
67 void ViewManagerPrivate::AddNode(TransportNodeId node_id, ViewTreeNode* node) { 66 void ViewManagerPrivate::AddNode(TransportNodeId node_id, ViewTreeNode* node) {
68 DCHECK(!manager_->nodes_[node_id]); 67 DCHECK(!manager_->nodes_[node_id]);
69 manager_->nodes_[node_id] = node; 68 manager_->nodes_[node_id] = node;
70 } 69 }
71 70
72 void ViewManagerPrivate::RemoveNode(TransportNodeId node_id) { 71 void ViewManagerPrivate::RemoveNode(TransportNodeId node_id) {
73 ViewManager::IdToNodeMap::iterator it = manager_->nodes_.find(node_id); 72 ViewManager::IdToNodeMap::iterator it = manager_->nodes_.find(node_id);
74 if (it != manager_->nodes_.end()) 73 if (it != manager_->nodes_.end())
75 manager_->nodes_.erase(it); 74 manager_->nodes_.erase(it);
76 } 75 }
77 76
78 void ViewManagerPrivate::AddView(TransportViewId view_id, View* view) { 77 void ViewManagerPrivate::AddView(TransportViewId view_id, View* view) {
79 DCHECK(!manager_->views_[view_id]); 78 DCHECK(!manager_->views_[view_id]);
80 manager_->views_[view_id] = view; 79 manager_->views_[view_id] = view;
81 } 80 }
82 81
83 void ViewManagerPrivate::RemoveView(TransportViewId view_id) { 82 void ViewManagerPrivate::RemoveView(TransportViewId view_id) {
84 ViewManager::IdToViewMap::iterator it = manager_->views_.find(view_id); 83 ViewManager::IdToViewMap::iterator it = manager_->views_.find(view_id);
85 if (it != manager_->views_.end()) 84 if (it != manager_->views_.end())
86 manager_->views_.erase(it); 85 manager_->views_.erase(it);
87 } 86 }
88 87
89 } // namespace view_manager 88 } // namespace view_manager
90 } // namespace mojo 89 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698