| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) | 3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) |
| 4 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 4 * Copyright (C) 2001 Peter Kelly (pmk@post.com) |
| 5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "core/dom/Document.h" | 29 #include "core/dom/Document.h" |
| 30 #include "core/dom/ExceptionCode.h" | 30 #include "core/dom/ExceptionCode.h" |
| 31 #include "core/dom/NodeTraversal.h" | 31 #include "core/dom/NodeTraversal.h" |
| 32 | 32 |
| 33 namespace blink { | 33 namespace blink { |
| 34 | 34 |
| 35 NodeIterator::NodePointer::NodePointer() | 35 NodeIterator::NodePointer::NodePointer() |
| 36 { | 36 { |
| 37 } | 37 } |
| 38 | 38 |
| 39 NodeIterator::NodePointer::NodePointer(PassRefPtrWillBeRawPtr<Node> n, bool b) | 39 NodeIterator::NodePointer::NodePointer(RawPtr<Node> n, bool b) |
| 40 : node(n) | 40 : node(n) |
| 41 , isPointerBeforeNode(b) | 41 , isPointerBeforeNode(b) |
| 42 { | 42 { |
| 43 } | 43 } |
| 44 | 44 |
| 45 void NodeIterator::NodePointer::clear() | 45 void NodeIterator::NodePointer::clear() |
| 46 { | 46 { |
| 47 node.clear(); | 47 node.clear(); |
| 48 } | 48 } |
| 49 | 49 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 64 if (!node) | 64 if (!node) |
| 65 return false; | 65 return false; |
| 66 if (!isPointerBeforeNode) { | 66 if (!isPointerBeforeNode) { |
| 67 isPointerBeforeNode = true; | 67 isPointerBeforeNode = true; |
| 68 return true; | 68 return true; |
| 69 } | 69 } |
| 70 node = NodeTraversal::previous(*node, root); | 70 node = NodeTraversal::previous(*node, root); |
| 71 return node; | 71 return node; |
| 72 } | 72 } |
| 73 | 73 |
| 74 NodeIterator::NodeIterator(PassRefPtrWillBeRawPtr<Node> rootNode, unsigned whatT
oShow, PassRefPtrWillBeRawPtr<NodeFilter> filter) | 74 NodeIterator::NodeIterator(RawPtr<Node> rootNode, unsigned whatToShow, RawPtr<No
deFilter> filter) |
| 75 : NodeIteratorBase(rootNode, whatToShow, filter) | 75 : NodeIteratorBase(rootNode, whatToShow, filter) |
| 76 , m_referenceNode(root(), true) | 76 , m_referenceNode(root(), true) |
| 77 { | 77 { |
| 78 // If NodeIterator target is Attr node, don't subscribe for nodeWillBeRemove
d, as it would never have child nodes. | 78 // If NodeIterator target is Attr node, don't subscribe for nodeWillBeRemove
d, as it would never have child nodes. |
| 79 if (!root()->isAttributeNode()) | 79 if (!root()->isAttributeNode()) |
| 80 root()->document().attachNodeIterator(this); | 80 root()->document().attachNodeIterator(this); |
| 81 } | 81 } |
| 82 | 82 |
| 83 #if !ENABLE(OILPAN) | 83 #if !ENABLE(OILPAN) |
| 84 NodeIterator::~NodeIterator() | 84 NodeIterator::~NodeIterator() |
| 85 { | 85 { |
| 86 if (!root()->isAttributeNode()) | 86 if (!root()->isAttributeNode()) |
| 87 root()->document().detachNodeIterator(this); | 87 root()->document().detachNodeIterator(this); |
| 88 } | 88 } |
| 89 #endif | 89 #endif |
| 90 | 90 |
| 91 PassRefPtrWillBeRawPtr<Node> NodeIterator::nextNode(ExceptionState& exceptionSta
te) | 91 RawPtr<Node> NodeIterator::nextNode(ExceptionState& exceptionState) |
| 92 { | 92 { |
| 93 RefPtrWillBeRawPtr<Node> result = nullptr; | 93 RawPtr<Node> result = nullptr; |
| 94 | 94 |
| 95 m_candidateNode = m_referenceNode; | 95 m_candidateNode = m_referenceNode; |
| 96 while (m_candidateNode.moveToNext(root())) { | 96 while (m_candidateNode.moveToNext(root())) { |
| 97 // NodeIterators treat the DOM tree as a flat list of nodes. | 97 // NodeIterators treat the DOM tree as a flat list of nodes. |
| 98 // In other words, FILTER_REJECT does not pass over descendants | 98 // In other words, FILTER_REJECT does not pass over descendants |
| 99 // of the rejected node. Hence, FILTER_REJECT is the same as FILTER_SKIP
. | 99 // of the rejected node. Hence, FILTER_REJECT is the same as FILTER_SKIP
. |
| 100 RefPtrWillBeRawPtr<Node> provisionalResult = m_candidateNode.node; | 100 RawPtr<Node> provisionalResult = m_candidateNode.node; |
| 101 bool nodeWasAccepted = acceptNode(provisionalResult.get(), exceptionStat
e) == NodeFilter::FILTER_ACCEPT; | 101 bool nodeWasAccepted = acceptNode(provisionalResult.get(), exceptionStat
e) == NodeFilter::FILTER_ACCEPT; |
| 102 if (exceptionState.hadException()) | 102 if (exceptionState.hadException()) |
| 103 break; | 103 break; |
| 104 if (nodeWasAccepted) { | 104 if (nodeWasAccepted) { |
| 105 m_referenceNode = m_candidateNode; | 105 m_referenceNode = m_candidateNode; |
| 106 result = provisionalResult.release(); | 106 result = provisionalResult.release(); |
| 107 break; | 107 break; |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 | 110 |
| 111 m_candidateNode.clear(); | 111 m_candidateNode.clear(); |
| 112 return result.release(); | 112 return result.release(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 PassRefPtrWillBeRawPtr<Node> NodeIterator::previousNode(ExceptionState& exceptio
nState) | 115 RawPtr<Node> NodeIterator::previousNode(ExceptionState& exceptionState) |
| 116 { | 116 { |
| 117 RefPtrWillBeRawPtr<Node> result = nullptr; | 117 RawPtr<Node> result = nullptr; |
| 118 | 118 |
| 119 m_candidateNode = m_referenceNode; | 119 m_candidateNode = m_referenceNode; |
| 120 while (m_candidateNode.moveToPrevious(root())) { | 120 while (m_candidateNode.moveToPrevious(root())) { |
| 121 // NodeIterators treat the DOM tree as a flat list of nodes. | 121 // NodeIterators treat the DOM tree as a flat list of nodes. |
| 122 // In other words, FILTER_REJECT does not pass over descendants | 122 // In other words, FILTER_REJECT does not pass over descendants |
| 123 // of the rejected node. Hence, FILTER_REJECT is the same as FILTER_SKIP
. | 123 // of the rejected node. Hence, FILTER_REJECT is the same as FILTER_SKIP
. |
| 124 RefPtrWillBeRawPtr<Node> provisionalResult = m_candidateNode.node; | 124 RawPtr<Node> provisionalResult = m_candidateNode.node; |
| 125 bool nodeWasAccepted = acceptNode(provisionalResult.get(), exceptionStat
e) == NodeFilter::FILTER_ACCEPT; | 125 bool nodeWasAccepted = acceptNode(provisionalResult.get(), exceptionStat
e) == NodeFilter::FILTER_ACCEPT; |
| 126 if (exceptionState.hadException()) | 126 if (exceptionState.hadException()) |
| 127 break; | 127 break; |
| 128 if (nodeWasAccepted) { | 128 if (nodeWasAccepted) { |
| 129 m_referenceNode = m_candidateNode; | 129 m_referenceNode = m_candidateNode; |
| 130 result = provisionalResult.release(); | 130 result = provisionalResult.release(); |
| 131 break; | 131 break; |
| 132 } | 132 } |
| 133 } | 133 } |
| 134 | 134 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 } | 214 } |
| 215 | 215 |
| 216 DEFINE_TRACE(NodeIterator) | 216 DEFINE_TRACE(NodeIterator) |
| 217 { | 217 { |
| 218 visitor->trace(m_referenceNode); | 218 visitor->trace(m_referenceNode); |
| 219 visitor->trace(m_candidateNode); | 219 visitor->trace(m_candidateNode); |
| 220 NodeIteratorBase::trace(visitor); | 220 NodeIteratorBase::trace(visitor); |
| 221 } | 221 } |
| 222 | 222 |
| 223 } // namespace blink | 223 } // namespace blink |
| OLD | NEW |