Chromium Code Reviews| Index: third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp |
| diff --git a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp |
| index be1b17a26a02cabb1a8b16428e29047761661e2a..4f72a0adc2f72aa92fb004c5f61ea56310c7162a 100644 |
| --- a/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp |
| +++ b/third_party/WebKit/Source/core/css/parser/CSSSelectorParser.cpp |
| @@ -304,8 +304,10 @@ PassOwnPtr<CSSParserSelector> CSSSelectorParser::consumeCompoundSelector(CSSPars |
| if (!compoundSelector) { |
| AtomicString namespaceURI = determineNamespace(namespacePrefix); |
| - if (namespaceURI.isNull()) |
| + if (namespaceURI.isNull()) { |
| + m_failedParsing = true; |
|
rune
2016/01/22 11:50:30
There's a separate CL (https://codereview.chromium
|
| return nullptr; |
| + } |
| return CSSParserSelector::create(QualifiedName(namespacePrefix, elementName, namespaceURI)); |
| } |
| prependTypeSelectorIfNeeded(namespacePrefix, elementName, compoundSelector.get()); |
| @@ -701,9 +703,15 @@ const AtomicString& CSSSelectorParser::defaultNamespace() const |
| const AtomicString& CSSSelectorParser::determineNamespace(const AtomicString& prefix) |
| { |
| - if (!m_styleSheet) |
| + if (prefix.isNull()) |
| return defaultNamespace(); |
| - return m_styleSheet->determineNamespace(prefix); |
| + if (prefix.isEmpty()) |
| + return emptyAtom; // No namespace. If an element/attribute has a namespace, we won't match it. |
| + if (prefix == starAtom) |
| + return starAtom; // We'll match any namespace. |
| + if (!m_styleSheet) |
| + return nullAtom; // Cannot resolve prefix to namespace without a stylesheet, syntax error. |
| + return m_styleSheet->namespaceURIFromPrefix(prefix); |
| } |
| void CSSSelectorParser::prependTypeSelectorIfNeeded(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector* compoundSelector) |