| Index: Source/core/css/parser/CSSSelectorParser.cpp
|
| diff --git a/Source/core/css/parser/CSSSelectorParser.cpp b/Source/core/css/parser/CSSSelectorParser.cpp
|
| index 84f8b5f22deaced70823449a5a613ed3687c0d6a..79ec539accf7b1e55a0729f8d040a2d40e235de4 100644
|
| --- a/Source/core/css/parser/CSSSelectorParser.cpp
|
| +++ b/Source/core/css/parser/CSSSelectorParser.cpp
|
| @@ -142,8 +142,7 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(CSSPars
|
|
|
| AtomicString namespacePrefix;
|
| AtomicString elementName;
|
| - bool hasNamespace;
|
| - if (!consumeName(range, elementName, namespacePrefix, hasNamespace)) {
|
| + if (!consumeName(range, elementName, namespacePrefix)) {
|
| compoundSelector = consumeSimpleSelector(range);
|
| if (!compoundSelector)
|
| return nullptr;
|
| @@ -158,11 +157,8 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(CSSPars
|
| compoundSelector = simpleSelector.release();
|
| }
|
|
|
| - if (!compoundSelector) {
|
| - if (hasNamespace)
|
| - return CSSParserSelector::create(determineNameInNamespace(namespacePrefix, elementName));
|
| - return CSSParserSelector::create(QualifiedName(nullAtom, elementName, defaultNamespace()));
|
| - }
|
| + if (!compoundSelector)
|
| + return CSSParserSelector::create(determineNameInNamespace(namespacePrefix, elementName));
|
| prependTypeSelectorIfNeeded(namespacePrefix, elementName, compoundSelector.get());
|
| return compoundSelector.release();
|
| }
|
| @@ -186,11 +182,10 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeSimpleSelector(CSSParser
|
| return selector.release();
|
| }
|
|
|
| -bool CSSSelectorParser::consumeName(CSSParserTokenRange& range, AtomicString& name, AtomicString& namespacePrefix, bool& hasNamespace)
|
| +bool CSSSelectorParser::consumeName(CSSParserTokenRange& range, AtomicString& name, AtomicString& namespacePrefix)
|
| {
|
| name = nullAtom;
|
| namespacePrefix = nullAtom;
|
| - hasNamespace = false;
|
|
|
| const CSSParserToken& firstToken = range.peek();
|
| if (firstToken.type() == IdentToken) {
|
| @@ -200,7 +195,8 @@ bool CSSSelectorParser::consumeName(CSSParserTokenRange& range, AtomicString& na
|
| name = starAtom;
|
| range.consume();
|
| } else if (firstToken.type() == DelimiterToken && firstToken.delimiter() == '|') {
|
| - // No namespace
|
| + // This is an empty namespace, which'll get assigned this value below
|
| + name = emptyAtom;
|
| } else {
|
| return false;
|
| }
|
| @@ -209,7 +205,6 @@ bool CSSSelectorParser::consumeName(CSSParserTokenRange& range, AtomicString& na
|
| return true;
|
| range.consume();
|
|
|
| - hasNamespace = true;
|
| namespacePrefix = name;
|
| const CSSParserToken& nameToken = range.consume();
|
| if (nameToken.type() == IdentToken) {
|
| @@ -265,17 +260,16 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeAttribute(CSSParserToken
|
|
|
| AtomicString namespacePrefix;
|
| AtomicString attributeName;
|
| - bool hasNamespace;
|
| - if (!consumeName(block, attributeName, namespacePrefix, hasNamespace))
|
| + if (!consumeName(block, attributeName, namespacePrefix))
|
| return nullptr;
|
| block.consumeWhitespace();
|
|
|
| if (m_context.isHTMLDocument())
|
| attributeName = attributeName.lower();
|
|
|
| - QualifiedName qualifiedName = hasNamespace
|
| - ? determineNameInNamespace(namespacePrefix, attributeName)
|
| - : QualifiedName(nullAtom, attributeName, nullAtom);
|
| + QualifiedName qualifiedName = namespacePrefix.isNull()
|
| + ? QualifiedName(nullAtom, attributeName, nullAtom)
|
| + : determineNameInNamespace(namespacePrefix, attributeName);
|
|
|
| OwnPtr<CSSParserSelector> selector = CSSParserSelector::create();
|
|
|
| @@ -555,8 +549,7 @@ void CSSSelectorParser::prependTypeSelectorIfNeeded(const AtomicString& namespac
|
| return;
|
|
|
| AtomicString determinedElementName = elementName.isNull() ? starAtom : elementName;
|
| - AtomicString determinedNamespace = namespacePrefix != nullAtom && m_styleSheet ? m_styleSheet->determineNamespace(namespacePrefix) : defaultNamespace();
|
| - QualifiedName tag(namespacePrefix, determinedElementName, determinedNamespace);
|
| + QualifiedName tag = determineNameInNamespace(namespacePrefix, determinedElementName);
|
|
|
| if (compoundSelector->crossesTreeScopes())
|
| return rewriteSpecifiersWithElementNameForCustomPseudoElement(tag, compoundSelector, elementName.isNull());
|
|
|