| Index: Source/core/css/parser/CSSSelectorParser.h
|
| diff --git a/Source/core/css/parser/CSSSelectorParser.h b/Source/core/css/parser/CSSSelectorParser.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a781df74895fb2e8f324e221d391d282f330912d
|
| --- /dev/null
|
| +++ b/Source/core/css/parser/CSSSelectorParser.h
|
| @@ -0,0 +1,62 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CSSSelectorParser_h
|
| +#define CSSSelectorParser_h
|
| +
|
| +#include "core/css/parser/CSSParserTokenRange.h"
|
| +#include "core/css/parser/CSSParserValues.h"
|
| +
|
| +namespace blink {
|
| +
|
| +class CSSSelectorList;
|
| +class StyleSheetContents;
|
| +
|
| +// FIXME: We should consider building CSSSelectors directly instead of using
|
| +// the intermediate CSSParserSelector.
|
| +class CSSSelectorParser {
|
| +public:
|
| + static void parseSelector(CSSParserTokenRange, const CSSParserContext&, CSSSelectorList&);
|
| +
|
| +private:
|
| + CSSSelectorParser(CSSParserTokenRange, const CSSParserContext&);
|
| +
|
| + // These will all consume trailing comments if successful
|
| +
|
| + void consumeComplexSelectorList(CSSSelectorList&);
|
| +
|
| + PassOwnPtr<CSSParserSelector> consumeComplexSelector();
|
| + PassOwnPtr<CSSParserSelector> consumeCompoundSelector();
|
| + // This doesn't include element names, since they're handled specially
|
| + PassOwnPtr<CSSParserSelector> consumeSimpleSelector();
|
| +
|
| + bool consumeName(AtomicString& name, AtomicString& namespacePrefix, bool& hasNamespace);
|
| +
|
| + // These will return nullptr when the selector is invalid
|
| + PassOwnPtr<CSSParserSelector> consumeId();
|
| + PassOwnPtr<CSSParserSelector> consumeClass();
|
| + PassOwnPtr<CSSParserSelector> consumePseudo();
|
| + PassOwnPtr<CSSParserSelector> consumeAttribute();
|
| +
|
| + CSSSelector::Relation consumeCombinator();
|
| +
|
| + QualifiedName determineNameInNamespace(const AtomicString& prefix, const AtomicString& localName);
|
| + void rewriteSpecifiersWithNamespaceIfNeeded(CSSParserSelector*);
|
| + void rewriteSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector*, bool tagIsForNamespaceRule = false);
|
| + void rewriteSpecifiersWithElementNameForCustomPseudoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSelector*, bool tagIsForNamespaceRule);
|
| + void rewriteSpecifiersWithElementNameForContentPseudoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSelector*, bool tagIsForNamespaceRule);
|
| + PassOwnPtr<CSSParserSelector> rewriteSpecifiers(PassOwnPtr<CSSParserSelector> specifiers, PassOwnPtr<CSSParserSelector> newSpecifier);
|
| +
|
| + CSSParserTokenRange m_tokenRange;
|
| +
|
| + const CSSParserContext& m_context;
|
| + AtomicString m_defaultNamespace;
|
| + StyleSheetContents* m_styleSheet;
|
| +
|
| + bool m_failedParsing;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +#endif // CSSSelectorParser_h
|
|
|