diff options
author | dstockwell <dstockwell@chromium.org> | 2015-10-14 17:11:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-15 00:12:36 +0000 |
commit | 9783a01dacc85fa99a43bdd34c6c23d59736d17e (patch) | |
tree | 2faeb3ecc9865bd358a0d1102a3f7f41eac5eb25 | |
parent | 9893e6aff9f1811ca5e0e3b3ab4f9fac19afec92 (diff) | |
download | chromium_src-9783a01dacc85fa99a43bdd34c6c23d59736d17e.zip chromium_src-9783a01dacc85fa99a43bdd34c6c23d59736d17e.tar.gz chromium_src-9783a01dacc85fa99a43bdd34c6c23d59736d17e.tar.bz2 |
Simplify CSSSelector::selectorText
Review URL: https://codereview.chromium.org/1406693002
Cr-Commit-Position: refs/heads/master@{#354162}
-rw-r--r-- | third_party/WebKit/Source/core/css/CSSSelector.cpp | 62 |
1 files changed, 19 insertions, 43 deletions
diff --git a/third_party/WebKit/Source/core/css/CSSSelector.cpp b/third_party/WebKit/Source/core/css/CSSSelector.cpp index faa3dcf..20b4583 100644 --- a/third_party/WebKit/Source/core/css/CSSSelector.cpp +++ b/third_party/WebKit/Source/core/css/CSSSelector.cpp @@ -612,12 +612,6 @@ String CSSSelector::selectorText(const String& rightSide) const str.append(cs->value()); switch (cs->pseudoType()) { - case PseudoNot: - ASSERT(cs->selectorList()); - str.append('('); - str.append(cs->selectorList()->first()->selectorText()); - str.append(')'); - break; case PseudoNthChild: case PseudoNthLastChild: case PseudoNthOfType: @@ -646,52 +640,22 @@ String CSSSelector::selectorText(const String& rightSide) const str.append(cs->argument()); str.append(')'); break; - case PseudoAny: { - str.append('('); - const CSSSelector* firstSubSelector = cs->selectorList()->first(); - for (const CSSSelector* subSelector = firstSubSelector; subSelector; subSelector = CSSSelectorList::next(*subSelector)) { - if (subSelector != firstSubSelector) - str.append(','); - str.append(subSelector->selectorText()); - } - str.append(')'); + case PseudoNot: + ASSERT(cs->selectorList()); break; - } case PseudoHost: - case PseudoHostContext: { - if (cs->selectorList()) { - str.append('('); - const CSSSelector* firstSubSelector = cs->selectorList()->first(); - for (const CSSSelector* subSelector = firstSubSelector; subSelector; subSelector = CSSSelectorList::next(*subSelector)) { - if (subSelector != firstSubSelector) - str.append(','); - str.append(subSelector->selectorText()); - } - str.append(')'); - } + case PseudoHostContext: + case PseudoAny: break; - } default: break; } } else if (cs->m_match == PseudoElement) { str.appendLiteral("::"); str.append(cs->value()); - - if (cs->pseudoType() == PseudoContent) { - if (cs->relation() == SubSelector && cs->tagHistory()) - return cs->tagHistory()->selectorText() + str.toString() + rightSide; - } else if (cs->pseudoType() == PseudoCue) { - if (cs->selectorList()) { - str.append('('); - const CSSSelector* firstSubSelector = cs->selectorList()->first(); - for (const CSSSelector* subSelector = firstSubSelector; subSelector; subSelector = CSSSelectorList::next(*subSelector)) { - if (subSelector != firstSubSelector) - str.append(','); - str.append(subSelector->selectorText()); - } - str.append(')'); - } + // ::content is always stored at the end of the compound. + if (cs->pseudoType() == PseudoContent && cs->relation() == SubSelector && cs->tagHistory()) { + return cs->tagHistory()->selectorText() + str.toString() + rightSide; } } else if (cs->isAttributeSelector()) { str.append('['); @@ -734,6 +698,18 @@ String CSSSelector::selectorText(const String& rightSide) const str.append(']'); } } + + if (cs->selectorList()) { + str.append('('); + const CSSSelector* firstSubSelector = cs->selectorList()->first(); + for (const CSSSelector* subSelector = firstSubSelector; subSelector; subSelector = CSSSelectorList::next(*subSelector)) { + if (subSelector != firstSubSelector) + str.append(','); + str.append(subSelector->selectorText()); + } + str.append(')'); + } + if (cs->relation() != SubSelector || !cs->tagHistory()) break; cs = cs->tagHistory(); |