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

Side by Side Diff: Source/core/css/parser/BisonCSSParser-in.cpp

Issue 205563004: Revert of Implement /content/ combinator. (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
« no previous file with comments | « Source/core/css/SelectorFilter.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1914 QualifiedName tag(namespacePrefix, elementName, determinedNamespace); 1914 QualifiedName tag(namespacePrefix, elementName, determinedNamespace);
1915 1915
1916 if (CSSParserSelector* distributedPseudoElementSelector = specifiers->findDi stributedPseudoElementSelector()) { 1916 if (CSSParserSelector* distributedPseudoElementSelector = specifiers->findDi stributedPseudoElementSelector()) {
1917 specifiers->prependTagSelector(tag, tagIsForNamespaceRule); 1917 specifiers->prependTagSelector(tag, tagIsForNamespaceRule);
1918 return rewriteSpecifiersForShadowDistributed(specifiers, distributedPseu doElementSelector); 1918 return rewriteSpecifiersForShadowDistributed(specifiers, distributedPseu doElementSelector);
1919 } 1919 }
1920 1920
1921 if (specifiers->needsCrossingTreeScopeBoundary()) 1921 if (specifiers->needsCrossingTreeScopeBoundary())
1922 return rewriteSpecifiersWithElementNameForCustomPseudoElement(tag, eleme ntName, specifiers, tagIsForNamespaceRule); 1922 return rewriteSpecifiersWithElementNameForCustomPseudoElement(tag, eleme ntName, specifiers, tagIsForNamespaceRule);
1923 1923
1924 if (specifiers->isContentPseudoElement())
1925 return rewriteSpecifiersWithElementNameForContentPseudoElement(tag, elem entName, specifiers, tagIsForNamespaceRule);
1926
1924 // *:host never matches, so we can't discard the * otherwise we can't tell t he 1927 // *:host never matches, so we can't discard the * otherwise we can't tell t he
1925 // difference between *:host and just :host. 1928 // difference between *:host and just :host.
1926 if (tag == anyQName() && !specifiers->hasHostPseudoSelector()) 1929 if (tag == anyQName() && !specifiers->hasHostPseudoSelector())
1927 return specifiers; 1930 return specifiers;
1928 if (specifiers->pseudoType() != CSSSelector::PseudoCue) 1931 if (specifiers->pseudoType() != CSSSelector::PseudoCue)
1929 specifiers->prependTagSelector(tag, tagIsForNamespaceRule); 1932 specifiers->prependTagSelector(tag, tagIsForNamespaceRule);
1930 return specifiers; 1933 return specifiers;
1931 } 1934 }
1932 1935
1933 CSSParserSelector* BisonCSSParser::rewriteSpecifiersWithElementNameForCustomPseu doElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSe lector* specifiers, bool tagIsForNamespaceRule) 1936 CSSParserSelector* BisonCSSParser::rewriteSpecifiersWithElementNameForCustomPseu doElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSe lector* specifiers, bool tagIsForNamespaceRule)
(...skipping 22 matching lines...) Expand all
1956 lastShadowPseudo->setRelation(CSSSelector::ShadowPseudo); 1959 lastShadowPseudo->setRelation(CSSSelector::ShadowPseudo);
1957 return specifiers; 1960 return specifiers;
1958 } 1961 }
1959 1962
1960 CSSParserSelector* BisonCSSParser::rewriteSpecifiersWithElementNameForContentPse udoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserS elector* specifiers, bool tagIsForNamespaceRule) 1963 CSSParserSelector* BisonCSSParser::rewriteSpecifiersWithElementNameForContentPse udoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserS elector* specifiers, bool tagIsForNamespaceRule)
1961 { 1964 {
1962 CSSParserSelector* last = specifiers; 1965 CSSParserSelector* last = specifiers;
1963 CSSParserSelector* history = specifiers; 1966 CSSParserSelector* history = specifiers;
1964 while (history->tagHistory()) { 1967 while (history->tagHistory()) {
1965 history = history->tagHistory(); 1968 history = history->tagHistory();
1966 if (history->relationIsAffectedByPseudoContent()) 1969 if (history->isContentPseudoElement() || history->relationIsAffectedByPs eudoContent())
1967 last = history; 1970 last = history;
1968 } 1971 }
1969 1972
1970 if (last->tagHistory()) { 1973 if (last->tagHistory()) {
1971 if (tag != anyQName()) 1974 if (tag != anyQName())
1972 last->tagHistory()->prependTagSelector(tag, tagIsForNamespaceRule); 1975 last->tagHistory()->prependTagSelector(tag, tagIsForNamespaceRule);
1973 return specifiers; 1976 return specifiers;
1974 } 1977 }
1975 1978
1976 // For shadow-ID pseudo-elements to be correctly matched, the ShadowPseudo c ombinator has to be used. 1979 // For shadow-ID pseudo-elements to be correctly matched, the ShadowPseudo c ombinator has to be used.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2009 } 2012 }
2010 } 2013 }
2011 2014
2012 CSSParserSelector* BisonCSSParser::rewriteSpecifiers(CSSParserSelector* specifie rs, CSSParserSelector* newSpecifier) 2015 CSSParserSelector* BisonCSSParser::rewriteSpecifiers(CSSParserSelector* specifie rs, CSSParserSelector* newSpecifier)
2013 { 2016 {
2014 if (newSpecifier->needsCrossingTreeScopeBoundary()) { 2017 if (newSpecifier->needsCrossingTreeScopeBoundary()) {
2015 // Unknown pseudo element always goes at the top of selector chain. 2018 // Unknown pseudo element always goes at the top of selector chain.
2016 newSpecifier->appendTagHistory(CSSSelector::ShadowPseudo, sinkFloatingSe lector(specifiers)); 2019 newSpecifier->appendTagHistory(CSSSelector::ShadowPseudo, sinkFloatingSe lector(specifiers));
2017 return newSpecifier; 2020 return newSpecifier;
2018 } 2021 }
2022 if (newSpecifier->isContentPseudoElement()) {
2023 newSpecifier->appendTagHistory(CSSSelector::SubSelector, sinkFloatingSel ector(specifiers));
2024 return newSpecifier;
2025 }
2019 if (specifiers->needsCrossingTreeScopeBoundary()) { 2026 if (specifiers->needsCrossingTreeScopeBoundary()) {
2020 // Specifiers for unknown pseudo element go right behind it in the chain . 2027 // Specifiers for unknown pseudo element go right behind it in the chain .
2021 specifiers->insertTagHistory(CSSSelector::SubSelector, sinkFloatingSelec tor(newSpecifier), CSSSelector::ShadowPseudo); 2028 specifiers->insertTagHistory(CSSSelector::SubSelector, sinkFloatingSelec tor(newSpecifier), CSSSelector::ShadowPseudo);
2022 return specifiers; 2029 return specifiers;
2023 } 2030 }
2031 if (specifiers->isContentPseudoElement()) {
2032 specifiers->insertTagHistory(CSSSelector::SubSelector, sinkFloatingSelec tor(newSpecifier), CSSSelector::SubSelector);
2033 return specifiers;
2034 }
2024 specifiers->appendTagHistory(CSSSelector::SubSelector, sinkFloatingSelector( newSpecifier)); 2035 specifiers->appendTagHistory(CSSSelector::SubSelector, sinkFloatingSelector( newSpecifier));
2025 return specifiers; 2036 return specifiers;
2026 } 2037 }
2027 2038
2028 StyleRuleBase* BisonCSSParser::createPageRule(PassOwnPtr<CSSParserSelector> page Selector) 2039 StyleRuleBase* BisonCSSParser::createPageRule(PassOwnPtr<CSSParserSelector> page Selector)
2029 { 2040 {
2030 // FIXME: Margin at-rules are ignored. 2041 // FIXME: Margin at-rules are ignored.
2031 m_allowImportRules = m_allowNamespaceDeclarations = false; 2042 m_allowImportRules = m_allowNamespaceDeclarations = false;
2032 StyleRulePage* pageRule = 0; 2043 StyleRulePage* pageRule = 0;
2033 if (pageSelector) { 2044 if (pageSelector) {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2194 rule->setProperties(createStylePropertySet()); 2205 rule->setProperties(createStylePropertySet());
2195 clearProperties(); 2206 clearProperties();
2196 2207
2197 StyleRuleViewport* result = rule.get(); 2208 StyleRuleViewport* result = rule.get();
2198 m_parsedRules.append(rule.release()); 2209 m_parsedRules.append(rule.release());
2199 2210
2200 return result; 2211 return result;
2201 } 2212 }
2202 2213
2203 } 2214 }
OLDNEW
« no previous file with comments | « Source/core/css/SelectorFilter.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698