18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 1999 Antti Koivisto (koivisto@kde.org)
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *           (C) 2001 Dirk Mueller (mueller@kde.org)
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef DOMImplementation_h
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define DOMImplementation_h
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
27dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h>
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/PassRefPtr.h>
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <wtf/RefCounted.h>
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass CSSStyleSheet;
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Document;
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass DocumentType;
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass Frame;
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass HTMLDocument;
3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass KURL;
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef int ExceptionCode;
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass DOMImplementation : public RefCounted<DOMImplementation> {
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    static PassRefPtr<DOMImplementation> create(Document* ownerDocument) { return adoptRef(new DOMImplementation(ownerDocument)); }
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // DOM methods & attributes for DOMImplementation
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static bool hasFeature(const String& feature, const String& version);
4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    PassRefPtr<DocumentType> createDocumentType(const String& qualifiedName, const String& publicId, const String& systemId, ExceptionCode&);
4981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    PassRefPtr<Document> createDocument(const String& namespaceURI, const String& qualifiedName, DocumentType*, ExceptionCode&);
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    DOMImplementation* getInterface(const String& feature);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // From the DOMImplementationCSS interface
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static PassRefPtr<CSSStyleSheet> createCSSStyleSheet(const String& title, const String& media, ExceptionCode&);
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // From the HTMLDOMImplementation interface
5781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    PassRefPtr<HTMLDocument> createHTMLDocument(const String& title);
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Other methods (not part of DOM)
6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    static PassRefPtr<Document> createDocument(const String& MIMEType, Frame*, const KURL&, bool inViewSourceMode);
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static bool isXMLMIMEType(const String& MIMEType);
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static bool isTextMIMEType(const String& MIMEType);
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    Document* ownerDocument() { return m_ownerDocument; }
6681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void ownerDocumentDestroyed() { m_ownerDocument = 0; }
6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
6981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    DOMImplementation(Document* ownerDocument);
7081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    Document* m_ownerDocument;
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} //namespace
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
77