Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: Source/core/css/parser/CSSSelectorParser.h

Issue 1322543004: CSSStyleSheet::insertRule should respect the default namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/css/parser/CSSParserImpl.cpp ('k') | Source/core/css/parser/CSSSelectorParser.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CSSSelectorParser_h 5 #ifndef CSSSelectorParser_h
6 #define CSSSelectorParser_h 6 #define CSSSelectorParser_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/css/parser/CSSParserTokenRange.h" 9 #include "core/css/parser/CSSParserTokenRange.h"
10 #include "core/css/parser/CSSParserValues.h" 10 #include "core/css/parser/CSSParserValues.h"
11 11
12 namespace blink { 12 namespace blink {
13 13
14 class CSSSelectorList; 14 class CSSSelectorList;
15 class StyleSheetContents; 15 class StyleSheetContents;
16 16
17 // FIXME: We should consider building CSSSelectors directly instead of using 17 // FIXME: We should consider building CSSSelectors directly instead of using
18 // the intermediate CSSParserSelector. 18 // the intermediate CSSParserSelector.
19 class CORE_EXPORT CSSSelectorParser { 19 class CORE_EXPORT CSSSelectorParser {
20 STACK_ALLOCATED(); 20 STACK_ALLOCATED();
21 public: 21 public:
22 static void parseSelector(CSSParserTokenRange, const CSSParserContext&, cons t AtomicString& defaultNamespace, StyleSheetContents*, CSSSelectorList&); 22 static void parseSelector(CSSParserTokenRange, const CSSParserContext&, Styl eSheetContents*, CSSSelectorList&);
23 23
24 static bool consumeANPlusB(CSSParserTokenRange&, std::pair<int, int>&); 24 static bool consumeANPlusB(CSSParserTokenRange&, std::pair<int, int>&);
25 25
26 private: 26 private:
27 CSSSelectorParser(const CSSParserContext&, const AtomicString& defaultNamesp ace, StyleSheetContents*); 27 CSSSelectorParser(const CSSParserContext&, StyleSheetContents*);
28 28
29 // These will all consume trailing comments if successful 29 // These will all consume trailing comments if successful
30 30
31 void consumeComplexSelectorList(CSSParserTokenRange&, CSSSelectorList&); 31 void consumeComplexSelectorList(CSSParserTokenRange&, CSSSelectorList&);
32 void consumeCompoundSelectorList(CSSParserTokenRange&, CSSSelectorList&); 32 void consumeCompoundSelectorList(CSSParserTokenRange&, CSSSelectorList&);
33 33
34 PassOwnPtr<CSSParserSelector> consumeComplexSelector(CSSParserTokenRange&); 34 PassOwnPtr<CSSParserSelector> consumeComplexSelector(CSSParserTokenRange&);
35 PassOwnPtr<CSSParserSelector> consumeCompoundSelector(CSSParserTokenRange&); 35 PassOwnPtr<CSSParserSelector> consumeCompoundSelector(CSSParserTokenRange&);
36 // This doesn't include element names, since they're handled specially 36 // This doesn't include element names, since they're handled specially
37 PassOwnPtr<CSSParserSelector> consumeSimpleSelector(CSSParserTokenRange&); 37 PassOwnPtr<CSSParserSelector> consumeSimpleSelector(CSSParserTokenRange&);
38 38
39 bool consumeName(CSSParserTokenRange&, AtomicString& name, AtomicString& nam espacePrefix, bool& hasNamespace); 39 bool consumeName(CSSParserTokenRange&, AtomicString& name, AtomicString& nam espacePrefix, bool& hasNamespace);
40 40
41 // These will return nullptr when the selector is invalid 41 // These will return nullptr when the selector is invalid
42 PassOwnPtr<CSSParserSelector> consumeId(CSSParserTokenRange&); 42 PassOwnPtr<CSSParserSelector> consumeId(CSSParserTokenRange&);
43 PassOwnPtr<CSSParserSelector> consumeClass(CSSParserTokenRange&); 43 PassOwnPtr<CSSParserSelector> consumeClass(CSSParserTokenRange&);
44 PassOwnPtr<CSSParserSelector> consumePseudo(CSSParserTokenRange&); 44 PassOwnPtr<CSSParserSelector> consumePseudo(CSSParserTokenRange&);
45 PassOwnPtr<CSSParserSelector> consumeAttribute(CSSParserTokenRange&); 45 PassOwnPtr<CSSParserSelector> consumeAttribute(CSSParserTokenRange&);
46 46
47 CSSSelector::Relation consumeCombinator(CSSParserTokenRange&); 47 CSSSelector::Relation consumeCombinator(CSSParserTokenRange&);
48 CSSSelector::Match consumeAttributeMatch(CSSParserTokenRange&); 48 CSSSelector::Match consumeAttributeMatch(CSSParserTokenRange&);
49 CSSSelector::AttributeMatchType consumeAttributeFlags(CSSParserTokenRange&); 49 CSSSelector::AttributeMatchType consumeAttributeFlags(CSSParserTokenRange&);
50 50
51 const AtomicString& defaultNamespace() const;
51 QualifiedName determineNameInNamespace(const AtomicString& prefix, const Ato micString& localName); 52 QualifiedName determineNameInNamespace(const AtomicString& prefix, const Ato micString& localName);
52 void prependTypeSelectorIfNeeded(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector*); 53 void prependTypeSelectorIfNeeded(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector*);
53 void rewriteSpecifiersWithElementNameForCustomPseudoElement(const QualifiedN ame& tag, CSSParserSelector*, bool tagIsImplicit); 54 void rewriteSpecifiersWithElementNameForCustomPseudoElement(const QualifiedN ame& tag, CSSParserSelector*, bool tagIsImplicit);
54 void rewriteSpecifiersWithElementNameForContentPseudoElement(const Qualified Name& tag, CSSParserSelector*, bool tagIsImplicit); 55 void rewriteSpecifiersWithElementNameForContentPseudoElement(const Qualified Name& tag, CSSParserSelector*, bool tagIsImplicit);
55 static PassOwnPtr<CSSParserSelector> addSimpleSelectorToCompound(PassOwnPtr< CSSParserSelector> compoundSelector, PassOwnPtr<CSSParserSelector> simpleSelecto r); 56 static PassOwnPtr<CSSParserSelector> addSimpleSelectorToCompound(PassOwnPtr< CSSParserSelector> compoundSelector, PassOwnPtr<CSSParserSelector> simpleSelecto r);
56 57
57 const CSSParserContext& m_context; 58 const CSSParserContext& m_context;
58 AtomicString m_defaultNamespace;
59 RawPtrWillBeMember<StyleSheetContents> m_styleSheet; // FIXME: Should be con st 59 RawPtrWillBeMember<StyleSheetContents> m_styleSheet; // FIXME: Should be con st
60 60
61 bool m_failedParsing; 61 bool m_failedParsing;
62 }; 62 };
63 63
64 } // namespace 64 } // namespace
65 65
66 #endif // CSSSelectorParser_h 66 #endif // CSSSelectorParser_h
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSParserImpl.cpp ('k') | Source/core/css/parser/CSSSelectorParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698