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

Unified Diff: mojo/services/public/cpp/view_manager/lib/view_tree_node.cc

Issue 260863008: Add support for mapping node tree on the client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: mojo/services/public/cpp/view_manager/lib/view_tree_node.cc
diff --git a/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc b/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc
index d695ed4a45acb52a6f91fad8035a904892664a91..8ba0fd365f8688a8e01077363454d6c3b731f037 100644
--- a/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc
+++ b/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc
@@ -118,6 +118,8 @@ ViewTreeNode::~ViewTreeNode() {
if (parent_)
parent_->RemoveChild(this);
+ if (manager_)
+ ViewManagerPrivate(manager_).synchronizer()->DestroyViewTreeNode(id_);
}
void ViewTreeNode::AddObserver(ViewTreeNodeObserver* observer) {
@@ -129,19 +131,15 @@ void ViewTreeNode::RemoveObserver(ViewTreeNodeObserver* observer) {
}
void ViewTreeNode::AddChild(ViewTreeNode* child) {
- ScopedTreeNotifier notifier(child, child->parent(), this);
- if (child->parent())
- RemoveChildImpl(child, &child->parent_->children_);
- children_.push_back(child);
- child->parent_ = this;
- ViewManagerPrivate(manager_).synchronizer()->AddChild(child->id(), id_);
+ LocalAddChild(child);
+ if (manager_)
+ ViewManagerPrivate(manager_).synchronizer()->AddChild(child->id(), id_);
}
void ViewTreeNode::RemoveChild(ViewTreeNode* child) {
- DCHECK_EQ(this, child->parent());
- ScopedTreeNotifier(child, this, NULL);
- RemoveChildImpl(child, &children_);
- ViewManagerPrivate(manager_).synchronizer()->RemoveChild(child->id(), id_);
+ LocalRemoveChild(child);
+ if (manager_)
+ ViewManagerPrivate(manager_).synchronizer()->RemoveChild(child->id(), id_);
}
bool ViewTreeNode::Contains(ViewTreeNode* child) const {
@@ -152,6 +150,23 @@ bool ViewTreeNode::Contains(ViewTreeNode* child) const {
return false;
}
+////////////////////////////////////////////////////////////////////////////////
+// ViewTreeNode, private:
+
+void ViewTreeNode::LocalAddChild(ViewTreeNode* child) {
+ ScopedTreeNotifier notifier(child, child->parent(), this);
+ if (child->parent())
+ RemoveChildImpl(child, &child->parent_->children_);
+ children_.push_back(child);
+ child->parent_ = this;
+}
+
+void ViewTreeNode::LocalRemoveChild(ViewTreeNode* child) {
+ DCHECK_EQ(this, child->parent());
+ ScopedTreeNotifier(child, this, NULL);
+ RemoveChildImpl(child, &children_);
+}
+
} // namespace view_manager
} // namespace services
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698