| Index: Source/core/dom/NodeIterator.h
|
| diff --git a/Source/core/dom/NodeIterator.h b/Source/core/dom/NodeIterator.h
|
| index 345511fc5ed13809034a869846318a205375b4e2..5d704e738666cdcaec88550d58581a796030c299 100644
|
| --- a/Source/core/dom/NodeIterator.h
|
| +++ b/Source/core/dom/NodeIterator.h
|
| @@ -28,6 +28,7 @@
|
| #include "bindings/v8/ScriptWrappable.h"
|
| #include "core/dom/NodeFilter.h"
|
| #include "core/dom/NodeIteratorBase.h"
|
| +#include "platform/heap/Handle.h"
|
| #include "wtf/PassRefPtr.h"
|
| #include "wtf/RefCounted.h"
|
|
|
| @@ -35,16 +36,20 @@ namespace WebCore {
|
|
|
| class ExceptionState;
|
|
|
| -class NodeIterator : public ScriptWrappable, public RefCounted<NodeIterator>, public NodeIteratorBase {
|
| +class NodeIterator FINAL : public RefCountedWillBeGarbageCollectedFinalized<NodeIterator>, public ScriptWrappable, public NodeIteratorBase {
|
| + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(NodeIterator);
|
| public:
|
| - static PassRefPtr<NodeIterator> create(PassRefPtr<Node> rootNode, unsigned whatToShow, PassRefPtr<NodeFilter> filter)
|
| + static PassRefPtrWillBeRawPtr<NodeIterator> create(PassRefPtrWillBeRawPtr<Node> rootNode, unsigned whatToShow, PassRefPtrWillBeRawPtr<NodeFilter> filter)
|
| {
|
| - return adoptRef(new NodeIterator(rootNode, whatToShow, filter));
|
| + return adoptRefWillBeNoop(new NodeIterator(rootNode, whatToShow, filter));
|
| }
|
| - ~NodeIterator();
|
|
|
| - PassRefPtr<Node> nextNode(ExceptionState&);
|
| - PassRefPtr<Node> previousNode(ExceptionState&);
|
| +#if !ENABLE(OILPAN)
|
| + virtual ~NodeIterator();
|
| +#endif
|
| +
|
| + PassRefPtrWillBeRawPtr<Node> nextNode(ExceptionState&);
|
| + PassRefPtrWillBeRawPtr<Node> previousNode(ExceptionState&);
|
| void detach();
|
|
|
| Node* referenceNode() const { return m_referenceNode.node.get(); }
|
| @@ -53,17 +58,28 @@ public:
|
| // This function is called before any node is removed from the document tree.
|
| void nodeWillBeRemoved(Node&);
|
|
|
| + virtual void trace(Visitor*) OVERRIDE;
|
| +
|
| private:
|
| - NodeIterator(PassRefPtr<Node>, unsigned whatToShow, PassRefPtr<NodeFilter>);
|
| + NodeIterator(PassRefPtrWillBeRawPtr<Node>, unsigned whatToShow, PassRefPtrWillBeRawPtr<NodeFilter>);
|
|
|
| - struct NodePointer {
|
| - RefPtr<Node> node;
|
| - bool isPointerBeforeNode;
|
| + class NodePointer {
|
| + DISALLOW_ALLOCATION();
|
| + public:
|
| NodePointer();
|
| - NodePointer(PassRefPtr<Node>, bool);
|
| + NodePointer(PassRefPtrWillBeRawPtr<Node>, bool);
|
| +
|
| void clear();
|
| bool moveToNext(Node* root);
|
| bool moveToPrevious(Node* root);
|
| +
|
| + RefPtrWillBeMember<Node> node;
|
| + bool isPointerBeforeNode;
|
| +
|
| + void trace(Visitor* visitor)
|
| + {
|
| + visitor->trace(node);
|
| + }
|
| };
|
|
|
| void updateForNodeRemoval(Node& nodeToBeRemoved, NodePointer&) const;
|
|
|