Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Side by Side Diff: Source/core/css/CSSSelector.h

Issue 210713002: Implement ::shadow pseudo element and replace /shadow/ with ::shadow. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed patch conflict Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
dglazkov 2014/03/25 17:10:53 This needs to be renamed to CustomPseudoElement or
tasak 2014/03/26 11:01:46 The actual shadow pseudo uses this relation, becau
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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 PseudoDistributed, 214 PseudoDistributed,
218 PseudoUnresolved, 215 PseudoUnresolved,
219 PseudoContent, 216 PseudoContent,
220 PseudoHost, 217 PseudoHost,
221 PseudoAncestor 218 PseudoAncestor,
219 PseudoShadow
222 }; 220 };
223 221
224 enum OptionalPseudoTypeRequirements { 222 enum OptionalPseudoTypeRequirements {
225 // 0 is used to mean "no requirements". 223 // 0 is used to mean "no requirements".
226 RequiresShadowDOM = 1 224 RequiresShadowDOM = 1
227 }; 225 };
228 226
229 enum MarginBoxType { 227 enum MarginBoxType {
230 TopLeftCornerMarginBox, 228 TopLeftCornerMarginBox,
231 TopLeftMarginBox, 229 TopLeftMarginBox,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 bool matchNth(int count) const; 285 bool matchNth(int count) const;
288 286
289 bool matchesPseudoElement() const; 287 bool matchesPseudoElement() const;
290 bool isUnknownPseudoElement() const; 288 bool isUnknownPseudoElement() const;
291 bool isCustomPseudoElement() const; 289 bool isCustomPseudoElement() const;
292 bool isDirectAdjacentSelector() const { return m_relation == DirectAdjac ent; } 290 bool isDirectAdjacentSelector() const { return m_relation == DirectAdjac ent; }
293 bool isSiblingSelector() const; 291 bool isSiblingSelector() const;
294 bool isAttributeSelector() const; 292 bool isAttributeSelector() const;
295 bool isDistributedPseudoElement() const; 293 bool isDistributedPseudoElement() const;
296 bool isContentPseudoElement() const; 294 bool isContentPseudoElement() const;
295 bool isShadowPseudoElement() const;
297 bool isHostPseudoClass() const; 296 bool isHostPseudoClass() const;
298 297
299 // FIXME: selectors with no tagHistory() get a relation() of Descendant. It should instead be 298 // FIXME: selectors with no tagHistory() get a relation() of Descendant. It should instead be
300 // None. 299 // None.
301 Relation relation() const { return static_cast<Relation>(m_relation); } 300 Relation relation() const { return static_cast<Relation>(m_relation); }
302 301
303 bool isLastInSelectorList() const { return m_isLastInSelectorList; } 302 bool isLastInSelectorList() const { return m_isLastInSelectorList; }
304 void setLastInSelectorList() { m_isLastInSelectorList = true; } 303 void setLastInSelectorList() { m_isLastInSelectorList = true; }
305 bool isLastInTagHistory() const { return m_isLastInTagHistory; } 304 bool isLastInTagHistory() const { return m_isLastInTagHistory; }
306 void setNotLastInTagHistory() { m_isLastInTagHistory = false; } 305 void setNotLastInTagHistory() { m_isLastInTagHistory = false; }
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 inline bool CSSSelector::isDistributedPseudoElement() const 421 inline bool CSSSelector::isDistributedPseudoElement() const
423 { 422 {
424 return m_match == PseudoElement && pseudoType() == PseudoDistributed; 423 return m_match == PseudoElement && pseudoType() == PseudoDistributed;
425 } 424 }
426 425
427 inline bool CSSSelector::isContentPseudoElement() const 426 inline bool CSSSelector::isContentPseudoElement() const
428 { 427 {
429 return m_match == PseudoElement && pseudoType() == PseudoContent; 428 return m_match == PseudoElement && pseudoType() == PseudoContent;
430 } 429 }
431 430
431 inline bool CSSSelector::isShadowPseudoElement() const
432 {
433 return m_match == PseudoElement && pseudoType() == PseudoShadow;
434 }
435
432 inline void CSSSelector::setValue(const AtomicString& value) 436 inline void CSSSelector::setValue(const AtomicString& value)
433 { 437 {
434 ASSERT(m_match != Tag); 438 ASSERT(m_match != Tag);
435 ASSERT(m_pseudoType == PseudoNotParsed); 439 ASSERT(m_pseudoType == PseudoNotParsed);
436 // Need to do ref counting manually for the union. 440 // Need to do ref counting manually for the union.
437 if (m_hasRareData) { 441 if (m_hasRareData) {
438 m_data.m_rareData->m_value = value; 442 m_data.m_rareData->m_value = value;
439 return; 443 return;
440 } 444 }
441 if (m_data.m_value) 445 if (m_data.m_value)
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 if (m_hasRareData) 524 if (m_hasRareData)
521 return m_data.m_rareData->m_value; 525 return m_data.m_rareData->m_value;
522 // AtomicString is really just a StringImpl* so the cast below is safe. 526 // AtomicString is really just a StringImpl* so the cast below is safe.
523 // FIXME: Perhaps call sites could be changed to accept StringImpl? 527 // FIXME: Perhaps call sites could be changed to accept StringImpl?
524 return *reinterpret_cast<const AtomicString*>(&m_data.m_value); 528 return *reinterpret_cast<const AtomicString*>(&m_data.m_value);
525 } 529 }
526 530
527 } // namespace WebCore 531 } // namespace WebCore
528 532
529 #endif // CSSSelector_h 533 #endif // CSSSelector_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698