Index: third_party/WebKit/Source/core/css/parser/CSSParserImpl.h |
diff --git a/third_party/WebKit/Source/core/css/parser/CSSParserImpl.h b/third_party/WebKit/Source/core/css/parser/CSSParserImpl.h |
index 219ab0dd541d54ac6655d770199319d75627f2f3..378ec9c8fc290248612408fb2632de04a2973a0a 100644 |
--- a/third_party/WebKit/Source/core/css/parser/CSSParserImpl.h |
+++ b/third_party/WebKit/Source/core/css/parser/CSSParserImpl.h |
@@ -10,6 +10,7 @@ |
#include "core/css/CSSPropertySourceData.h" |
#include "core/css/StylePropertySet.h" |
#include "core/css/parser/CSSParserTokenRange.h" |
+#include "core/css/parser/CSSParserTokenStream.h" |
#include "platform/heap/Handle.h" |
#include "wtf/Vector.h" |
#include "wtf/text/WTFString.h" |
@@ -20,7 +21,6 @@ namespace blink { |
class CSSLazyParsingState; |
class CSSParserContext; |
class CSSParserObserver; |
-class CSSParserObserverWrapper; |
class StyleRule; |
class StyleRuleBase; |
class StyleRuleCharset; |
@@ -88,6 +88,10 @@ class CSSParserImpl { |
StyleSheetContents*); |
static ImmutableStylePropertySet* parseCustomPropertySet(CSSParserTokenRange); |
+ // This will be removed when crbug.com/661854 is fixed. We need to use a |
+ // stream for parsing @apply blocks so we can correctly store custom |
+ // property values. |
+ void consumeDeclarationListForAtApply(CSSParserTokenRange); |
static std::unique_ptr<Vector<double>> parseKeyframeKeyList(const String&); |
@@ -102,7 +106,8 @@ class CSSParserImpl { |
CSSParserObserver&); |
static StylePropertySet* parseDeclarationListForLazyStyle( |
- CSSParserTokenRange block, |
+ const String&, |
+ size_t startOffset, |
const CSSParserContext&); |
private: |
@@ -110,38 +115,55 @@ class CSSParserImpl { |
// Returns whether the first encountered rule was valid |
template <typename T> |
- bool consumeRuleList(CSSParserTokenRange, RuleListType, T callback); |
+ bool consumeRuleList(CSSParserTokenStream&, RuleListType, T callback); |
- // These two functions update the range they're given |
- StyleRuleBase* consumeAtRule(CSSParserTokenRange&, AllowedRulesType); |
- StyleRuleBase* consumeQualifiedRule(CSSParserTokenRange&, AllowedRulesType); |
+ StyleRuleBase* consumeAtRule(CSSParserTokenStream&, AllowedRulesType); |
+ // The start offset is needed when we use a CSSParserObserver |
+ StyleRuleBase* consumeQualifiedRule(CSSParserTokenStream&, |
+ AllowedRulesType, |
+ size_t startOffset = 0); |
static StyleRuleCharset* consumeCharsetRule(CSSParserTokenRange prelude); |
- StyleRuleImport* consumeImportRule(CSSParserTokenRange prelude); |
+ StyleRuleImport* consumeImportRule(CSSParserTokenRange prelude, |
+ size_t startOffset, |
+ size_t endOffset); |
StyleRuleNamespace* consumeNamespaceRule(CSSParserTokenRange prelude); |
+ // The prelude runs from preludeStartOffset to block.offset() - 1 |
StyleRuleMedia* consumeMediaRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
StyleRuleSupports* consumeSupportsRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
StyleRuleViewport* consumeViewportRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
StyleRuleFontFace* consumeFontFaceRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
StyleRuleKeyframes* consumeKeyframesRule(bool webkitPrefixed, |
CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
StyleRulePage* consumePageRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
// Updates m_parsedProperties |
void consumeApplyRule(CSSParserTokenRange prelude); |
StyleRuleKeyframe* consumeKeyframeStyleRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
- StyleRule* consumeStyleRule(CSSParserTokenRange prelude, |
- CSSParserTokenRange block); |
- |
- void consumeDeclarationList(CSSParserTokenRange, StyleRule::RuleType); |
- void consumeDeclaration(CSSParserTokenRange, StyleRule::RuleType); |
+ CSSParserTokenStream& block, |
+ size_t preludeStartOffset); |
+ StyleRule* consumeStyleRule(CSSParserTokenStream&, size_t startOffset); |
+ |
+ void consumeDeclarationList(CSSParserTokenStream&, StyleRule::RuleType); |
+ void consumeDeclaration(CSSParserTokenStream&, |
+ StyleRule::RuleType, |
+ size_t declarationStartOffset); |
+ void consumeDeclaration(CSSParserTokenRange, |
+ StyleRule::RuleType, |
+ size_t declarationStartOffset, |
+ size_t declarationEndOffset); |
void consumeDeclarationValue(CSSParserTokenRange, |
CSSPropertyID, |
bool important, |
@@ -161,10 +183,9 @@ class CSSParserImpl { |
Member<StyleSheetContents> m_styleSheet; |
- // For the inspector |
- CSSParserObserverWrapper* m_observerWrapper; |
- |
Member<CSSLazyParsingState> m_lazyState; |
+ |
+ CSSParserObserver* m_observer = nullptr; |
}; |
} // namespace blink |