| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights
reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights
reserved. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "wtf/Vector.h" | 30 #include "wtf/Vector.h" |
| 31 | 31 |
| 32 namespace WebCore { | 32 namespace WebCore { |
| 33 | 33 |
| 34 class ExceptionState; | 34 class ExceptionState; |
| 35 class FloatPoint; | 35 class FloatPoint; |
| 36 class HTMLCollection; | 36 class HTMLCollection; |
| 37 | 37 |
| 38 namespace Private { | 38 namespace Private { |
| 39 template<class GenericNode, class GenericNodeContainer> | 39 template<class GenericNode, class GenericNodeContainer> |
| 40 void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, Ge
nericNodeContainer*); | 40 void addChildNodesToDeletionQueue(GenericNode*& head, GenericNode*& tail, Ge
nericNodeContainer&); |
| 41 }; | 41 } |
| 42 | 42 |
| 43 class NoEventDispatchAssertion { | 43 class NoEventDispatchAssertion { |
| 44 public: | 44 public: |
| 45 NoEventDispatchAssertion() | 45 NoEventDispatchAssertion() |
| 46 { | 46 { |
| 47 #ifndef NDEBUG | 47 #ifndef NDEBUG |
| 48 if (!isMainThread()) | 48 if (!isMainThread()) |
| 49 return; | 49 return; |
| 50 s_count++; | 50 s_count++; |
| 51 #endif | 51 #endif |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 | 98 |
| 99 void insertBefore(PassRefPtr<Node> newChild, Node* refChild, ExceptionState&
= ASSERT_NO_EXCEPTION); | 99 void insertBefore(PassRefPtr<Node> newChild, Node* refChild, ExceptionState&
= ASSERT_NO_EXCEPTION); |
| 100 void replaceChild(PassRefPtr<Node> newChild, Node* oldChild, ExceptionState&
= ASSERT_NO_EXCEPTION); | 100 void replaceChild(PassRefPtr<Node> newChild, Node* oldChild, ExceptionState&
= ASSERT_NO_EXCEPTION); |
| 101 void removeChild(Node* child, ExceptionState& = ASSERT_NO_EXCEPTION); | 101 void removeChild(Node* child, ExceptionState& = ASSERT_NO_EXCEPTION); |
| 102 void appendChild(PassRefPtr<Node> newChild, ExceptionState& = ASSERT_NO_EXCE
PTION); | 102 void appendChild(PassRefPtr<Node> newChild, ExceptionState& = ASSERT_NO_EXCE
PTION); |
| 103 | 103 |
| 104 // These methods are only used during parsing. | 104 // These methods are only used during parsing. |
| 105 // They don't send DOM mutation events or handle reparenting. | 105 // They don't send DOM mutation events or handle reparenting. |
| 106 // However, arbitrary code may be run by beforeload handlers. | 106 // However, arbitrary code may be run by beforeload handlers. |
| 107 void parserAppendChild(PassRefPtr<Node>); | 107 void parserAppendChild(PassRefPtr<Node>); |
| 108 void parserRemoveChild(Node*); | 108 void parserRemoveChild(Node&); |
| 109 void parserInsertBefore(PassRefPtr<Node> newChild, Node* refChild); | 109 void parserInsertBefore(PassRefPtr<Node> newChild, Node* refChild); |
| 110 void parserTakeAllChildrenFrom(ContainerNode*); | 110 void parserTakeAllChildrenFrom(ContainerNode*); |
| 111 | 111 |
| 112 void removeChildren(); | 112 void removeChildren(); |
| 113 | 113 |
| 114 void cloneChildNodes(ContainerNode* clone); | 114 void cloneChildNodes(ContainerNode* clone); |
| 115 | 115 |
| 116 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE; | 116 virtual void attach(const AttachContext& = AttachContext()) OVERRIDE; |
| 117 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE; | 117 virtual void detach(const AttachContext& = AttachContext()) OVERRIDE; |
| 118 virtual LayoutRect boundingBox() const OVERRIDE; | 118 virtual LayoutRect boundingBox() const OVERRIDE; |
| 119 virtual void setFocus(bool) OVERRIDE; | 119 virtual void setFocus(bool) OVERRIDE; |
| 120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE; | 120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE; |
| 121 virtual void setHovered(bool = true) OVERRIDE; | 121 virtual void setHovered(bool = true) OVERRIDE; |
| 122 | 122 |
| 123 // -------------------------------------------------------------------------
---- | 123 // -------------------------------------------------------------------------
---- |
| 124 // Notification of document structure changes (see core/dom/Node.h for more
notification methods) | 124 // Notification of document structure changes (see core/dom/Node.h for more
notification methods) |
| 125 | 125 |
| 126 // Notifies the node that it's list of children have changed (either by addi
ng or removing child nodes), or a child | 126 // Notifies the node that it's list of children have changed (either by addi
ng or removing child nodes), or a child |
| 127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha
s changed its value. | 127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha
s changed its value. |
| 128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang
e = 0, Node* afterChange = 0, int childCountDelta = 0); | 128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang
e = 0, Node* afterChange = 0, int childCountDelta = 0); |
| 129 | 129 |
| 130 void disconnectDescendantFrames(); | 130 void disconnectDescendantFrames(); |
| 131 | 131 |
| 132 virtual bool childShouldCreateRenderer(const Node& child) const { return tru
e; } | 132 virtual bool childShouldCreateRenderer(const Node& child) const { return tru
e; } |
| 133 | 133 |
| 134 protected: | 134 protected: |
| 135 ContainerNode(TreeScope*, ConstructionType = CreateContainer); | 135 ContainerNode(TreeScope*, ConstructionType = CreateContainer); |
| 136 | 136 |
| 137 template<class GenericNode, class GenericNodeContainer> | 137 template<class GenericNode, class GenericNodeContainer> |
| 138 friend void appendChildToContainer(GenericNode* child, GenericNodeContainer*
); | 138 friend void appendChildToContainer(GenericNode& child, GenericNodeContainer&
); |
| 139 | 139 |
| 140 template<class GenericNode, class GenericNodeContainer> | 140 template<class GenericNode, class GenericNodeContainer> |
| 141 friend void Private::addChildNodesToDeletionQueue(GenericNode*& head, Generi
cNode*& tail, GenericNodeContainer*); | 141 friend void Private::addChildNodesToDeletionQueue(GenericNode*& head, Generi
cNode*& tail, GenericNodeContainer&); |
| 142 | 142 |
| 143 void removeDetachedChildren(); | 143 void removeDetachedChildren(); |
| 144 void setFirstChild(Node* child) { m_firstChild = child; } | 144 void setFirstChild(Node* child) { m_firstChild = child; } |
| 145 void setLastChild(Node* child) { m_lastChild = child; } | 145 void setLastChild(Node* child) { m_lastChild = child; } |
| 146 | 146 |
| 147 private: | 147 private: |
| 148 void removeBetween(Node* previousChild, Node* nextChild, Node* oldChild); | 148 void removeBetween(Node* previousChild, Node* nextChild, Node& oldChild); |
| 149 void insertBeforeCommon(Node* nextChild, Node* oldChild); | 149 void insertBeforeCommon(Node& nextChild, Node& oldChild); |
| 150 | 150 |
| 151 void attachChildren(const AttachContext& = AttachContext()); | 151 void attachChildren(const AttachContext& = AttachContext()); |
| 152 void detachChildren(const AttachContext& = AttachContext()); | 152 void detachChildren(const AttachContext& = AttachContext()); |
| 153 | 153 |
| 154 bool getUpperLeftCorner(FloatPoint&) const; | 154 bool getUpperLeftCorner(FloatPoint&) const; |
| 155 bool getLowerRightCorner(FloatPoint&) const; | 155 bool getLowerRightCorner(FloatPoint&) const; |
| 156 | 156 |
| 157 Node* m_firstChild; | 157 Node* m_firstChild; |
| 158 Node* m_lastChild; | 158 Node* m_lastChild; |
| 159 }; | 159 }; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 { | 239 { |
| 240 ASSERT(!nodes.size()); | 240 ASSERT(!nodes.size()); |
| 241 for (Node* child = node->firstChild(); child; child = child->nextSibling()) | 241 for (Node* child = node->firstChild(); child; child = child->nextSibling()) |
| 242 nodes.append(child); | 242 nodes.append(child); |
| 243 } | 243 } |
| 244 | 244 |
| 245 class ChildNodesLazySnapshot { | 245 class ChildNodesLazySnapshot { |
| 246 WTF_MAKE_NONCOPYABLE(ChildNodesLazySnapshot); | 246 WTF_MAKE_NONCOPYABLE(ChildNodesLazySnapshot); |
| 247 WTF_MAKE_FAST_ALLOCATED; | 247 WTF_MAKE_FAST_ALLOCATED; |
| 248 public: | 248 public: |
| 249 explicit ChildNodesLazySnapshot(Node* parentNode) | 249 explicit ChildNodesLazySnapshot(Node& parentNode) |
| 250 : m_currentNode(parentNode->firstChild()) | 250 : m_currentNode(parentNode.firstChild()) |
| 251 , m_currentIndex(0) | 251 , m_currentIndex(0) |
| 252 { | 252 { |
| 253 m_nextSnapshot = latestSnapshot; | 253 m_nextSnapshot = latestSnapshot; |
| 254 latestSnapshot = this; | 254 latestSnapshot = this; |
| 255 } | 255 } |
| 256 | 256 |
| 257 ~ChildNodesLazySnapshot() | 257 ~ChildNodesLazySnapshot() |
| 258 { | 258 { |
| 259 latestSnapshot = m_nextSnapshot; | 259 latestSnapshot = m_nextSnapshot; |
| 260 } | 260 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 | 303 |
| 304 RefPtr<Node> m_currentNode; | 304 RefPtr<Node> m_currentNode; |
| 305 unsigned m_currentIndex; | 305 unsigned m_currentIndex; |
| 306 OwnPtr<Vector<RefPtr<Node> > > m_childNodes; // Lazily instantiated. | 306 OwnPtr<Vector<RefPtr<Node> > > m_childNodes; // Lazily instantiated. |
| 307 ChildNodesLazySnapshot* m_nextSnapshot; | 307 ChildNodesLazySnapshot* m_nextSnapshot; |
| 308 }; | 308 }; |
| 309 | 309 |
| 310 } // namespace WebCore | 310 } // namespace WebCore |
| 311 | 311 |
| 312 #endif // ContainerNode_h | 312 #endif // ContainerNode_h |
| OLD | NEW |