| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
| 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights
reserved. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights
reserved. |
| 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
| 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * along with this library; see the file COPYING.LIB. If not, write to | 24 * along with this library; see the file COPYING.LIB. If not, write to |
| 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 26 * Boston, MA 02110-1301, USA. | 26 * Boston, MA 02110-1301, USA. |
| 27 */ | 27 */ |
| 28 | 28 |
| 29 #ifndef SiblingTraversalStrategies_h | 29 #ifndef SiblingTraversalStrategies_h |
| 30 #define SiblingTraversalStrategies_h | 30 #define SiblingTraversalStrategies_h |
| 31 | 31 |
| 32 #include "core/dom/Element.h" | 32 #include "core/dom/Element.h" |
| 33 #include "core/rendering/style/RenderStyle.h" | 33 #include "core/rendering/style/RenderStyle.h" |
| 34 #include "wtf/UnusedParam.h" | |
| 35 | 34 |
| 36 namespace WebCore { | 35 namespace WebCore { |
| 37 | 36 |
| 38 struct DOMSiblingTraversalStrategy { | 37 struct DOMSiblingTraversalStrategy { |
| 39 bool isFirstChild(Element*) const; | 38 bool isFirstChild(Element*) const; |
| 40 bool isLastChild(Element*) const; | 39 bool isLastChild(Element*) const; |
| 41 bool isFirstOfType(Element*, const QualifiedName&) const; | 40 bool isFirstOfType(Element*, const QualifiedName&) const; |
| 42 bool isLastOfType(Element*, const QualifiedName&) const; | 41 bool isLastOfType(Element*, const QualifiedName&) const; |
| 43 | 42 |
| 44 int countElementsBefore(Element*) const; | 43 int countElementsBefore(Element*) const; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 int countElementsOfTypeBefore(Element*, const QualifiedName&) const; | 131 int countElementsOfTypeBefore(Element*, const QualifiedName&) const; |
| 133 int countElementsOfTypeAfter(Element*, const QualifiedName&) const; | 132 int countElementsOfTypeAfter(Element*, const QualifiedName&) const; |
| 134 | 133 |
| 135 private: | 134 private: |
| 136 const Vector<Node*, 32>& m_siblings; | 135 const Vector<Node*, 32>& m_siblings; |
| 137 int m_nth; | 136 int m_nth; |
| 138 }; | 137 }; |
| 139 | 138 |
| 140 inline bool ShadowDOMSiblingTraversalStrategy::isFirstChild(Element* element) co
nst | 139 inline bool ShadowDOMSiblingTraversalStrategy::isFirstChild(Element* element) co
nst |
| 141 { | 140 { |
| 142 UNUSED_PARAM(element); | |
| 143 | |
| 144 ASSERT(element == toElement(m_siblings[m_nth])); | 141 ASSERT(element == toElement(m_siblings[m_nth])); |
| 145 | 142 |
| 146 for (int i = m_nth - 1; i >= 0; --i) { | 143 for (int i = m_nth - 1; i >= 0; --i) { |
| 147 if (m_siblings[i]->isElementNode()) | 144 if (m_siblings[i]->isElementNode()) |
| 148 return false; | 145 return false; |
| 149 } | 146 } |
| 150 | 147 |
| 151 return true; | 148 return true; |
| 152 } | 149 } |
| 153 | 150 |
| 154 inline bool ShadowDOMSiblingTraversalStrategy::isLastChild(Element* element) con
st | 151 inline bool ShadowDOMSiblingTraversalStrategy::isLastChild(Element* element) con
st |
| 155 { | 152 { |
| 156 UNUSED_PARAM(element); | |
| 157 | |
| 158 ASSERT(element == toElement(m_siblings[m_nth])); | 153 ASSERT(element == toElement(m_siblings[m_nth])); |
| 159 | 154 |
| 160 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { | 155 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { |
| 161 if (m_siblings[i]->isElementNode()) | 156 if (m_siblings[i]->isElementNode()) |
| 162 return false; | 157 return false; |
| 163 } | 158 } |
| 164 | 159 |
| 165 return true; | 160 return true; |
| 166 } | 161 } |
| 167 | 162 |
| 168 inline bool ShadowDOMSiblingTraversalStrategy::isFirstOfType(Element* element, c
onst QualifiedName& type) const | 163 inline bool ShadowDOMSiblingTraversalStrategy::isFirstOfType(Element* element, c
onst QualifiedName& type) const |
| 169 { | 164 { |
| 170 UNUSED_PARAM(element); | |
| 171 | |
| 172 ASSERT(element == toElement(m_siblings[m_nth])); | 165 ASSERT(element == toElement(m_siblings[m_nth])); |
| 173 | 166 |
| 174 for (int i = m_nth - 1; i >= 0; --i) { | 167 for (int i = m_nth - 1; i >= 0; --i) { |
| 175 if (m_siblings[i]->hasTagName(type)) | 168 if (m_siblings[i]->hasTagName(type)) |
| 176 return false; | 169 return false; |
| 177 } | 170 } |
| 178 | 171 |
| 179 return true; | 172 return true; |
| 180 } | 173 } |
| 181 | 174 |
| 182 inline bool ShadowDOMSiblingTraversalStrategy::isLastOfType(Element* element, co
nst QualifiedName& type) const | 175 inline bool ShadowDOMSiblingTraversalStrategy::isLastOfType(Element* element, co
nst QualifiedName& type) const |
| 183 { | 176 { |
| 184 UNUSED_PARAM(element); | |
| 185 | |
| 186 ASSERT(element == toElement(m_siblings[m_nth])); | 177 ASSERT(element == toElement(m_siblings[m_nth])); |
| 187 | 178 |
| 188 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { | 179 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { |
| 189 if (m_siblings[i]->hasTagName(type)) | 180 if (m_siblings[i]->hasTagName(type)) |
| 190 return false; | 181 return false; |
| 191 } | 182 } |
| 192 | 183 |
| 193 return true; | 184 return true; |
| 194 } | 185 } |
| 195 | 186 |
| 196 inline int ShadowDOMSiblingTraversalStrategy::countElementsBefore(Element* eleme
nt) const | 187 inline int ShadowDOMSiblingTraversalStrategy::countElementsBefore(Element* eleme
nt) const |
| 197 { | 188 { |
| 198 UNUSED_PARAM(element); | |
| 199 | |
| 200 ASSERT(element == toElement(m_siblings[m_nth])); | 189 ASSERT(element == toElement(m_siblings[m_nth])); |
| 201 | 190 |
| 202 int count = 0; | 191 int count = 0; |
| 203 for (int i = m_nth - 1; i >= 0; --i) { | 192 for (int i = m_nth - 1; i >= 0; --i) { |
| 204 if (m_siblings[i]->isElementNode()) | 193 if (m_siblings[i]->isElementNode()) |
| 205 ++count; | 194 ++count; |
| 206 } | 195 } |
| 207 | 196 |
| 208 return count; | 197 return count; |
| 209 } | 198 } |
| 210 | 199 |
| 211 inline int ShadowDOMSiblingTraversalStrategy::countElementsAfter(Element* elemen
t) const | 200 inline int ShadowDOMSiblingTraversalStrategy::countElementsAfter(Element* elemen
t) const |
| 212 { | 201 { |
| 213 UNUSED_PARAM(element); | |
| 214 | |
| 215 ASSERT(element == toElement(m_siblings[m_nth])); | 202 ASSERT(element == toElement(m_siblings[m_nth])); |
| 216 | 203 |
| 217 int count = 0; | 204 int count = 0; |
| 218 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { | 205 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { |
| 219 if (m_siblings[i]->isElementNode()) | 206 if (m_siblings[i]->isElementNode()) |
| 220 return ++count; | 207 return ++count; |
| 221 } | 208 } |
| 222 | 209 |
| 223 return count; | 210 return count; |
| 224 } | 211 } |
| 225 | 212 |
| 226 inline int ShadowDOMSiblingTraversalStrategy::countElementsOfTypeBefore(Element*
element, const QualifiedName& type) const | 213 inline int ShadowDOMSiblingTraversalStrategy::countElementsOfTypeBefore(Element*
element, const QualifiedName& type) const |
| 227 { | 214 { |
| 228 UNUSED_PARAM(element); | |
| 229 | |
| 230 ASSERT(element == toElement(m_siblings[m_nth])); | 215 ASSERT(element == toElement(m_siblings[m_nth])); |
| 231 | 216 |
| 232 int count = 0; | 217 int count = 0; |
| 233 for (int i = m_nth - 1; i >= 0; --i) { | 218 for (int i = m_nth - 1; i >= 0; --i) { |
| 234 if (m_siblings[i]->hasTagName(type)) | 219 if (m_siblings[i]->hasTagName(type)) |
| 235 ++count; | 220 ++count; |
| 236 } | 221 } |
| 237 | 222 |
| 238 return count; | 223 return count; |
| 239 } | 224 } |
| 240 | 225 |
| 241 inline int ShadowDOMSiblingTraversalStrategy::countElementsOfTypeAfter(Element*
element, const QualifiedName& type) const | 226 inline int ShadowDOMSiblingTraversalStrategy::countElementsOfTypeAfter(Element*
element, const QualifiedName& type) const |
| 242 { | 227 { |
| 243 UNUSED_PARAM(element); | |
| 244 | |
| 245 ASSERT(element == toElement(m_siblings[m_nth])); | 228 ASSERT(element == toElement(m_siblings[m_nth])); |
| 246 | 229 |
| 247 int count = 0; | 230 int count = 0; |
| 248 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { | 231 for (size_t i = m_nth + 1; i < m_siblings.size(); ++i) { |
| 249 if (m_siblings[i]->hasTagName(type)) | 232 if (m_siblings[i]->hasTagName(type)) |
| 250 return ++count; | 233 return ++count; |
| 251 } | 234 } |
| 252 | 235 |
| 253 return count; | 236 return count; |
| 254 } | 237 } |
| 255 | 238 |
| 256 } | 239 } |
| 257 | 240 |
| 258 #endif | 241 #endif |
| OLD | NEW |