18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 1999-2003 Lars Knoll (knoll@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (C) 2002-2003 Dirk Mueller (mueller@kde.org)
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2002, 2006, 2008 Apple Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef CSSStyleRule_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define CSSStyleRule_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSRule.h"
26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "CSSSelectorList.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/PassRefPtr.h>
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefPtr.h>
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSMutableStyleDeclaration;
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSSelector;
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSStyleRule : public CSSRule {
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
37dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    static PassRefPtr<CSSStyleRule> create(CSSStyleSheet* parent, int sourceLine)
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        return adoptRef(new CSSStyleRule(parent, sourceLine));
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual ~CSSStyleRule();
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4321939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual String selectorText() const;
44bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    void setSelectorText(const String&);
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSMutableStyleDeclaration* style() const { return m_style.get(); }
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String cssText() const;
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Not part of the CSSOM
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool parseString(const String&, bool = false);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void adoptSelectorVector(Vector<OwnPtr<CSSParserSelector> >& selectors) { m_selectorList.adoptSelectorVector(selectors); }
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setDeclaration(PassRefPtr<CSSMutableStyleDeclaration>);
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
56635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    const CSSSelectorList& selectorList() const { return m_selectorList; }
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CSSMutableStyleDeclaration* declaration() { return m_style.get(); }
58635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual void addSubresourceStyleURLs(ListHashSet<KURL>& urls);
60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
61dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    int sourceLine() { return m_sourceLine; }
62dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
6321939df44de1705786c545cd1bf519d47250322dBen Murdochprotected:
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    CSSStyleRule(CSSStyleSheet* parent, int sourceLine);
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6621939df44de1705786c545cd1bf519d47250322dBen Murdochprivate:
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isStyleRule() { return true; }
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Inherited from CSSRule
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual unsigned short type() const { return STYLE_RULE; }
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RefPtr<CSSMutableStyleDeclaration> m_style;
73635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    CSSSelectorList m_selectorList;
74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    int m_sourceLine;
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // CSSStyleRule_h
80