1231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/*
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)
5231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2004, 2005, 2006, 2009 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#include "config.h"
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DocumentFragment.h"
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "Document.h"
2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "HTMLDocumentParser.h"
2806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "Page.h"
2906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "Settings.h"
3006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "XMLDocumentParser.h"
3121939df44de1705786c545cd1bf519d47250322dBen Murdoch
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochDocumentFragment::DocumentFragment(Document* document)
35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    : ContainerNode(document)
36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{
3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    ASSERT(document);
38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block}
39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockPassRefPtr<DocumentFragment> DocumentFragment::create(Document* document)
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
42231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    return adoptRef(new DocumentFragment(document));
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectString DocumentFragment::nodeName() const
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    return "#document-fragment";
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNode::NodeType DocumentFragment::nodeType() const
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return DOCUMENT_FRAGMENT_NODE;
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool DocumentFragment::childTypeAllowed(NodeType type) const
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    switch (type) {
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case ELEMENT_NODE:
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case PROCESSING_INSTRUCTION_NODE:
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case COMMENT_NODE:
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case TEXT_NODE:
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case CDATA_SECTION_NODE:
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        case ENTITY_REFERENCE_NODE:
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return true;
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        default:
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            return false;
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<Node> DocumentFragment::cloneNode(bool deep)
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    RefPtr<DocumentFragment> clone = create(document());
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (deep)
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        cloneChildNodes(clone.get());
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return clone.release();
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
78dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid DocumentFragment::parseHTML(const String& source, Element* contextElement, FragmentScriptingPermission scriptingPermission)
7906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
80dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    HTMLDocumentParser::parseDocumentFragment(source, this, contextElement, scriptingPermission);
8106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
8206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
83dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochbool DocumentFragment::parseXML(const String& source, Element* contextElement, FragmentScriptingPermission scriptingPermission)
8406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
85dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    return XMLDocumentParser::parseDocumentFragment(source, this, contextElement, scriptingPermission);
8606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
8706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
89