1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/* 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2003 Lars Knoll (knoll@kde.org) 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserved. 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2009 - 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * This library is free software; you can redistribute it and/or 8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * modify it under the terms of the GNU Library General Public 9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * License as published by the Free Software Foundation; either 10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * version 2 of the License, or (at your option) any later version. 11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * 12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * This library is distributed in the hope that it will be useful, 13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of 14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Library General Public License for more details. 16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * 17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License 18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * along with this library; see the file COPYING.LIB. If not, write to 19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Boston, MA 02110-1301, USA. 21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef CSSPropertyParser_h 24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define CSSPropertyParser_h 25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// FIXME: Way too many. 275d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/CSSPropertyNames.h" 285d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "core/CSSValueKeywords.h" 29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSCalculationValue.h" 30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSFilterValue.h" 31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSGradientValue.h" 32aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch#include "core/css/CSSGridTemplateAreasValue.h" 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSProperty.h" 34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSPropertySourceData.h" 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/css/CSSSelector.h" 36e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/css/parser/CSSParserMode.h" 37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/css/parser/CSSParserValues.h" 38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/graphics/Color.h" 39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "wtf/OwnPtr.h" 40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "wtf/Vector.h" 41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSBorderImageSliceValue; 45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSPrimitiveValue; 46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSValue; 47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSValueList; 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSBasicShape; 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSBasicShapeInset; 50aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdochclass CSSGridLineNamesValue; 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class StylePropertyShorthand; 52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Inputs: PropertyID, isImportant bool, CSSParserValueList. 54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Outputs: Vector of CSSProperties 55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CSSPropertyParser { 57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) STACK_ALLOCATED(); 58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public: 597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci static bool parseValue(CSSPropertyID, bool important, 607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CSSParserValueList*, const CSSParserContext&, bool inViewport, 61d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) WillBeHeapVector<CSSProperty, 256>&, CSSRuleSourceData::Type); 62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // FIXME: Should this be on a separate ColorParser object? 64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) template<typename StringType> 65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static bool fastParseColor(RGBA32&, const StringType&, bool strict); 66d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) static bool isSystemColor(int id); 68d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 69d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private: 707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CSSPropertyParser(CSSParserValueList*, const CSSParserContext&, bool inViewport, 717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WillBeHeapVector<CSSProperty, 256>&, CSSRuleSourceData::Type); 727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool parseValue(CSSPropertyID, bool important); 747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool inShorthand() const { return m_inParseShorthand; } 76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool inQuirksMode() const { return isQuirksModeBehavior(m_context.mode()); } 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool inViewport() const { return m_inViewport; } 79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseViewportProperty(CSSPropertyID propId, bool important); 80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseViewportShorthand(CSSPropertyID propId, CSSPropertyID first, CSSPropertyID second, bool important); 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) KURL completeURL(const String& url) const; 83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void addPropertyWithPrefixingVariant(CSSPropertyID, PassRefPtrWillBeRawPtr<CSSValue>, bool important, bool implicit = false); 85d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void addProperty(CSSPropertyID, PassRefPtrWillBeRawPtr<CSSValue>, bool important, bool implicit = false); 86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void rollbackLastProperties(int num); 87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void addExpandedPropertyForValue(CSSPropertyID propId, PassRefPtrWillBeRawPtr<CSSValue>, bool); 88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 89d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseValidPrimitive(CSSValueID ident, CSSParserValue*); 90d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 91d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseShorthand(CSSPropertyID, const StylePropertyShorthand&, bool important); 92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parse4Values(CSSPropertyID, const CSSPropertyID* properties, bool important); 93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseContent(CSSPropertyID, bool important); 947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseQuotes(); 95d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 96d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAttr(CSSParserValueList* args); 97d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 98d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseBackgroundColor(); 99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 100d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFillImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 102d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) enum FillPositionFlag { InvalidFillPosition = 0, AmbiguousFillPosition = 1, XFillPosition = 2, YFillPosition = 4 }; 103d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) enum FillPositionParsingMode { ResolveValuesAsPercent = 0, ResolveValuesAsKeyword = 1 }; 104d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseFillPositionComponent(CSSParserValueList*, unsigned& cumulativeFlags, FillPositionFlag& individualFlag, FillPositionParsingMode = ResolveValuesAsPercent); 105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionX(CSSParserValueList*); 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseFillPositionY(CSSParserValueList*); 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void parse2ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); 108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool isPotentialPositionValue(CSSParserValue*); 109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void parseFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); 110d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void parse3ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>); 111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void parse4ValuesFillPosition(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>, PassRefPtrWillBeRawPtr<CSSPrimitiveValue>); 112d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 113d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void parseFillRepeat(RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); 114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseFillSize(CSSPropertyID, bool &allowComma); 115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFillProperty(CSSPropertyID propId, CSSPropertyID& propId1, CSSPropertyID& propId2, RefPtrWillBeRawPtr<CSSValue>&, RefPtrWillBeRawPtr<CSSValue>&); 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFillShorthand(CSSPropertyID, const CSSPropertyID* properties, int numProperties, bool important); 118d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void addFillValue(RefPtrWillBeRawPtr<CSSValue>& lval, PassRefPtrWillBeRawPtr<CSSValue> rval); 120d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 121d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationDelay(); 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationDirection(); 123d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationDuration(); 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationFillMode(); 125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationIterationCount(); 126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationName(); 127d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationPlayState(); 128f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationProperty(); 129d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationTimingFunction(); 130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 131e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) bool parseWebkitTransformOriginShorthand(bool important); 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseCubicBezierTimingFunctionValue(CSSParserValueList*& args, double& result); 133f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseAnimationProperty(CSSPropertyID); 134f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValueList> parseAnimationPropertyList(CSSPropertyID); 135d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseTransitionShorthand(CSSPropertyID, bool important); 136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseAnimationShorthand(CSSPropertyID, bool important); 137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseColumnWidth(); 139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseColumnCount(); 140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseColumnsShorthand(bool important); 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 142d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseGridPosition(); 143d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) bool parseIntegerOrCustomIdentFromGridPosition(RefPtrWillBeRawPtr<CSSPrimitiveValue>& numericValue, RefPtrWillBeRawPtr<CSSPrimitiveValue>& gridLineName); 144d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseGridItemPositionShorthand(CSSPropertyID, bool important); 145aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool parseGridTemplateRowsAndAreas(PassRefPtrWillBeRawPtr<CSSValue>, bool important); 146aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool parseGridTemplateShorthand(bool important); 147a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch bool parseGridShorthand(bool important); 148d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseGridAreaShorthand(bool important); 149d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseSingleGridAreaLonghand(RefPtrWillBeRawPtr<CSSValue>&); 1507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseGridTrackList(); 151d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseGridTrackRepeatFunction(CSSValueList&); 152d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseGridTrackSize(CSSParserValueList& inputList); 153d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseGridBreadth(CSSParserValue*); 154aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool parseGridTemplateAreasRow(NamedGridAreaMap&, const size_t, size_t&); 155d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseGridTemplateAreas(); 1567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool parseGridLineNames(CSSParserValueList&, CSSValueList&, CSSGridLineNamesValue* = 0); 157197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch PassRefPtrWillBeRawPtr<CSSValue> parseGridAutoFlow(CSSParserValueList&); 158d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 159d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseClipShape(CSSPropertyID, bool important); 160d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 161197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool parseLegacyPosition(CSSPropertyID, bool important); 162d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseItemPositionOverflowPosition(CSSPropertyID, bool important); 163d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 164d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseShapeProperty(CSSPropertyID propId); 165d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseBasicShapeAndOrBox(); 166d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseBasicShape(); 167d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseShapeRadius(CSSParserValue*); 168d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeCircle(CSSParserValueList* args); 170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeEllipse(CSSParserValueList* args); 171d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapePolygon(CSSParserValueList* args); 172d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSBasicShape> parseBasicShapeInset(CSSParserValueList* args); 173d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 174d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFont(bool important); 175d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValueList> parseFontFamily(); 176d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 1777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseCounter(int defaultValue); 178d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseCounterContent(CSSParserValueList* args, bool counters); 179d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 180d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseColorParameters(CSSParserValue*, int* colorValues, bool parseAlpha); 181d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseHSLParameters(CSSParserValue*, double* colorValues, bool parseAlpha); 182c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseColor(CSSParserValue* = 0, bool acceptQuirkyColors = false); 183c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) bool parseColorFromValue(CSSParserValue*, RGBA32&, bool acceptQuirkyColors = false); 184d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 185d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseLineHeight(bool important); 186d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontSize(bool important); 187d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontVariant(bool important); 188d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontWeight(bool important); 1897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValueList> parseFontFaceSrc(); 1907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValueList> parseFontFaceUnicodeRange(); 191d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 192d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseSVGValue(CSSPropertyID propId, bool important); 193d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseSVGStrokeDasharray(); 194d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 195d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parsePaintOrder() const; 196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // CSS3 Parsing Routines (for properties specific to CSS3) 198d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValueList> parseShadow(CSSParserValueList*, CSSPropertyID); 199d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageShorthand(CSSPropertyID, bool important); 200d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseBorderImage(CSSPropertyID); 201d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageRepeat(RefPtrWillBeRawPtr<CSSValue>&); 202d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageSlice(CSSPropertyID, RefPtrWillBeRawPtr<CSSBorderImageSliceValue>&); 203d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageWidth(RefPtrWillBeRawPtr<CSSPrimitiveValue>&); 204d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageOutset(RefPtrWillBeRawPtr<CSSPrimitiveValue>&); 205d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderRadius(CSSPropertyID, bool important); 206d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseAspectRatio(); 208d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2097242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseReflect(); 210d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 211d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFlex(CSSParserValueList* args, bool important); 212d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseObjectPosition(); 214d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 215d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // Image generators 216d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseCanvas(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 217d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 218d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseDeprecatedGradient(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 219d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseDeprecatedLinearGradient(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, CSSGradientRepeat repeating); 220d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseDeprecatedRadialGradient(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, CSSGradientRepeat repeating); 221d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseLinearGradient(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, CSSGradientRepeat repeating); 222d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseRadialGradient(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&, CSSGradientRepeat repeating); 223d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseGradientColorStops(CSSParserValueList*, CSSGradientValue*, bool expectComma); 224d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 225d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseCrossfade(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 226d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 227d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseImageSet(CSSParserValueList*); 228d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseWillChange(); 230d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 231d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValueList> parseFilter(); 232d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSFilterValue> parseBuiltinFilterArguments(CSSParserValueList*, CSSFilterValue::FilterOperationType); 233d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 234aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch PassRefPtrWillBeRawPtr<CSSValueList> parseTransformOrigin(); 235aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch PassRefPtrWillBeRawPtr<CSSValueList> parseTransform(CSSPropertyID); 236aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch PassRefPtrWillBeRawPtr<CSSValue> parseTransformValue(CSSPropertyID, CSSParserValue*); 237d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 238d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseTextEmphasisStyle(bool important); 239d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 2407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PassRefPtrWillBeRawPtr<CSSValue> parseTouchAction(); 241d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 242d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void addTextDecorationProperty(CSSPropertyID, PassRefPtrWillBeRawPtr<CSSValue>, bool important); 243d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseTextDecoration(CSSPropertyID propId, bool important); 244d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseTextUnderlinePosition(bool important); 245d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 246d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSValue> parseTextIndent(); 247d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 248d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseLineBoxContain(bool important); 249d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseCalculation(CSSParserValue*, ValueRange); 250d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 251d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontFeatureTag(CSSValueList*); 252d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontFeatureSettings(bool important); 253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontVariantLigatures(bool important); 255d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 256d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseGeneratedImage(CSSParserValueList*, RefPtrWillBeRawPtr<CSSValue>&); 257d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 258d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveNumericValue(CSSParserValue*); 259d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createPrimitiveStringValue(CSSParserValue*); 260d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 261f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu PassRefPtrWillBeRawPtr<CSSValue> createCSSImageValueWithReferrer(const String& rawValue, const KURL&); 262f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 263d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool validWidthOrHeight(CSSParserValue*); 264d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 265d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtrWillBeRawPtr<CSSBasicShape> parseInsetRoundedCorners(PassRefPtrWillBeRawPtr<CSSBasicShapeInset>, CSSParserValueList*); 266d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 267d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) enum SizeParameterType { 268d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) None, 269d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Auto, 270d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Length, 271d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PageSize, 272d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) Orientation, 273d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }; 274d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 275d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parsePage(CSSPropertyID propId, bool important); 276d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseSize(CSSPropertyID propId, bool important); 277d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) SizeParameterType parseSizeParameter(CSSValueList* parsedValues, CSSParserValue*, SizeParameterType prevParamType); 278d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 279d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontFaceSrcURI(CSSValueList*); 280d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseFontFaceSrcLocal(CSSValueList*); 281d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 282d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) class ImplicitScope { 28307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch STACK_ALLOCATED(); 284d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WTF_MAKE_NONCOPYABLE(ImplicitScope); 285d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) public: 2867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ImplicitScope(CSSPropertyParser* parser) 287d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) : m_parser(parser) 288d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 2897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_parser->m_implicitShorthand = true; 290d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 291d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 292d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ~ImplicitScope() 293d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 294d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_parser->m_implicitShorthand = false; 295d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 296d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 297d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) private: 298d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) CSSPropertyParser* m_parser; 299d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }; 300d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 301d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) class ShorthandScope { 30207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch STACK_ALLOCATED(); 303d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) public: 304d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ShorthandScope(CSSPropertyParser* parser, CSSPropertyID propId) : m_parser(parser) 305d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 306d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!(m_parser->m_inParseShorthand++)) 307d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_parser->m_currentShorthand = propId; 308d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 309d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ~ShorthandScope() 310d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 311d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!(--m_parser->m_inParseShorthand)) 312d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_parser->m_currentShorthand = CSSPropertyInvalid; 313d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 314d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 315d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) private: 316d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) CSSPropertyParser* m_parser; 317d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }; 318d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 319d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) enum ReleaseParsedCalcValueCondition { 320d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ReleaseParsedCalcValue, 321d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) DoNotReleaseParsedCalcValue 322d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }; 323d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 324d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) enum Units { 325d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FUnknown = 0x0000, 326d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FInteger = 0x0001, 327d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FNumber = 0x0002, // Real Numbers 328d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FPercent = 0x0004, 329d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FLength = 0x0008, 330d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FAngle = 0x0010, 331d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FTime = 0x0020, 332d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FFrequency = 0x0040, 333d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FPositiveInteger = 0x0080, 334d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FRelative = 0x0100, 335d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FResolution = 0x0200, 336d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) FNonNeg = 0x0400 337d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }; 338d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 339d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend inline Units operator|(Units a, Units b) 340d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 341d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return static_cast<Units>(static_cast<unsigned>(a) | static_cast<unsigned>(b)); 342d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 343d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 344d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool validCalculationUnit(CSSParserValue*, Units, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue); 345d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 346d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool shouldAcceptUnitLessValues(CSSParserValue*, Units, CSSParserMode); 347d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 348d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) inline bool validUnit(CSSParserValue* value, Units unitflags, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue) { return validUnit(value, unitflags, m_context.mode(), releaseCalc); } 349d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool validUnit(CSSParserValue*, Units, CSSParserMode, ReleaseParsedCalcValueCondition releaseCalc = DoNotReleaseParsedCalcValue); 350d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 351d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool parseBorderImageQuad(Units, RefPtrWillBeRawPtr<CSSPrimitiveValue>&); 352d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) int colorIntFromValue(CSSParserValue*); 353d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool isCalculation(CSSParserValue*); 354d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 355d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private: 356d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // Inputs: 3577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci CSSParserValueList* m_valueList; 358d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) const CSSParserContext& m_context; 359d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) const bool m_inViewport; 360d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 361d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // Outputs: 362d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WillBeHeapVector<CSSProperty, 256>& m_parsedProperties; 363d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) CSSRuleSourceData::Type m_ruleType; 364d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 365d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // Locals during parsing: 366d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) int m_inParseShorthand; 367d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) CSSPropertyID m_currentShorthand; 368d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool m_implicitShorthand; 36907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch RefPtrWillBeMember<CSSCalcValue> m_parsedCalculation; 370d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 371d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // FIXME: There is probably a small set of APIs we could expose for these 372d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) // classes w/o needing to make them friends. 373d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend class ShadowParseContext; 374d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend class BorderImageParseContext; 375d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend class BorderImageSliceParseContext; 376d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend class BorderImageQuadParseContext; 377d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend class TransformOperationInfo; 378d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend bool parseDeprecatedGradientColorStop(CSSPropertyParser*, CSSParserValue*, CSSGradientColorStop&); 379d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) friend PassRefPtrWillBeRawPtr<CSSPrimitiveValue> parseGradientColorOrKeyword(CSSPropertyParser*, CSSParserValue*); 380d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 381d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 382d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)CSSPropertyID cssPropertyID(const CSSParserString&); 383d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)CSSPropertyID cssPropertyID(const String&); 384d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)CSSValueID cssValueKeywordID(const CSSParserString&); 385d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 386d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)bool isKeywordPropertyID(CSSPropertyID); 387d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)bool isValidKeywordPropertyAndValue(CSSPropertyID, CSSValueID, const CSSParserContext&); 388d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 389c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 390d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 391d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // CSSPropertyParser_h 392