2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * (C) 2002-2003 Dirk Mueller (mueller@kde.org)
4 * Copyright (C) 2002, 2006, 2007, 2012 Apple Inc. All rights reserved.
5 * Copyright (C) 2011 Andreas Kling (kling@webkit.org)
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
26 #include "wtf/RefCounted.h"
27 #include "wtf/text/WTFString.h"
31 class CSSParserContext;
35 class CSSRule : public RefCounted<CSSRule> {
37 virtual ~CSSRule() { }
47 // 7 was VARIABLES_RULE; we now match other browsers with 7 as
49 // <https://bugs.webkit.org/show_bug.cgi?id=71293>.
51 WEBKIT_KEYFRAMES_RULE = KEYFRAMES_RULE,
53 WEBKIT_KEYFRAME_RULE = KEYFRAME_RULE,
56 WEBKIT_FILTER_RULE = 17
59 virtual Type type() const = 0;
60 virtual String cssText() const = 0;
61 virtual void reattach(StyleRuleBase*) = 0;
63 void setParentStyleSheet(CSSStyleSheet* styleSheet)
65 m_parentIsRule = false;
66 m_parentStyleSheet = styleSheet;
69 void setParentRule(CSSRule* rule)
71 m_parentIsRule = true;
75 CSSStyleSheet* parentStyleSheet() const
78 return m_parentRule ? m_parentRule->parentStyleSheet() : 0;
79 return m_parentStyleSheet;
82 CSSRule* parentRule() const { return m_parentIsRule ? m_parentRule : 0; }
84 // NOTE: Just calls notImplemented().
85 void setCSSText(const String&);
88 CSSRule(CSSStyleSheet* parent)
89 : m_hasCachedSelectorText(false)
90 , m_parentIsRule(false)
91 , m_parentStyleSheet(parent)
95 bool hasCachedSelectorText() const { return m_hasCachedSelectorText; }
96 void setHasCachedSelectorText(bool hasCachedSelectorText) const { m_hasCachedSelectorText = hasCachedSelectorText; }
98 const CSSParserContext& parserContext() const;
101 mutable unsigned char m_hasCachedSelectorText : 1;
102 unsigned char m_parentIsRule : 1;
105 CSSRule* m_parentRule;
106 CSSStyleSheet* m_parentStyleSheet;
110 #define DEFINE_CSS_RULE_TYPE_CASTS(ToType, TYPE_NAME) \
111 DEFINE_TYPE_CASTS(ToType, CSSRule, rule, rule->type() == CSSRule::TYPE_NAME, rule.type() == CSSRule::TYPE_NAME)
113 } // namespace WebCore