1/* 2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. 3 * Copyright (C) 2012 Apple Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above 10 * copyright notice, this list of conditions and the following 11 * disclaimer. 12 * 2. Redistributions in binary form must reproduce the above 13 * copyright notice, this list of conditions and the following 14 * disclaimer in the documentation and/or other materials 15 * provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 22 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 26 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 27 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 */ 30 31#ifndef CSSParserMode_h 32#define CSSParserMode_h 33 34#include "KURL.h" 35 36namespace WebCore { 37 38class Document; 39 40enum CSSParserMode { 41 CSSQuirksMode, 42 CSSStrictMode, 43 // SVG should always be in strict mode. For SVG attributes, the rules differ to strict sometimes. 44 SVGAttributeMode 45}; 46 47inline CSSParserMode strictToCSSParserMode(bool inStrictMode) 48{ 49 return inStrictMode ? CSSStrictMode : CSSQuirksMode; 50} 51 52inline bool isStrictParserMode(CSSParserMode cssParserMode) 53{ 54 return cssParserMode == CSSStrictMode || cssParserMode == SVGAttributeMode; 55} 56 57struct CSSParserContext { 58 WTF_MAKE_FAST_ALLOCATED; 59public: 60 CSSParserContext(CSSParserMode, const KURL& baseURL = KURL()); 61 CSSParserContext(Document*, const KURL& baseURL = KURL(), const String& charset = emptyString()); 62 63 KURL baseURL; 64 String charset; 65 CSSParserMode mode; 66 bool isHTMLDocument; 67 bool isCSSCustomFilterEnabled; 68 bool isCSSStickyPositionEnabled; 69 bool isCSSRegionsEnabled; 70 bool isCSSCompositingEnabled; 71 bool isCSSGridLayoutEnabled; 72#if ENABLE(CSS_VARIABLES) 73 bool isCSSVariablesEnabled; 74#endif 75 bool needsSiteSpecificQuirks; 76 bool enforcesCSSMIMETypeInNoQuirksMode; 77 bool useLegacyBackgroundSizeShorthandBehavior; 78}; 79 80bool operator==(const CSSParserContext&, const CSSParserContext&); 81inline bool operator!=(const CSSParserContext& a, const CSSParserContext& b) { return !(a == b); } 82 83const CSSParserContext& strictCSSParserContext(); 84 85}; 86 87#endif // CSSParserMode_h 88