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

Side by Side Diff: third_party/WebKit/Source/core/css/parser/CSSParserImpl.h

Issue 2616093003: Make CSSParserContext be garbage collected. (Closed)
Patch Set: comments 1 Created 3 years, 11 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
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 CSSParserImpl_h 5 #ifndef CSSParserImpl_h
6 #define CSSParserImpl_h 6 #define CSSParserImpl_h
7 7
8 #include "core/CSSPropertyNames.h" 8 #include "core/CSSPropertyNames.h"
9 #include "core/css/CSSProperty.h" 9 #include "core/css/CSSProperty.h"
10 #include "core/css/CSSPropertySourceData.h" 10 #include "core/css/CSSPropertySourceData.h"
(...skipping 23 matching lines...) Expand all
34 class StyleRuleSupports; 34 class StyleRuleSupports;
35 class StyleRuleViewport; 35 class StyleRuleViewport;
36 class StyleSheetContents; 36 class StyleSheetContents;
37 class Element; 37 class Element;
38 38
39 class CSSParserImpl { 39 class CSSParserImpl {
40 STACK_ALLOCATED(); 40 STACK_ALLOCATED();
41 WTF_MAKE_NONCOPYABLE(CSSParserImpl); 41 WTF_MAKE_NONCOPYABLE(CSSParserImpl);
42 42
43 public: 43 public:
44 CSSParserImpl(const CSSParserContext&, StyleSheetContents* = nullptr); 44 CSSParserImpl(const CSSParserContext*, StyleSheetContents* = nullptr);
45 45
46 enum AllowedRulesType { 46 enum AllowedRulesType {
47 // As per css-syntax, css-cascade and css-namespaces, @charset rules 47 // As per css-syntax, css-cascade and css-namespaces, @charset rules
48 // must come first, followed by @import then @namespace. 48 // must come first, followed by @import then @namespace.
49 // AllowImportRules actually means we allow @import and any rules thay 49 // AllowImportRules actually means we allow @import and any rules thay
50 // may follow it, i.e. @namespace rules and regular rules. 50 // may follow it, i.e. @namespace rules and regular rules.
51 // AllowCharsetRules and AllowNamespaceRules behave similarly. 51 // AllowCharsetRules and AllowNamespaceRules behave similarly.
52 AllowCharsetRules, 52 AllowCharsetRules,
53 AllowImportRules, 53 AllowImportRules,
54 AllowNamespaceRules, 54 AllowNamespaceRules,
55 RegularRules, 55 RegularRules,
56 KeyframeRules, 56 KeyframeRules,
57 ApplyRules, // For @apply inside style rules 57 ApplyRules, // For @apply inside style rules
58 NoRules, // For parsing at-rules inside declaration lists 58 NoRules, // For parsing at-rules inside declaration lists
59 }; 59 };
60 60
61 static MutableStylePropertySet::SetResult parseValue(MutableStylePropertySet*, 61 static MutableStylePropertySet::SetResult parseValue(MutableStylePropertySet*,
62 CSSPropertyID, 62 CSSPropertyID,
63 const String&, 63 const String&,
64 bool important, 64 bool important,
65 const CSSParserContext&); 65 const CSSParserContext*);
66 static MutableStylePropertySet::SetResult parseVariableValue( 66 static MutableStylePropertySet::SetResult parseVariableValue(
67 MutableStylePropertySet*, 67 MutableStylePropertySet*,
68 const AtomicString& propertyName, 68 const AtomicString& propertyName,
69 const PropertyRegistry*, 69 const PropertyRegistry*,
70 const String&, 70 const String&,
71 bool important, 71 bool important,
72 const CSSParserContext&, 72 const CSSParserContext*,
73 bool isAnimationTainted); 73 bool isAnimationTainted);
74 static ImmutableStylePropertySet* parseInlineStyleDeclaration(const String&, 74 static ImmutableStylePropertySet* parseInlineStyleDeclaration(const String&,
75 Element*); 75 Element*);
76 static bool parseDeclarationList(MutableStylePropertySet*, 76 static bool parseDeclarationList(MutableStylePropertySet*,
77 const String&, 77 const String&,
78 const CSSParserContext&); 78 const CSSParserContext*);
79 static StyleRuleBase* parseRule(const String&, 79 static StyleRuleBase* parseRule(const String&,
80 const CSSParserContext&, 80 const CSSParserContext*,
81 StyleSheetContents*, 81 StyleSheetContents*,
82 AllowedRulesType); 82 AllowedRulesType);
83 static void parseStyleSheet(const String&, 83 static void parseStyleSheet(const String&,
84 const CSSParserContext&, 84 const CSSParserContext*,
85 StyleSheetContents*, 85 StyleSheetContents*,
86 bool deferPropertyParsing = false); 86 bool deferPropertyParsing = false);
87 static CSSSelectorList parsePageSelector(CSSParserTokenRange, 87 static CSSSelectorList parsePageSelector(CSSParserTokenRange,
88 StyleSheetContents*); 88 StyleSheetContents*);
89 89
90 static ImmutableStylePropertySet* parseCustomPropertySet(CSSParserTokenRange); 90 static ImmutableStylePropertySet* parseCustomPropertySet(CSSParserTokenRange);
91 91
92 static std::unique_ptr<Vector<double>> parseKeyframeKeyList(const String&); 92 static std::unique_ptr<Vector<double>> parseKeyframeKeyList(const String&);
93 93
94 bool supportsDeclaration(CSSParserTokenRange&); 94 bool supportsDeclaration(CSSParserTokenRange&);
95 95
96 static void parseDeclarationListForInspector(const String&, 96 static void parseDeclarationListForInspector(const String&,
97 const CSSParserContext&, 97 const CSSParserContext*,
98 CSSParserObserver&); 98 CSSParserObserver&);
99 static void parseStyleSheetForInspector(const String&, 99 static void parseStyleSheetForInspector(const String&,
100 const CSSParserContext&, 100 const CSSParserContext*,
101 StyleSheetContents*, 101 StyleSheetContents*,
102 CSSParserObserver&); 102 CSSParserObserver&);
103 103
104 static StylePropertySet* parseDeclarationListForLazyStyle( 104 static StylePropertySet* parseDeclarationListForLazyStyle(
105 CSSParserTokenRange block, 105 CSSParserTokenRange block,
106 const CSSParserContext&); 106 const CSSParserContext*);
107 107
108 private: 108 private:
109 enum RuleListType { TopLevelRuleList, RegularRuleList, KeyframesRuleList }; 109 enum RuleListType { TopLevelRuleList, RegularRuleList, KeyframesRuleList };
110 110
111 // Returns whether the first encountered rule was valid 111 // Returns whether the first encountered rule was valid
112 template <typename T> 112 template <typename T>
113 bool consumeRuleList(CSSParserTokenRange, RuleListType, T callback); 113 bool consumeRuleList(CSSParserTokenRange, RuleListType, T callback);
114 114
115 // These two functions update the range they're given 115 // These two functions update the range they're given
116 StyleRuleBase* consumeAtRule(CSSParserTokenRange&, AllowedRulesType); 116 StyleRuleBase* consumeAtRule(CSSParserTokenRange&, AllowedRulesType);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 const AtomicString& propertyName, 150 const AtomicString& propertyName,
151 bool important, 151 bool important,
152 bool isAnimationTainted); 152 bool isAnimationTainted);
153 153
154 static std::unique_ptr<Vector<double>> consumeKeyframeKeyList( 154 static std::unique_ptr<Vector<double>> consumeKeyframeKeyList(
155 CSSParserTokenRange); 155 CSSParserTokenRange);
156 156
157 // FIXME: Can we build StylePropertySets directly? 157 // FIXME: Can we build StylePropertySets directly?
158 // FIXME: Investigate using a smaller inline buffer 158 // FIXME: Investigate using a smaller inline buffer
159 HeapVector<CSSProperty, 256> m_parsedProperties; 159 HeapVector<CSSProperty, 256> m_parsedProperties;
160 const CSSParserContext& m_context;
161 160
161 Member<const CSSParserContext> m_context;
162 Member<StyleSheetContents> m_styleSheet; 162 Member<StyleSheetContents> m_styleSheet;
163 163
164 // For the inspector 164 // For the inspector
165 CSSParserObserverWrapper* m_observerWrapper; 165 CSSParserObserverWrapper* m_observerWrapper;
166 166
167 Member<CSSLazyParsingState> m_lazyState; 167 Member<CSSLazyParsingState> m_lazyState;
168 }; 168 };
169 169
170 } // namespace blink 170 } // namespace blink
171 171
172 #endif // CSSParserImpl_h 172 #endif // CSSParserImpl_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698