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

Unified Diff: mojo/services/public/cpp/view_manager/view_tree_node.h

Issue 274733004: Deletion/ownership (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/view_tree_node.h
diff --git a/mojo/services/public/cpp/view_manager/view_tree_node.h b/mojo/services/public/cpp/view_manager/view_tree_node.h
index 280aaf87e5604379f62d93e7d7008f5d8e595afb..b2af9cb122140a17d0ab0d2a368a9ef3c8293b57 100644
--- a/mojo/services/public/cpp/view_manager/view_tree_node.h
+++ b/mojo/services/public/cpp/view_manager/view_tree_node.h
@@ -18,19 +18,21 @@ namespace view_manager {
class ViewManager;
class ViewTreeNodeObserver;
+// ViewTreeNodes are owned by the ViewManager.
+// TODO(beng): Right now, you'll have to implement a ViewTreeNodeObserver to
+// track destruction and NULL any pointers you have.
+// Investigate some kind of smart pointer or weak pointer for these.
class ViewTreeNode {
public:
typedef std::vector<ViewTreeNode*> Children;
- explicit ViewTreeNode(ViewManager* manager);
- ViewTreeNode(); // Used for tests.
- ~ViewTreeNode();
+ static ViewTreeNode* Create(ViewManager* view_manager);
+
+ // Destroys this node and all its children.
+ void Destroy();
// Configuration.
TransportNodeId id() const { return id_; }
- void set_owned_by_parent(bool owned_by_parent) {
- owned_by_parent_ = owned_by_parent;
- }
// Observation.
void AddObserver(ViewTreeNodeObserver* observer);
@@ -48,15 +50,22 @@ class ViewTreeNode {
ViewTreeNode* GetChildById(TransportNodeId id);
+ protected:
+ // This class is subclassed only by test classes that provide a public ctor.
+ ViewTreeNode();
+ ~ViewTreeNode();
+
private:
friend class ViewTreeNodePrivate;
+ explicit ViewTreeNode(ViewManager* manager);
+
+ void LocalDestroy();
void LocalAddChild(ViewTreeNode* child);
void LocalRemoveChild(ViewTreeNode* child);
ViewManager* manager_;
TransportNodeId id_;
- bool owned_by_parent_;
ViewTreeNode* parent_;
Children children_;
« no previous file with comments | « mojo/services/public/cpp/view_manager/view_manager.h ('k') | mojo/services/public/cpp/view_manager/view_tree_node_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698