summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/css/CSSParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/css/CSSParser.h')
-rwxr-xr-xchromium/third_party/WebKit/Source/core/css/CSSParser.h676
1 files changed, 0 insertions, 676 deletions
diff --git a/chromium/third_party/WebKit/Source/core/css/CSSParser.h b/chromium/third_party/WebKit/Source/core/css/CSSParser.h
deleted file mode 100755
index de263102892..00000000000
--- a/chromium/third_party/WebKit/Source/core/css/CSSParser.h
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
- * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2009 - 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef CSSParser_h
-#define CSSParser_h
-
-#include "CSSPropertyNames.h"
-#include "CSSValueKeywords.h"
-#include "core/css/CSSCalculationValue.h"
-#include "core/css/CSSFilterValue.h"
-#include "core/css/CSSGradientValue.h"
-#include "core/css/CSSParserMode.h"
-#include "core/css/CSSParserValues.h"
-#include "core/css/CSSProperty.h"
-#include "core/css/CSSPropertySourceData.h"
-#include "core/css/CSSSelector.h"
-#include "core/css/CSSTokenizer.h"
-#include "core/css/MediaQuery.h"
-#include "core/css/StylePropertySet.h"
-#include "core/frame/UseCounter.h"
-#include "platform/graphics/Color.h"
-#include "wtf/HashSet.h"
-#include "wtf/OwnPtr.h"
-#include "wtf/Vector.h"
-#include "wtf/text/AtomicString.h"
-#include "wtf/text/TextPosition.h"
-
-namespace WebCore {
-
-class AnimationParseContext;
-class CSSArrayFunctionValue;
-class CSSBorderImageSliceValue;
-class CSSMixFunctionValue;
-class CSSPrimitiveValue;
-class CSSSelectorList;
-class CSSShaderValue;
-class CSSValue;
-class CSSValueList;
-class CSSBasicShape;
-class Document;
-class Element;
-class ImmutableStylePropertySet;
-class MediaQueryExp;
-class MediaQuerySet;
-class MutableStylePropertySet;
-class StyleKeyframe;
-class StylePropertyShorthand;
-class StyleRuleBase;
-class StyleRuleKeyframes;
-class StyleKeyframe;
-class StyleSheetContents;
-
-// FIXME: This class is shared with CSSTokenizer so should we rename it to CSSSourceLocation?
-struct CSSParserLocation {
- unsigned offset;
- unsigned lineNumber;
- CSSParserString token;
-};
-
-class CSSParser {
- friend inline int cssyylex(void*, CSSParser*);
-
-public:
- class SourceDataHandler;
- enum ErrorType {
- NoError,
- PropertyDeclarationError,
- InvalidPropertyValueError,
- InvalidPropertyError,
- InvalidSelectorError,
- InvalidSupportsConditionError,
- InvalidRuleError,
- InvalidMediaQueryError,
- InvalidKeyframeSelectorError,
- InvalidSelectorPseudoError,
- UnterminatedCommentError,
- GeneralError
- };
-
- CSSParser(const CSSParserContext&, UseCounter* = 0);
-
- ~CSSParser();
-
- void parseSheet(StyleSheetContents*, const String&, const TextPosition& startPosition = TextPosition::minimumPosition(), SourceDataHandler* = 0, bool = false);
- PassRefPtr<StyleRuleBase> parseRule(StyleSheetContents*, const String&);
- PassRefPtr<StyleKeyframe> parseKeyframeRule(StyleSheetContents*, const String&);
- bool parseSupportsCondition(const String&);
- static bool parseValue(MutableStylePropertySet*, CSSPropertyID, const String&, bool important, CSSParserMode, StyleSheetContents*);
- static bool parseColor(RGBA32& color, const String&, bool strict = false);
- static bool parseSystemColor(RGBA32& color, const String&, Document*);
- static PassRefPtr<CSSValueList> parseFontFaceValue(const AtomicString&);
- PassRefPtr<CSSPrimitiveValue> parseValidPrimitive(CSSValueID ident, CSSParserValue*);
- bool parseDeclaration(MutableStylePropertySet*, const String&, SourceDataHandler*, StyleSheetContents* contextStyleSheet);
- static PassRefPtr<ImmutableStylePropertySet> parseInlineStyleDeclaration(const String&, Element*);
- PassRefPtr<MediaQuerySet> parseMediaQueryList(const String&);
- PassOwnPtr<Vector<double> > parseKeyframeKeyList(const String&);
-
- void addPropertyWithPrefixingVariant(CSSPropertyID, PassRefPtr<CSSValue>, bool important, bool implicit = false);
- void addProperty(CSSPropertyID, PassRefPtr<CSSValue>, bool important, bool implicit = false);
- void rollbackLastProperties(int num);
- bool hasProperties() const { return !m_parsedProperties.isEmpty(); }
- void addExpandedPropertyForValue(CSSPropertyID propId, PassRefPtr<CSSValue>, bool);
- void setCurrentProperty(CSSPropertyID);
-
- bool parseValue(CSSPropertyID, bool important);
- bool parseShorthand(CSSPropertyID, const StylePropertyShorthand&, bool important);
- bool parse4Values(CSSPropertyID, const CSSPropertyID* properties, bool important);
- bool parseContent(CSSPropertyID, bool important);
- bool parseQuotes(CSSPropertyID, bool important);
-
- static bool parseValue(MutableStylePropertySet*, CSSPropertyID, const String&, bool important, const Document&);
- void storeVariableDeclaration(const CSSParserString&, PassOwnPtr<CSSParserValueList>, bool important);
-
- PassRefPtr<CSSValue> parseAttr(CSSParserValueList* args);
-
- PassRefPtr<CSSValue> parseBackgroundColor();
-
- bool parseFillImage(CSSParserValueList*, RefPtr<CSSValue>&);
-
- enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 };
- enum FillPositionParsingMode { ResolveValuesAsPercent = 0, ResolveValuesAsKeyword = 1 };
- PassRefPtr<CSSPrimitiveValue> parseFillPositionComponent(CSSParserValueList*, unsigned& cumulativeFlags, FillPositionFlag& individualFlag, FillPositionParsingMode = ResolveValuesAsPercent);
- PassRefPtr<CSSValue> parseFillPositionX(CSSParserValueList*);
- PassRefPtr<CSSValue> parseFillPositionY(CSSParserValueList*);
- void parse2ValuesFillPosition(CSSParserValueList*, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- bool isPotentialPositionValue(CSSParserValue*);
- void parseFillPosition(CSSParserValueList*, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- void parse3ValuesFillPosition(CSSParserValueList*, RefPtr<CSSValue>&, RefPtr<CSSValue>&, PassRefPtr<CSSPrimitiveValue>, PassRefPtr<CSSPrimitiveValue>);
- void parse4ValuesFillPosition(CSSParserValueList*, RefPtr<CSSValue>&, RefPtr<CSSValue>&, PassRefPtr<CSSPrimitiveValue>, PassRefPtr<CSSPrimitiveValue>);
-
- void parseFillRepeat(RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- PassRefPtr<CSSValue> parseFillSize(CSSPropertyID, bool &allowComma);
-
- bool parseFillProperty(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- bool parseFillShorthand(CSSPropertyID, const CSSPropertyID* properties, int numProperties, bool important);
-
- void addFillValue(RefPtr<CSSValue>& lval, PassRefPtr<CSSValue> rval);
-
- void addAnimationValue(RefPtr<CSSValue>& lval, PassRefPtr<CSSValue> rval);
-
- PassRefPtr<CSSValue> parseAnimationDelay();
- PassRefPtr<CSSValue> parseAnimationDirection();
- PassRefPtr<CSSValue> parseAnimationDuration();
- PassRefPtr<CSSValue> parseAnimationFillMode();
- PassRefPtr<CSSValue> parseAnimationIterationCount();
- PassRefPtr<CSSValue> parseAnimationName();
- PassRefPtr<CSSValue> parseAnimationPlayState();
- PassRefPtr<CSSValue> parseAnimationProperty(AnimationParseContext&);
- PassRefPtr<CSSValue> parseAnimationTimingFunction();
-
- bool parseTransformOriginShorthand(RefPtr<CSSValue>&, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- bool parseCubicBezierTimingFunctionValue(CSSParserValueList*& args, double& result);
- bool parseAnimationProperty(CSSPropertyID, RefPtr<CSSValue>&, AnimationParseContext&);
- bool parseTransitionShorthand(CSSPropertyID, bool important);
- bool parseAnimationShorthand(CSSPropertyID, bool important);
-
- PassRefPtr<CSSValue> parseColumnWidth();
- PassRefPtr<CSSValue> parseColumnCount();
- bool parseColumnsShorthand(bool important);
-
- PassRefPtr<CSSValue> parseGridPosition();
- bool parseIntegerOrStringFromGridPosition(RefPtr<CSSPrimitiveValue>& numericValue, RefPtr<CSSPrimitiveValue>& gridLineName);
- bool parseGridItemPositionShorthand(CSSPropertyID, bool important);
- bool parseGridAreaShorthand(bool important);
- bool parseSingleGridAreaLonghand(RefPtr<CSSValue>&);
- bool parseGridTrackList(CSSPropertyID, bool important);
- bool parseGridTrackRepeatFunction(CSSValueList&);
- PassRefPtr<CSSValue> parseGridTrackSize(CSSParserValueList& inputList);
- PassRefPtr<CSSPrimitiveValue> parseGridBreadth(CSSParserValue*);
- PassRefPtr<CSSValue> parseGridTemplate();
- void parseGridLineNames(CSSParserValueList* inputList, CSSValueList&);
-
- bool parseClipShape(CSSPropertyID, bool important);
-
- bool parseBasicShape(CSSPropertyID, bool important);
- PassRefPtr<CSSBasicShape> parseBasicShapeRectangle(CSSParserValueList* args);
- PassRefPtr<CSSBasicShape> parseBasicShapeCircle(CSSParserValueList* args);
- PassRefPtr<CSSBasicShape> parseBasicShapeEllipse(CSSParserValueList* args);
- PassRefPtr<CSSBasicShape> parseBasicShapePolygon(CSSParserValueList* args);
- PassRefPtr<CSSBasicShape> parseBasicShapeInsetRectangle(CSSParserValueList* args);
-
- bool parseFont(bool important);
- PassRefPtr<CSSValueList> parseFontFamily();
-
- bool parseCounter(CSSPropertyID, int defaultValue, bool important);
- PassRefPtr<CSSValue> parseCounterContent(CSSParserValueList* args, bool counters);
-
- bool parseColorParameters(CSSParserValue*, int* colorValues, bool parseAlpha);
- bool parseHSLParameters(CSSParserValue*, double* colorValues, bool parseAlpha);
- PassRefPtr<CSSPrimitiveValue> parseColor(CSSParserValue* = 0);
- bool parseColorFromValue(CSSParserValue*, RGBA32&);
- void parseSelector(const String&, CSSSelectorList&);
-
- template<typename StringType>
- static bool fastParseColor(RGBA32&, const StringType&, bool strict);
-
- bool parseLineHeight(bool important);
- bool parseFontSize(bool important);
- bool parseFontVariant(bool important);
- bool parseFontWeight(bool important);
- bool parseFontFaceSrc();
- bool parseFontFaceUnicodeRange();
-
- bool parseSVGValue(CSSPropertyID propId, bool important);
- PassRefPtr<CSSValue> parseSVGPaint();
- PassRefPtr<CSSValue> parseSVGColor();
- PassRefPtr<CSSValue> parseSVGStrokeDasharray();
-
- PassRefPtr<CSSValue> parsePaintOrder() const;
-
- // CSS3 Parsing Routines (for properties specific to CSS3)
- PassRefPtr<CSSValueList> parseShadow(CSSParserValueList*, CSSPropertyID);
- bool parseBorderImageShorthand(CSSPropertyID, bool important);
- PassRefPtr<CSSValue> parseBorderImage(CSSPropertyID);
- bool parseBorderImageRepeat(RefPtr<CSSValue>&);
- bool parseBorderImageSlice(CSSPropertyID, RefPtr<CSSBorderImageSliceValue>&);
- bool parseBorderImageWidth(RefPtr<CSSPrimitiveValue>&);
- bool parseBorderImageOutset(RefPtr<CSSPrimitiveValue>&);
- bool parseBorderRadius(CSSPropertyID, bool important);
-
- bool parseAspectRatio(bool important);
-
- bool parseReflect(CSSPropertyID, bool important);
-
- bool parseFlex(CSSParserValueList* args, bool important);
-
- bool parseObjectPosition(bool important);
-
- // Image generators
- bool parseCanvas(CSSParserValueList*, RefPtr<CSSValue>&);
-
- bool parseDeprecatedGradient(CSSParserValueList*, RefPtr<CSSValue>&);
- bool parseDeprecatedLinearGradient(CSSParserValueList*, RefPtr<CSSValue>&, CSSGradientRepeat repeating);
- bool parseDeprecatedRadialGradient(CSSParserValueList*, RefPtr<CSSValue>&, CSSGradientRepeat repeating);
- bool parseLinearGradient(CSSParserValueList*, RefPtr<CSSValue>&, CSSGradientRepeat repeating);
- bool parseRadialGradient(CSSParserValueList*, RefPtr<CSSValue>&, CSSGradientRepeat repeating);
- bool parseGradientColorStops(CSSParserValueList*, CSSGradientValue*, bool expectComma);
-
- bool parseCrossfade(CSSParserValueList*, RefPtr<CSSValue>&);
-
- PassRefPtr<CSSValue> parseImageSet(CSSParserValueList*);
-
- PassRefPtr<CSSValueList> parseFilter();
- PassRefPtr<CSSFilterValue> parseBuiltinFilterArguments(CSSParserValueList*, CSSFilterValue::FilterOperationType);
- PassRefPtr<CSSMixFunctionValue> parseMixFunction(CSSParserValue*);
- PassRefPtr<CSSArrayFunctionValue> parseCustomFilterArrayFunction(CSSParserValue*);
- PassRefPtr<CSSValueList> parseCustomFilterTransform(CSSParserValueList*);
- PassRefPtr<CSSValueList> parseCustomFilterParameters(CSSParserValueList*);
- PassRefPtr<CSSFilterValue> parseCustomFilterFunctionWithAtRuleReferenceSyntax(CSSParserValue*);
- PassRefPtr<CSSFilterValue> parseCustomFilterFunctionWithInlineSyntax(CSSParserValue*);
- PassRefPtr<CSSFilterValue> parseCustomFilterFunction(CSSParserValue*);
- bool parseFilterRuleSrc();
- PassRefPtr<CSSShaderValue> parseFilterRuleSrcUriAndFormat(CSSParserValueList*);
-
- static bool isBlendMode(CSSValueID);
- static bool isCompositeOperator(CSSValueID);
-
- PassRefPtr<CSSValueList> parseTransform();
- PassRefPtr<CSSValue> parseTransformValue(CSSParserValue*);
- bool parseTransformOrigin(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, CSSPropertyID& propId3, RefPtr<CSSValue>&, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
- bool parsePerspectiveOrigin(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, RefPtr<CSSValue>&, RefPtr<CSSValue>&);
-
- bool parseTextEmphasisStyle(bool important);
-
- bool parseTouchAction(bool important);
-
- void addTextDecorationProperty(CSSPropertyID, PassRefPtr<CSSValue>, bool important);
- bool parseTextDecoration(CSSPropertyID propId, bool important);
- bool parseTextUnderlinePosition(bool important);
-
- PassRefPtr<CSSValue> parseTextIndent();
-
- bool parseLineBoxContain(bool important);
- bool parseCalculation(CSSParserValue*, ValueRange);
-
- bool parseFontFeatureTag(CSSValueList*);
- bool parseFontFeatureSettings(bool important);
-
- bool parseFlowThread(const String& flowName);
- bool parseFlowThread(CSSPropertyID, bool important);
- bool parseRegionThread(CSSPropertyID, bool important);
-
- bool parseFontVariantLigatures(bool important);
-
- bool parseGeneratedImage(CSSParserValueList*, RefPtr<CSSValue>&);
-
- CSSParserSelector* createFloatingSelector();
- CSSParserSelector* createFloatingSelectorWithTagName(const QualifiedName&);
- PassOwnPtr<CSSParserSelector> sinkFloatingSelector(CSSParserSelector*);
-
- Vector<OwnPtr<CSSParserSelector> >* createFloatingSelectorVector();
- PassOwnPtr<Vector<OwnPtr<CSSParserSelector> > > sinkFloatingSelectorVector(Vector<OwnPtr<CSSParserSelector> >*);
-
- CSSParserValueList* createFloatingValueList();
- PassOwnPtr<CSSParserValueList> sinkFloatingValueList(CSSParserValueList*);
-
- CSSParserFunction* createFloatingFunction();
- CSSParserFunction* createFloatingFunction(const CSSParserString& name, PassOwnPtr<CSSParserValueList> args);
- PassOwnPtr<CSSParserFunction> sinkFloatingFunction(CSSParserFunction*);
-
- CSSParserValue& sinkFloatingValue(CSSParserValue&);
-
- MediaQuerySet* createMediaQuerySet();
- StyleRuleBase* createImportRule(const CSSParserString&, MediaQuerySet*);
- StyleKeyframe* createKeyframe(CSSParserValueList*);
- StyleRuleKeyframes* createKeyframesRule(const String&, PassOwnPtr<Vector<RefPtr<StyleKeyframe> > >, bool isPrefixed);
-
- typedef Vector<RefPtr<StyleRuleBase> > RuleList;
- StyleRuleBase* createMediaRule(MediaQuerySet*, RuleList*);
- RuleList* createRuleList();
- RuleList* appendRule(RuleList*, StyleRuleBase*);
- StyleRuleBase* createStyleRule(Vector<OwnPtr<CSSParserSelector> >* selectors);
- StyleRuleBase* createFontFaceRule();
- StyleRuleBase* createPageRule(PassOwnPtr<CSSParserSelector> pageSelector);
- StyleRuleBase* createRegionRule(Vector<OwnPtr<CSSParserSelector> >* regionSelector, RuleList* rules);
- StyleRuleBase* createMarginAtRule(CSSSelector::MarginBoxType);
- StyleRuleBase* createSupportsRule(bool conditionIsSupported, RuleList*);
- void markSupportsRuleHeaderStart();
- void markSupportsRuleHeaderEnd();
- PassRefPtr<CSSRuleSourceData> popSupportsRuleData();
- StyleRuleBase* createHostRule(RuleList* rules);
- StyleRuleBase* createFilterRule(const CSSParserString&);
-
- void startDeclarationsForMarginBox();
- void endDeclarationsForMarginBox();
-
- MediaQueryExp* createFloatingMediaQueryExp(const AtomicString&, CSSParserValueList*);
- PassOwnPtr<MediaQueryExp> sinkFloatingMediaQueryExp(MediaQueryExp*);
- Vector<OwnPtr<MediaQueryExp> >* createFloatingMediaQueryExpList();
- PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > sinkFloatingMediaQueryExpList(Vector<OwnPtr<MediaQueryExp> >*);
- MediaQuery* createFloatingMediaQuery(MediaQuery::Restrictor, const AtomicString&, PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > >);
- MediaQuery* createFloatingMediaQuery(PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > >);
- MediaQuery* createFloatingNotAllQuery();
- PassOwnPtr<MediaQuery> sinkFloatingMediaQuery(MediaQuery*);
-
- Vector<RefPtr<StyleKeyframe> >* createFloatingKeyframeVector();
- PassOwnPtr<Vector<RefPtr<StyleKeyframe> > > sinkFloatingKeyframeVector(Vector<RefPtr<StyleKeyframe> >*);
-
- void addNamespace(const AtomicString& prefix, const AtomicString& uri);
- QualifiedName determineNameInNamespace(const AtomicString& prefix, const AtomicString& localName);
-
- CSSParserSelector* rewriteSpecifiersWithElementName(const AtomicString& namespacePrefix, const AtomicString& elementName, CSSParserSelector*, bool isNamespacePlaceholder = false);
- CSSParserSelector* rewriteSpecifiersWithElementNameForCustomPseudoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSelector* specifiers, bool tagIsForNamespaceRule);
- CSSParserSelector* rewriteSpecifiersWithElementNameForContentPseudoElement(const QualifiedName& tag, const AtomicString& elementName, CSSParserSelector* specifiers, bool tagIsForNamespaceRule);
- CSSParserSelector* rewriteSpecifiersWithNamespaceIfNeeded(CSSParserSelector*);
- CSSParserSelector* rewriteSpecifiers(CSSParserSelector*, CSSParserSelector*);
- CSSParserSelector* rewriteSpecifiersForShadowDistributed(CSSParserSelector* specifiers, CSSParserSelector* distributedPseudoElementSelector);
-
- void invalidBlockHit();
-
- Vector<OwnPtr<CSSParserSelector> >* reusableSelectorVector() { return &m_reusableSelectorVector; }
-
- void setReusableRegionSelectorVector(Vector<OwnPtr<CSSParserSelector> >* selectors);
- Vector<OwnPtr<CSSParserSelector> >* reusableRegionSelectorVector() { return &m_reusableRegionSelectorVector; }
-
- void clearProperties();
-
- PassRefPtr<ImmutableStylePropertySet> createStylePropertySet();
-
- CSSParserContext m_context;
-
- bool m_important;
- CSSPropertyID m_id;
- StyleSheetContents* m_styleSheet;
- RefPtr<StyleRuleBase> m_rule;
- RefPtr<StyleKeyframe> m_keyframe;
- RefPtr<MediaQuerySet> m_mediaList;
- OwnPtr<CSSParserValueList> m_valueList;
- bool m_supportsCondition;
-
- typedef Vector<CSSProperty, 256> ParsedPropertyVector;
- ParsedPropertyVector m_parsedProperties;
- CSSSelectorList* m_selectorListForParseSelector;
-
- unsigned m_numParsedPropertiesBeforeMarginBox;
-
- int m_inParseShorthand;
- CSSPropertyID m_currentShorthand;
- bool m_implicitShorthand;
-
- bool m_hasFontFaceOnlyValues;
- bool m_hadSyntacticallyValidCSSRule;
- bool m_logErrors;
- bool m_ignoreErrors;
-
- bool m_inFilterRule;
-
- AtomicString m_defaultNamespace;
-
- // tokenizer methods and data
- SourceDataHandler* m_sourceDataHandler;
-
- void startRule();
- void endRule(bool valid);
- void startRuleHeader(CSSRuleSourceData::Type);
- void endRuleHeader();
- void startSelector();
- void endSelector();
- void startRuleBody();
- void startProperty();
- void endProperty(bool isImportantFound, bool isPropertyParsed, ErrorType = NoError);
- void startEndUnknownRule();
-
- void endInvalidRuleHeader();
- void reportError(const CSSParserLocation&, ErrorType = GeneralError);
- void resumeErrorLogging() { m_ignoreErrors = false; }
- void setLocationLabel(const CSSParserLocation& location) { m_locationLabel = location; }
- const CSSParserLocation& lastLocationLabel() const { return m_locationLabel; }
-
- void tokenToLowerCase(const CSSParserString& token);
-
- void markViewportRuleBodyStart() { m_inViewport = true; }
- void markViewportRuleBodyEnd() { m_inViewport = false; }
- StyleRuleBase* createViewportRule();
-
- PassRefPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSParserValue*);
- PassRefPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSParserValue*);
- PassRefPtr<CSSPrimitiveValue> createPrimitiveVariableNameValue(CSSParserValue*);
-
- static KURL completeURL(const CSSParserContext&, const String& url);
-
- CSSParserLocation currentLocation() { return m_tokenizer.currentLocation(); }
-
-private:
- enum PropertyType {
- PropertyExplicit,
- PropertyImplicit
- };
-
- class ImplicitScope {
- WTF_MAKE_NONCOPYABLE(ImplicitScope);
- public:
- ImplicitScope(WebCore::CSSParser* parser, PropertyType propertyType)
- : m_parser(parser)
- {
- m_parser->m_implicitShorthand = propertyType == CSSParser::PropertyImplicit;
- }
-
- ~ImplicitScope()
- {
- m_parser->m_implicitShorthand = false;
- }
-
- private:
- WebCore::CSSParser* m_parser;
- };
-
- class StyleDeclarationScope {
- WTF_MAKE_NONCOPYABLE(StyleDeclarationScope);
- public:
- StyleDeclarationScope(CSSParser* parser, const StylePropertySet* declaration)
- : m_parser(parser)
- , m_mode(declaration->cssParserMode())
- {
- if (isCSSViewportParsingEnabledForMode(m_mode)) {
- ASSERT(!m_parser->inViewport());
- m_parser->markViewportRuleBodyStart();
- }
- }
-
- ~StyleDeclarationScope()
- {
- if (isCSSViewportParsingEnabledForMode(m_mode))
- m_parser->markViewportRuleBodyEnd();
- }
-
- private:
- CSSParser* m_parser;
- CSSParserMode m_mode;
- };
-
- inline void ensureLineEndings();
-
- void setStyleSheet(StyleSheetContents* styleSheet) { m_styleSheet = styleSheet; }
-
- bool inQuirksMode() const { return isQuirksModeBehavior(m_context.mode()); }
- bool inViewport() const { return m_inViewport; }
-
- KURL completeURL(const String& url) const;
-
- void recheckAtKeyword(const UChar* str, int len);
-
- template<unsigned prefixLength, unsigned suffixLength>
- inline void setupParser(const char (&prefix)[prefixLength], const String& string, const char (&suffix)[suffixLength])
- {
- setupParser(prefix, prefixLength - 1, string, suffix, suffixLength - 1);
- }
- void setupParser(const char* prefix, unsigned prefixLength, const String&, const char* suffix, unsigned suffixLength);
- bool inShorthand() const { return m_inParseShorthand; }
-
- bool validWidthOrHeight(CSSParserValue*);
-
- void deleteFontFaceOnlyValues();
-
- bool parseValue(MutableStylePropertySet*, CSSPropertyID, const String&, bool important, StyleSheetContents* contextStyleSheet);
- PassRefPtr<ImmutableStylePropertySet> parseDeclaration(const String&, StyleSheetContents* contextStyleSheet);
-
- enum SizeParameterType {
- None,
- Auto,
- Length,
- PageSize,
- Orientation,
- };
-
- bool parsePage(CSSPropertyID propId, bool important);
- bool parseSize(CSSPropertyID propId, bool important);
- SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserValue* value, SizeParameterType prevParamType);
-
- bool parseFontFaceSrcURI(CSSValueList*);
- bool parseFontFaceSrcLocal(CSSValueList*);
-
- bool parseColor(const String&);
-
- const String* m_source;
- TextPosition m_startPosition;
- CSSRuleSourceData::Type m_ruleHeaderType;
- unsigned m_ruleHeaderStartOffset;
- int m_ruleHeaderStartLineNumber;
- OwnPtr<Vector<unsigned> > m_lineEndings;
-
- bool m_ruleHasHeader;
-
- bool m_allowImportRules;
- bool m_allowNamespaceDeclarations;
-
- bool parseViewportProperty(CSSPropertyID propId, bool important);
- bool parseViewportShorthand(CSSPropertyID propId, CSSPropertyID first, CSSPropertyID second, bool important);
-
- bool m_inViewport;
-
- CSSParserLocation m_locationLabel;
-
- bool useLegacyBackgroundSizeShorthandBehavior() const;
-
- Vector<RefPtr<StyleRuleBase> > m_parsedRules;
- Vector<RefPtr<StyleKeyframe> > m_parsedKeyframes;
- Vector<RefPtr<MediaQuerySet> > m_parsedMediaQuerySets;
- Vector<OwnPtr<RuleList> > m_parsedRuleLists;
- Vector<CSSParserSelector*> m_floatingSelectors;
- Vector<Vector<OwnPtr<CSSParserSelector> >*> m_floatingSelectorVectors;
- Vector<CSSParserValueList*> m_floatingValueLists;
- Vector<CSSParserFunction*> m_floatingFunctions;
-
- OwnPtr<MediaQuery> m_floatingMediaQuery;
- OwnPtr<MediaQueryExp> m_floatingMediaQueryExp;
- OwnPtr<Vector<OwnPtr<MediaQueryExp> > > m_floatingMediaQueryExpList;
-
- OwnPtr<Vector<RefPtr<StyleKeyframe> > > m_floatingKeyframeVector;
-
- Vector<OwnPtr<CSSParserSelector> > m_reusableSelectorVector;
- Vector<OwnPtr<CSSParserSelector> > m_reusableRegionSelectorVector;
-
- RefPtr<CSSCalcValue> m_parsedCalculation;
-
- OwnPtr<RuleSourceDataList> m_supportsRuleDataStack;
-
- // defines units allowed for a certain property, used in parseUnit
- enum Units {
- FUnknown = 0x0000,
- FInteger = 0x0001,
- FNumber = 0x0002, // Real Numbers
- FPercent = 0x0004,
- FLength = 0x0008,
- FAngle = 0x0010,
- FTime = 0x0020,
- FFrequency = 0x0040,
- FPositiveInteger = 0x0080,
- FRelative = 0x0100,
- FResolution = 0x0200,
- FNonNeg = 0x0400
- };
-
- friend inline Units operator|(Units a, Units b)
- {
- return static_cast<Units>(static_cast<unsigned>(a) | static_cast<unsigned>(b));
- }
-
- enum ReleaseParsedCalcValueCondition {
- ReleaseParsedCalcValue,
- DoNotReleaseParsedCalcValue
- };
-
- bool isLoggingErrors();
- void logError(const String& message, const CSSParserLocation&);
-
- bool validCalculationUnit(CSSParserValue*, Units, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue);
-
- bool shouldAcceptUnitLessValues(CSSParserValue*, Units, CSSParserMode);
-
- inline bool validUnit(CSSParserValue* value, Units unitflags, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue) { return validUnit(value, unitflags, m_context.mode(), releaseCalc); }
- bool validUnit(CSSParserValue*, Units, CSSParserMode, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue);
-
- bool parseBorderImageQuad(Units, RefPtr<CSSPrimitiveValue>&);
- int colorIntFromValue(CSSParserValue*);
- double parsedDouble(CSSParserValue*, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue);
- bool isCalculation(CSSParserValue*);
-
- UseCounter* m_useCounter;
-
- CSSTokenizer m_tokenizer;
-
- friend class TransformOperationInfo;
- friend class FilterOperationInfo;
-};
-
-CSSPropertyID cssPropertyID(const CSSParserString&);
-CSSPropertyID cssPropertyID(const String&);
-CSSValueID cssValueKeywordID(const CSSParserString&);
-
-class ShorthandScope {
- WTF_MAKE_FAST_ALLOCATED;
-public:
- ShorthandScope(CSSParser* parser, CSSPropertyID propId) : m_parser(parser)
- {
- if (!(m_parser->m_inParseShorthand++))
- m_parser->m_currentShorthand = propId;
- }
- ~ShorthandScope()
- {
- if (!(--m_parser->m_inParseShorthand))
- m_parser->m_currentShorthand = CSSPropertyInvalid;
- }
-
-private:
- CSSParser* m_parser;
-};
-
-class CSSParser::SourceDataHandler {
-public:
- virtual void startRuleHeader(CSSRuleSourceData::Type, unsigned offset) = 0;
- virtual void endRuleHeader(unsigned offset) = 0;
- virtual void startSelector(unsigned offset) = 0;
- virtual void endSelector(unsigned offset) = 0;
- virtual void startRuleBody(unsigned offset) = 0;
- virtual void endRuleBody(unsigned offset, bool error) = 0;
- virtual void startEndUnknownRule() = 0;
- virtual void startProperty(unsigned offset) = 0;
- virtual void endProperty(bool isImportant, bool isParsed, unsigned offset, CSSParser::ErrorType) = 0;
- virtual void startComment(unsigned offset) = 0;
- virtual void endComment(unsigned offset) = 0;
-};
-
-String quoteCSSString(const String&);
-String quoteCSSStringIfNeeded(const String&);
-String quoteCSSURLIfNeeded(const String&);
-
-bool isValidNthToken(const CSSParserString&);
-
-inline int cssyylex(void* yylval, CSSParser* parser)
-{
- return parser->m_tokenizer.lex(yylval);
-}
-
-} // namespace WebCore
-
-#endif // CSSParser_h