1/*
2 * This file is part of the XSL implementation.
3 *
4 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB.  If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 *
21 */
22
23#ifndef XSLImportRule_h
24#define XSLImportRule_h
25
26#if ENABLE(XSLT)
27
28#include "CachedResourceClient.h"
29#include "CachedResourceHandle.h"
30#include "StyleBase.h"
31#include "XSLStyleSheet.h"
32
33namespace WebCore {
34
35class CachedXSLStyleSheet;
36
37class XSLImportRule : public StyleBase, private CachedResourceClient {
38    WTF_MAKE_FAST_ALLOCATED;
39public:
40    static PassRefPtr<XSLImportRule> create(XSLStyleSheet* parentSheet, const String& href)
41    {
42        return adoptRef(new XSLImportRule(parentSheet, href));
43    }
44
45    virtual ~XSLImportRule();
46
47    const String& href() const { return m_strHref; }
48    XSLStyleSheet* styleSheet() const { return m_styleSheet.get(); }
49
50    XSLStyleSheet* parentStyleSheet() const;
51
52    bool isLoading();
53    void loadSheet();
54
55private:
56    XSLImportRule(XSLStyleSheet* parentSheet, const String& href);
57
58    virtual bool isImportRule() { return true; }
59
60    // from CachedResourceClient
61    virtual void setXSLStyleSheet(const String& href, const KURL& baseURL, const String& sheet);
62
63    String m_strHref;
64    RefPtr<XSLStyleSheet> m_styleSheet;
65    CachedResourceHandle<CachedXSLStyleSheet> m_cachedSheet;
66    bool m_loading;
67};
68
69} // namespace WebCore
70
71#endif // ENABLE(XSLT)
72
73#endif // XSLImportRule_h
74