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

Side by Side Diff: Source/core/css/CSSParser.cpp

Issue 15657003: Make a '::distributed' pseudo element the first-ever client who can accept a relative selector. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 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) 2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * Copyright (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 6 * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 8 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. 9 * Copyright (C) 2012 Intel Corporation. All rights reserved.
10 * 10 *
(...skipping 11109 matching lines...) Expand 10 before | Expand all | Expand 10 after
11120 ASSERT(!specifiers->isDistributedPseudoElement()); 11120 ASSERT(!specifiers->isDistributedPseudoElement());
11121 for (CSSParserSelector* end = specifiers; end->tagHistory(); end = end->tagH istory()) { 11121 for (CSSParserSelector* end = specifiers; end->tagHistory(); end = end->tagH istory()) {
11122 if (end->tagHistory()->isDistributedPseudoElement()) { 11122 if (end->tagHistory()->isDistributedPseudoElement()) {
11123 end->clearTagHistory(); 11123 end->clearTagHistory();
11124 break; 11124 break;
11125 } 11125 }
11126 } 11126 }
11127 CSSParserSelector* end = argumentSelector; 11127 CSSParserSelector* end = argumentSelector;
11128 while (end->tagHistory()) 11128 while (end->tagHistory())
11129 end = end->tagHistory(); 11129 end = end->tagHistory();
11130 end->setTagHistory(sinkFloatingSelector(specifiers)); 11130
11131 end->setRelation(CSSSelector::ShadowDistributed); 11131 switch (end->relation()) {
11132 return argumentSelector; 11132 case CSSSelector::Child:
11133 end->setTagHistory(sinkFloatingSelector(specifiers));
11134 end->setRelation(CSSSelector::ShadowVirtualChild);
dglazkov 2013/05/22 17:43:43 This is where it's fairly clear that we're just ov
11135 return argumentSelector;
11136 case CSSSelector::Descendant:
11137 end->setTagHistory(sinkFloatingSelector(specifiers));
11138 end->setRelation(CSSSelector::ShadowVirtualDescendant);
11139 return argumentSelector;
11140 default:
11141 return 0;
11142 }
11133 } 11143 }
11134 11144
11135 CSSParserSelector* CSSParser::rewriteSpecifiers(CSSParserSelector* specifiers, C SSParserSelector* newSpecifier) 11145 CSSParserSelector* CSSParser::rewriteSpecifiers(CSSParserSelector* specifiers, C SSParserSelector* newSpecifier)
11136 { 11146 {
11137 if (newSpecifier->isCustomPseudoElement() || newSpecifier->pseudoType() == C SSSelector::PseudoCue) { 11147 if (newSpecifier->isCustomPseudoElement() || newSpecifier->pseudoType() == C SSSelector::PseudoCue) {
11138 // Unknown pseudo element always goes at the top of selector chain. 11148 // Unknown pseudo element always goes at the top of selector chain.
11139 newSpecifier->appendTagHistory(CSSSelector::ShadowPseudo, sinkFloatingSe lector(specifiers)); 11149 newSpecifier->appendTagHistory(CSSSelector::ShadowPseudo, sinkFloatingSe lector(specifiers));
11140 return newSpecifier; 11150 return newSpecifier;
11141 } 11151 }
11142 if (specifiers->isCustomPseudoElement()) { 11152 if (specifiers->isCustomPseudoElement()) {
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
11700 result.lineNumber = lineNumber; 11710 result.lineNumber = lineNumber;
11701 result.content = content; 11711 result.content = content;
11702 size_t newLength = content.length(); 11712 size_t newLength = content.length();
11703 while (newLength > 0 && isHTMLSpace(result.content[newLength - 1])) 11713 while (newLength > 0 && isHTMLSpace(result.content[newLength - 1]))
11704 --newLength; 11714 --newLength;
11705 result.content.setLength(newLength); 11715 result.content.setLength(newLength);
11706 return result; 11716 return result;
11707 } 11717 }
11708 11718
11709 } 11719 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698