| Index: Source/core/css/parser/CSSSelectorParser.cpp
|
| diff --git a/Source/core/css/parser/CSSSelectorParser.cpp b/Source/core/css/parser/CSSSelectorParser.cpp
|
| index d570d2f83460ea6e17bd94344397bcbf755c2fa6..84f8b5f22deaced70823449a5a613ed3687c0d6a 100644
|
| --- a/Source/core/css/parser/CSSSelectorParser.cpp
|
| +++ b/Source/core/css/parser/CSSSelectorParser.cpp
|
| @@ -50,9 +50,9 @@ static void recordSelectorStats(const CSSParserContext& context, const CSSSelect
|
| }
|
| }
|
|
|
| -void CSSSelectorParser::parseSelector(CSSParserTokenRange range, const CSSParserContext& context, const AtomicString& defaultNamespace, StyleSheetContents* styleSheet, CSSSelectorList& output)
|
| +void CSSSelectorParser::parseSelector(CSSParserTokenRange range, const CSSParserContext& context, StyleSheetContents* styleSheet, CSSSelectorList& output)
|
| {
|
| - CSSSelectorParser parser(context, defaultNamespace, styleSheet);
|
| + CSSSelectorParser parser(context, styleSheet);
|
| range.consumeWhitespace();
|
| CSSSelectorList result;
|
| parser.consumeComplexSelectorList(range, result);
|
| @@ -63,9 +63,8 @@ void CSSSelectorParser::parseSelector(CSSParserTokenRange range, const CSSParser
|
| ASSERT(!(output.isValid() && parser.m_failedParsing));
|
| }
|
|
|
| -CSSSelectorParser::CSSSelectorParser(const CSSParserContext& context, const AtomicString& defaultNamespace, StyleSheetContents* styleSheet)
|
| +CSSSelectorParser::CSSSelectorParser(const CSSParserContext& context, StyleSheetContents* styleSheet)
|
| : m_context(context)
|
| -, m_defaultNamespace(defaultNamespace)
|
| , m_styleSheet(styleSheet)
|
| , m_failedParsing(false)
|
| {
|
| @@ -162,7 +161,7 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(CSSPars
|
| if (!compoundSelector) {
|
| if (hasNamespace)
|
| return CSSParserSelector::create(determineNameInNamespace(namespacePrefix, elementName));
|
| - return CSSParserSelector::create(QualifiedName(nullAtom, elementName, m_defaultNamespace));
|
| + return CSSParserSelector::create(QualifiedName(nullAtom, elementName, defaultNamespace()));
|
| }
|
| prependTypeSelectorIfNeeded(namespacePrefix, elementName, compoundSelector.get());
|
| return compoundSelector.release();
|
| @@ -536,20 +535,27 @@ bool CSSSelectorParser::consumeANPlusB(CSSParserTokenRange& range, std::pair<int
|
| return true;
|
| }
|
|
|
| +const AtomicString& CSSSelectorParser::defaultNamespace() const
|
| +{
|
| + if (!m_styleSheet)
|
| + return starAtom;
|
| + return m_styleSheet->defaultNamespace();
|
| +}
|
| +
|
| QualifiedName CSSSelectorParser::determineNameInNamespace(const AtomicString& prefix, const AtomicString& localName)
|
| {
|
| if (!m_styleSheet)
|
| - return QualifiedName(prefix, localName, m_defaultNamespace);
|
| + return QualifiedName(prefix, localName, defaultNamespace());
|
| return QualifiedName(prefix, localName, m_styleSheet->determineNamespace(prefix));
|
| }
|
|
|
| void CSSSelectorParser::prependTypeSelectorIfNeeded(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector* compoundSelector)
|
| {
|
| - if (elementName.isNull() && m_defaultNamespace == starAtom && !compoundSelector->crossesTreeScopes())
|
| + if (elementName.isNull() && defaultNamespace() == starAtom && !compoundSelector->crossesTreeScopes())
|
| return;
|
|
|
| AtomicString determinedElementName = elementName.isNull() ? starAtom : elementName;
|
| - AtomicString determinedNamespace = namespacePrefix != nullAtom && m_styleSheet ? m_styleSheet->determineNamespace(namespacePrefix) : m_defaultNamespace;
|
| + AtomicString determinedNamespace = namespacePrefix != nullAtom && m_styleSheet ? m_styleSheet->determineNamespace(namespacePrefix) : defaultNamespace();
|
| QualifiedName tag(namespacePrefix, determinedElementName, determinedNamespace);
|
|
|
| if (compoundSelector->crossesTreeScopes())
|
|
|