Chromium Code Reviews| Index: sky/engine/core/dom/ContainerNode.h |
| diff --git a/sky/engine/core/dom/ContainerNode.h b/sky/engine/core/dom/ContainerNode.h |
| index 3c947b2e98eb92052ab6f130eaa800a3f3e9120f..bc9108d363699bf723c811c6a172e21449a29595 100644 |
| --- a/sky/engine/core/dom/ContainerNode.h |
| +++ b/sky/engine/core/dom/ContainerNode.h |
| @@ -43,6 +43,7 @@ const int initialNodeVectorSize = 11; |
| typedef Vector<RefPtr<Node>, initialNodeVectorSize> NodeVector; |
| class ContainerNode : public Node { |
| + DEFINE_WRAPPERTYPEINFO(); |
| public: |
| virtual ~ContainerNode(); |
| @@ -50,6 +51,21 @@ public: |
| Node* lastChild() const { return m_lastChild; } |
| bool hasChildren() const { return m_firstChild; } |
| + Element* firstElementChild() const; |
|
eseidel
2015/02/14 00:12:23
So now ContainerNode knows about its subclass Elem
|
| + Element* lastElementChild() const; |
| + |
| + Vector<RefPtr<Node>> getChildNodes() const; |
|
eseidel
2015/02/14 00:12:23
Are you sure you want to copy the vector? :)
|
| + Vector<RefPtr<Element>> getChildElements() const; |
| + |
| + // These functions release the nodes from |nodes|. |
| + void append(Vector<RefPtr<Node>>& nodes, ExceptionState&); |
|
eseidel
2015/02/14 00:12:23
Another way to do this would be to use a PassOwnPt
|
| + void prepend(Vector<RefPtr<Node>>& nodes, ExceptionState&); |
| + PassRefPtr<Node> prependChild(PassRefPtr<Node> node, ExceptionState&); |
| + |
| + void removeChildren(); |
| + PassRefPtr<Node> setChild(PassRefPtr<Node> node, ExceptionState&); |
| + void setChildren(Vector<RefPtr<Node>>& nodes, ExceptionState&); |
| + |
| bool hasOneChild() const { return m_firstChild && !m_firstChild->nextSibling(); } |
| bool hasOneTextChild() const { return hasOneChild() && m_firstChild->isTextNode(); } |
| @@ -69,7 +85,6 @@ public: |
| // They don't send DOM mutation events or handle reparenting. |
| void parserAppendChild(PassRefPtr<Node>); |
| - void removeChildren(); |
| void cloneChildNodes(ContainerNode* clone); |
| @@ -216,7 +231,7 @@ inline bool Node::isTreeScope() const |
| return &treeScope().rootNode() == this; |
| } |
| -inline void getChildNodes(ContainerNode& node, NodeVector& nodes) |
| +inline void appendChildNodes(ContainerNode& node, NodeVector& nodes) |
| { |
| ASSERT(!nodes.size()); |
| for (Node* child = node.firstChild(); child; child = child->nextSibling()) |