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