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#pragma once
32
33namespace WebCore {
34
35// Must not grow beyond 3 bits, due to packing in StyleProperties.
36enum CSSParserMode {
37 HTMLStandardMode,
38 HTMLQuirksMode,
39 // HTML attributes are parsed in quirks mode but also allows internal properties and values.
40 HTMLAttributeMode,
41 // SVG attributes are parsed in quirks mode but rules differ slightly.
42 SVGAttributeMode,
43 // @viewport rules are parsed in standards mode but CSSOM modifications (via StylePropertySet)
44 // must call parseViewportProperties so needs a special mode.
45 CSSViewportRuleMode,
46 // User agent stylesheets are parsed in standards mode but also allows internal properties and values.
47 UASheetMode
48};
49
50inline bool isQuirksModeBehavior(CSSParserMode mode)
51{
52 return mode == HTMLQuirksMode || mode == HTMLAttributeMode;
53}
54
55inline bool isUASheetBehavior(CSSParserMode mode)
56{
57 return mode == UASheetMode;
58}
59
60inline bool isUnitLessValueParsingEnabledForMode(CSSParserMode mode)
61{
62 return mode == HTMLAttributeMode || mode == SVGAttributeMode;
63}
64
65inline bool isCSSViewportParsingEnabledForMode(CSSParserMode mode)
66{
67 return mode == CSSViewportRuleMode;
68}
69
70// FIXME-NEWPARSER: Next two functions should be removed eventually.
71inline CSSParserMode strictToCSSParserMode(bool inStrictMode)
72{
73 return inStrictMode ? HTMLStandardMode : HTMLQuirksMode;
74}
75
76inline bool isStrictParserMode(CSSParserMode cssParserMode)
77{
78 return cssParserMode == UASheetMode || cssParserMode == HTMLStandardMode || cssParserMode == SVGAttributeMode;
79}
80
81} // namespace WebCore
82