17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be
37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file.
47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "config.h"
67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/css/parser/CSSParser.h"
77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/css/CSSKeyframeRule.h"
97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/css/StyleColor.h"
107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/css/StyleRule.h"
117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink {
137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciCSSParser::CSSParser(const CSSParserContext& context)
157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    : m_bisonParser(context)
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseDeclaration(MutableStylePropertySet* propertySet, const String& declaration, CSSParserObserver* observer, StyleSheetContents* styleSheet)
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return m_bisonParser.parseDeclaration(propertySet, declaration, observer, styleSheet);
227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid CSSParser::parseSelector(const String& selector, CSSSelectorList& selectorList)
257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    m_bisonParser.parseSelector(selector, selectorList);
277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<StyleRuleBase> CSSParser::parseRule(const CSSParserContext& context, StyleSheetContents* styleSheet, const String& rule)
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser(context).parseRule(styleSheet, rule);
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid CSSParser::parseSheet(const CSSParserContext& context, StyleSheetContents* styleSheet, const String& text, const TextPosition& startPosition, CSSParserObserver* observer, bool logErrors)
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    BisonCSSParser(context).parseSheet(styleSheet, text, startPosition, observer, logErrors);
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseValue(MutableStylePropertySet* declaration, CSSPropertyID propertyID, const String& string, bool important, CSSParserMode parserMode, StyleSheetContents* styleSheet)
407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::parseValue(declaration, propertyID, string, important, parserMode, styleSheet);
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseValue(MutableStylePropertySet* declaration, CSSPropertyID propertyID, const String& string, bool important, const CSSParserContext& context)
457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
467242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::parseValue(declaration, propertyID, string, important, context);
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<CSSValue> CSSParser::parseSingleValue(CSSPropertyID propertyID, const String& string, const CSSParserContext& context)
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    if (string.isEmpty())
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return nullptr;
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    RefPtrWillBeRawPtr<MutableStylePropertySet> stylePropertySet = MutableStylePropertySet::create();
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    bool success = parseValue(stylePropertySet.get(), propertyID, string, false, context);
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    ASSERT_UNUSED(success, success == stylePropertySet->hasProperty(propertyID));
567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return stylePropertySet->getPropertyCSSValue(propertyID);
577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<ImmutableStylePropertySet> CSSParser::parseInlineStyleDeclaration(const String& styleString, Element* element)
607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::parseInlineStyleDeclaration(styleString, element);
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassOwnPtr<Vector<double> > CSSParser::parseKeyframeKeyList(const String& keyList)
657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser(strictCSSParserContext()).parseKeyframeKeyList(keyList);
677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<StyleKeyframe> CSSParser::parseKeyframeRule(const CSSParserContext& context, StyleSheetContents* styleSheet, const String& rule)
707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser(context).parseKeyframeRule(styleSheet, rule);
727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseSupportsCondition(const String& condition)
757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser(CSSParserContext(HTMLStandardMode, 0)).parseSupportsCondition(condition);
777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseColor(RGBA32& color, const String& string, bool strict)
807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::parseColor(color, string, strict);
827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
847242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciStyleColor CSSParser::colorFromRGBColorString(const String& string)
857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::colorFromRGBColorString(string);
877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccibool CSSParser::parseSystemColor(RGBA32& color, const String& colorString)
907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return BisonCSSParser::parseSystemColor(color, colorString);
927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
937242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
95