Index: trunk/src/mojo/services/public/cpp/view_manager/view_tree_node.h |
=================================================================== |
--- trunk/src/mojo/services/public/cpp/view_manager/view_tree_node.h (revision 269420) |
+++ trunk/src/mojo/services/public/cpp/view_manager/view_tree_node.h (working copy) |
@@ -18,21 +18,19 @@ |
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; |
- static ViewTreeNode* Create(ViewManager* view_manager); |
+ explicit ViewTreeNode(ViewManager* manager); |
+ ViewTreeNode(); // Used for tests. |
+ ~ViewTreeNode(); |
- // 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); |
@@ -50,22 +48,15 @@ |
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_; |