| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org) |
| 3 * 1999 Waldo Bastian (bastian@kde.org) | 3 * 1999 Waldo Bastian (bastian@kde.org) |
| 4 * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights
reserved. | 4 * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights
reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 End, // css3: E[foo$="bar"] | 121 End, // css3: E[foo$="bar"] |
| 122 PagePseudoClass // ?? | 122 PagePseudoClass // ?? |
| 123 }; | 123 }; |
| 124 | 124 |
| 125 enum Relation { | 125 enum Relation { |
| 126 Descendant = 0, // "Space" combinator | 126 Descendant = 0, // "Space" combinator |
| 127 Child, // > combinator | 127 Child, // > combinator |
| 128 DirectAdjacent, // + combinator | 128 DirectAdjacent, // + combinator |
| 129 IndirectAdjacent, // ~ combinator | 129 IndirectAdjacent, // ~ combinator |
| 130 SubSelector, // "No space" combinator | 130 SubSelector, // "No space" combinator |
| 131 ShadowPseudo, // Special case of shadow DOM pseudo elements | 131 ShadowPseudo, // Special case of shadow DOM pseudo elements / shadow
pseudo element |
| 132 // FIXME: implement named combinator (i.e. named relation) and | 132 ShadowDeep // /shadow-deep/ combinator |
| 133 // replace the following /shadow/ and /shadow-deep/ with the impleme
ntation. | |
| 134 Shadow, // /shadow/ combinator | |
| 135 ShadowDeep, // /shadow-deep/ combinator | |
| 136 }; | 133 }; |
| 137 | 134 |
| 138 enum PseudoType { | 135 enum PseudoType { |
| 139 PseudoNotParsed = 0, | 136 PseudoNotParsed = 0, |
| 140 PseudoUnknown, | 137 PseudoUnknown, |
| 141 PseudoEmpty, | 138 PseudoEmpty, |
| 142 PseudoFirstChild, | 139 PseudoFirstChild, |
| 143 PseudoFirstOfType, | 140 PseudoFirstOfType, |
| 144 PseudoLastChild, | 141 PseudoLastChild, |
| 145 PseudoLastOfType, | 142 PseudoLastOfType, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 PseudoInRange, | 207 PseudoInRange, |
| 211 PseudoOutOfRange, | 208 PseudoOutOfRange, |
| 212 PseudoUserAgentCustomElement, | 209 PseudoUserAgentCustomElement, |
| 213 PseudoWebKitCustomElement, | 210 PseudoWebKitCustomElement, |
| 214 PseudoCue, | 211 PseudoCue, |
| 215 PseudoFutureCue, | 212 PseudoFutureCue, |
| 216 PseudoPastCue, | 213 PseudoPastCue, |
| 217 PseudoUnresolved, | 214 PseudoUnresolved, |
| 218 PseudoContent, | 215 PseudoContent, |
| 219 PseudoHost, | 216 PseudoHost, |
| 220 PseudoHostContext | 217 PseudoHostContext, |
| 218 PseudoShadow |
| 221 }; | 219 }; |
| 222 | 220 |
| 223 enum MarginBoxType { | 221 enum MarginBoxType { |
| 224 TopLeftCornerMarginBox, | 222 TopLeftCornerMarginBox, |
| 225 TopLeftMarginBox, | 223 TopLeftMarginBox, |
| 226 TopCenterMarginBox, | 224 TopCenterMarginBox, |
| 227 TopRightMarginBox, | 225 TopRightMarginBox, |
| 228 TopRightCornerMarginBox, | 226 TopRightCornerMarginBox, |
| 229 BottomLeftCornerMarginBox, | 227 BottomLeftCornerMarginBox, |
| 230 BottomLeftMarginBox, | 228 BottomLeftMarginBox, |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 bool parseNth() const; | 278 bool parseNth() const; |
| 281 bool matchNth(int count) const; | 279 bool matchNth(int count) const; |
| 282 | 280 |
| 283 bool matchesPseudoElement() const; | 281 bool matchesPseudoElement() const; |
| 284 bool isUnknownPseudoElement() const; | 282 bool isUnknownPseudoElement() const; |
| 285 bool isCustomPseudoElement() const; | 283 bool isCustomPseudoElement() const; |
| 286 bool isDirectAdjacentSelector() const { return m_relation == DirectAdjac
ent; } | 284 bool isDirectAdjacentSelector() const { return m_relation == DirectAdjac
ent; } |
| 287 bool isSiblingSelector() const; | 285 bool isSiblingSelector() const; |
| 288 bool isAttributeSelector() const; | 286 bool isAttributeSelector() const; |
| 289 bool isContentPseudoElement() const; | 287 bool isContentPseudoElement() const; |
| 288 bool isShadowPseudoElement() const; |
| 290 bool isHostPseudoClass() const; | 289 bool isHostPseudoClass() const; |
| 291 | 290 |
| 292 // FIXME: selectors with no tagHistory() get a relation() of Descendant.
It should instead be | 291 // FIXME: selectors with no tagHistory() get a relation() of Descendant.
It should instead be |
| 293 // None. | 292 // None. |
| 294 Relation relation() const { return static_cast<Relation>(m_relation); } | 293 Relation relation() const { return static_cast<Relation>(m_relation); } |
| 295 | 294 |
| 296 bool isLastInSelectorList() const { return m_isLastInSelectorList; } | 295 bool isLastInSelectorList() const { return m_isLastInSelectorList; } |
| 297 void setLastInSelectorList() { m_isLastInSelectorList = true; } | 296 void setLastInSelectorList() { m_isLastInSelectorList = true; } |
| 298 bool isLastInTagHistory() const { return m_isLastInTagHistory; } | 297 bool isLastInTagHistory() const { return m_isLastInTagHistory; } |
| 299 void setNotLastInTagHistory() { m_isLastInTagHistory = false; } | 298 void setNotLastInTagHistory() { m_isLastInTagHistory = false; } |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 || m_match == CSSSelector::Contain | 409 || m_match == CSSSelector::Contain |
| 411 || m_match == CSSSelector::Begin | 410 || m_match == CSSSelector::Begin |
| 412 || m_match == CSSSelector::End; | 411 || m_match == CSSSelector::End; |
| 413 } | 412 } |
| 414 | 413 |
| 415 inline bool CSSSelector::isContentPseudoElement() const | 414 inline bool CSSSelector::isContentPseudoElement() const |
| 416 { | 415 { |
| 417 return m_match == PseudoElement && pseudoType() == PseudoContent; | 416 return m_match == PseudoElement && pseudoType() == PseudoContent; |
| 418 } | 417 } |
| 419 | 418 |
| 419 inline bool CSSSelector::isShadowPseudoElement() const |
| 420 { |
| 421 return m_match == PseudoElement && pseudoType() == PseudoShadow; |
| 422 } |
| 423 |
| 420 inline void CSSSelector::setValue(const AtomicString& value) | 424 inline void CSSSelector::setValue(const AtomicString& value) |
| 421 { | 425 { |
| 422 ASSERT(m_match != Tag); | 426 ASSERT(m_match != Tag); |
| 423 ASSERT(m_pseudoType == PseudoNotParsed); | 427 ASSERT(m_pseudoType == PseudoNotParsed); |
| 424 // Need to do ref counting manually for the union. | 428 // Need to do ref counting manually for the union. |
| 425 if (m_hasRareData) { | 429 if (m_hasRareData) { |
| 426 m_data.m_rareData->m_value = value; | 430 m_data.m_rareData->m_value = value; |
| 427 return; | 431 return; |
| 428 } | 432 } |
| 429 if (m_data.m_value) | 433 if (m_data.m_value) |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 if (m_hasRareData) | 512 if (m_hasRareData) |
| 509 return m_data.m_rareData->m_value; | 513 return m_data.m_rareData->m_value; |
| 510 // AtomicString is really just a StringImpl* so the cast below is safe. | 514 // AtomicString is really just a StringImpl* so the cast below is safe. |
| 511 // FIXME: Perhaps call sites could be changed to accept StringImpl? | 515 // FIXME: Perhaps call sites could be changed to accept StringImpl? |
| 512 return *reinterpret_cast<const AtomicString*>(&m_data.m_value); | 516 return *reinterpret_cast<const AtomicString*>(&m_data.m_value); |
| 513 } | 517 } |
| 514 | 518 |
| 515 } // namespace WebCore | 519 } // namespace WebCore |
| 516 | 520 |
| 517 #endif // CSSSelector_h | 521 #endif // CSSSelector_h |
| OLD | NEW |