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, 2007, 2008 Apple Inc. All rights reserved. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Samuel Weinig (sam@webkit.org) 75f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DOMImplementation.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "ContentType.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "CSSStyleSheet.h" 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "DocumentType.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Element.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ExceptionCode.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include "FrameLoaderClient.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FTPDirectoryDocument.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLDocument.h" 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLNames.h" 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTMLViewSourceDocument.h" 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Image.h" 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ImageDocument.h" 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "MediaDocument.h" 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "MediaList.h" 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "MediaPlayer.h" 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "MIMETypeRegistry.h" 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Page.h" 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginData.h" 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PluginDocument.h" 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RegularExpression.h" 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Settings.h" 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "TextDocument.h" 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XMLNames.h" 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include <wtf/StdLibExtras.h> 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGNames.h" 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGDocument.h" 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML) 60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLNames.h" 61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "WMLDocument.h" 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projecttypedef HashSet<String, CaseFoldingHash> FeatureSet; 69635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 70635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic void addString(FeatureSet& set, const char* string) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set.add(string); 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic bool isSVG10Feature(const String &feature) 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool initialized = false; 78635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project DEFINE_STATIC_LOCAL(FeatureSet, svgFeatures, ()); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!initialized) { 805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(SVG_USE) && ENABLE(SVG_FOREIGN_OBJECT) && ENABLE(FILTERS) && ENABLE(SVG_FONTS) 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "svg"); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "svg.static"); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "svg.animation"); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "svg.dynamic"); 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "svg.dom.animation"); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "svg.dom.dynamic"); 885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(SVG_USE) && ENABLE(SVG_FOREIGN_OBJECT) && ENABLE(FILTERS) && ENABLE(SVG_FONTS) 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "dom"); 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "dom.svg"); 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "dom.svg.static"); 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "svg.all"); 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "dom.svg.all"); 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project initialized = true; 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return svgFeatures.contains(feature); 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic bool isSVG11Feature(const String &feature) 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static bool initialized = false; 103635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project DEFINE_STATIC_LOCAL(FeatureSet, svgFeatures, ()); 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!initialized) { 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Sadly, we cannot claim to implement any of the SVG 1.1 generic feature sets 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // lack of Font and Filter support. 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // http://bugs.webkit.org/show_bug.cgi?id=15480 1085f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(SVG_USE) && ENABLE(SVG_FOREIGN_OBJECT) && ENABLE(FILTERS) && ENABLE(SVG_FONTS) 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVG"); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVGDOM"); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVG-static"); 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVGDOM-static"); 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_ANIMATION) 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVG-animation"); 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "SVGDOM-animation"); 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "SVG-dynamic); 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "SVGDOM-dynamic); 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "CoreAttribute"); 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_USE) 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Structure"); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicStructure"); 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "ContainerAttribute"); 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "ConditionalProcessing"); 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Image"); 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Style"); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "ViewportAttribute"); 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Shape"); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "Text"); // requires altGlyph, bug 6426 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicText"); 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "PaintAttribute"); 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicPaintAttribute"); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "OpacityAttribute"); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "GraphicsAttribute"); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BaseGraphicsAttribute"); 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Marker"); 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "ColorProfile"); // requires color-profile, bug 6037 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Gradient"); 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Pattern"); 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Clip"); 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicClip"); 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Mask"); 1455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(FILTERS) 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "Filter"); 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicFilter"); 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "DocumentEventsAttribute"); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "GraphicalEventsAttribute"); 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "AnimationEventsAttribute"); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Cursor"); 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Hyperlinking"); 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "XlinkAttribute"); 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "ExternalResourcesRequired"); 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// addString(svgFeatures, "View"); // buggy <view> support, bug 16962 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Script"); 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_ANIMATION) 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Animation"); 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_FONTS) 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Font"); 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "BasicFont"); 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG_FOREIGN_OBJECT) 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project addString(svgFeatures, "Extensibility"); 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project initialized = true; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return svgFeatures.contains(feature); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 17481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochDOMImplementation::DOMImplementation(Document* ownerDocument) 17581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch : m_ownerDocument(ownerDocument) 17681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 17781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ASSERT(m_ownerDocument); 17881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 17981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool DOMImplementation::hasFeature(const String& feature, const String& version) 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String lower = feature.lower(); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (lower == "core" || lower == "html" || lower == "xml" || lower == "xhtml") 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return version.isEmpty() || version == "1.0" || version == "2.0"; 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (lower == "css" 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "css2" 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "events" 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "htmlevents" 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "mouseevents" 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "mutationevents" 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "range" 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "stylesheets" 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "traversal" 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "uievents" 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project || lower == "views") 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return version.isEmpty() || version == "2.0"; 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (lower == "xpath" || lower == "textevents") 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return version.isEmpty() || version == "3.0"; 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ((version.isEmpty() || version == "1.1") && feature.startsWith("http://www.w3.org/tr/svg11/feature#", false)) { 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isSVG11Feature(feature.right(feature.length() - 35))) 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ((version.isEmpty() || version == "1.0") && feature.startsWith("org.w3c.", false)) { 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isSVG10Feature(feature.right(feature.length() - 8))) 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<DocumentType> DOMImplementation::createDocumentType(const String& qualifiedName, 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& publicId, const String& systemId, ExceptionCode& ec) 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String prefix, localName; 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!Document::parseQualifiedName(qualifiedName, prefix, localName, ec)) 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return DocumentType::create(0, qualifiedName, publicId, systemId); 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectDOMImplementation* DOMImplementation::getInterface(const String& /*feature*/) 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<Document> DOMImplementation::createDocument(const String& namespaceURI, 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& qualifiedName, DocumentType* doctype, ExceptionCode& ec) 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<Document> doc; 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (namespaceURI == SVGNames::svgNamespaceURI) 23606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen doc = SVGDocument::create(0, KURL()); 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 239635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML) 240635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (namespaceURI == WMLNames::wmlNamespaceURI) 24106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen doc = WMLDocument::create(0, KURL()); 242635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project else 243635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (namespaceURI == HTMLNames::xhtmlNamespaceURI) 24506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen doc = Document::createXHTML(0, KURL()); 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 24706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen doc = Document::create(0, KURL()); 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 24981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (!m_ownerDocument) { 25081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ec = INVALID_STATE_ERR; 25181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return 0; 25281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 25381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch doc->setSecurityOrigin(m_ownerDocument->securityOrigin()); 25481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 255231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block RefPtr<Node> documentElement; 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!qualifiedName.isEmpty()) { 257231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block documentElement = doc->createElementNS(namespaceURI, qualifiedName, ec); 2585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (ec) 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 262231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a different document or was 263231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // created from a different implementation. 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Hixie's interpretation of the DOM Core spec suggests we should prefer 2652bde8e466a4451c7319e3a072d118917957d6554Steve Block // other exceptions to WRONG_DOCUMENT_ERR (based on order mentioned in spec), 2662bde8e466a4451c7319e3a072d118917957d6554Steve Block // but this matches the new DOM Core spec (http://www.w3.org/TR/domcore/). 267231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (doctype && doctype->document()) { 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ec = WRONG_DOCUMENT_ERR; 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 272ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block // FIXME: Shouldn't this call appendChild instead? 273231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (doctype) 274e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block doc->parserAddChild(doctype); 275231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (documentElement) 276e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block doc->parserAddChild(documentElement.release()); 277231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return doc.release(); 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<CSSStyleSheet> DOMImplementation::createCSSStyleSheet(const String&, const String& media, ExceptionCode&) 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Title should be set. 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Media could have wrong syntax, in which case we should generate an exception. 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<CSSStyleSheet> sheet = CSSStyleSheet::create(); 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sheet->setMedia(MediaList::createAllowingDescriptionSyntax(sheet.get(), media)); 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return sheet.release(); 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool DOMImplementation::isXMLMIMEType(const String& mimeType) 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (mimeType == "text/xml" || mimeType == "application/xml" || mimeType == "text/xsl") 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 294635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project static const char* const validChars = "[0-9a-zA-Z_\\-+~!$\\^{}|.%'`#&*]"; // per RFCs: 3023, 2045 295635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project DEFINE_STATIC_LOCAL(RegularExpression, xmlTypeRegExp, (String("^") + validChars + "+/" + validChars + "+\\+xml$", TextCaseSensitive)); 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return xmlTypeRegExp.match(mimeType) > -1; 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool DOMImplementation::isTextMIMEType(const String& mimeType) 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 301dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(mimeType) 302dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block || mimeType == "application/json" // Render JSON as text/plain. 303dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block || (mimeType.startsWith("text/") && mimeType != "text/html" 304dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block && mimeType != "text/xml" && mimeType != "text/xsl")) 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPassRefPtr<HTMLDocument> DOMImplementation::createHTMLDocument(const String& title) 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 31206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen RefPtr<HTMLDocument> d = HTMLDocument::create(0, KURL()); 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project d->open(); 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->write("<!doctype html><html><body></body></html>"); 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block d->setTitle(title); 31681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ASSERT(m_ownerDocument); 31781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (m_ownerDocument) 31881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch d->setSecurityOrigin(m_ownerDocument->securityOrigin()); 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return d.release(); 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 32206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenPassRefPtr<Document> DOMImplementation::createDocument(const String& type, Frame* frame, const KURL& url, bool inViewSourceMode) 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (inViewSourceMode) 32506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return HTMLViewSourceDocument::create(frame, url, type); 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Plugins cannot take HTML and XHTML from us, and we don't even need to initialize the plugin database for those. 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (type == "text/html") 32906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return HTMLDocument::create(frame, url); 3305f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian if (type == "application/xhtml+xml" 3315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(XHTMLMP) 3325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian || type == "application/vnd.wap.xhtml+xml" 3335f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 3345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ) 33506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return Document::createXHTML(frame, url); 336635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 337635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(WML) 338635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project if (type == "text/vnd.wap.wml" || type == "application/vnd.wap.wmlc") 33906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return WMLDocument::create(frame, url); 340635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 341635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(FTPDIR) 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Plugins cannot take FTP from us either 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (type == "application/x-ftp-directory") 34506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return FTPDirectoryDocument::create(frame, url); 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PluginData* pluginData = 0; 34906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen if (frame && frame->page() && frame->loader()->subframeLoader()->allowPlugins(NotAboutToInstantiatePlugin)) 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pluginData = frame->page()->pluginData(); 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // PDF is one image type for which a plugin can override built-in support. 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We do not want QuickTime to take over all image types, obviously. 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ((type == "application/pdf" || type == "text/pdf") && pluginData && pluginData->supportsMimeType(type)) 35506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return PluginDocument::create(frame, url); 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Image::supportsType(type)) 35706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return ImageDocument::create(frame, url); 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(VIDEO) 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Check to see if the type can be played by our MediaPlayer, if so create a MediaDocument 3618f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian if (MediaPlayer::supportsType(ContentType(type))) 36206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return MediaDocument::create(frame, url); 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Everything else except text/plain can be overridden by plugins. In particular, Adobe SVG Viewer should be used for SVG, if installed. 3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Disallowing plug-ins to use text/plain prevents plug-ins from hijacking a fundamental type that the browser is expected to handle, 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // and also serves as an optimization to prevent loading the plug-in database in the common case. 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (type != "text/plain" && pluginData && pluginData->supportsMimeType(type)) 36906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return PluginDocument::create(frame, url); 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isTextMIMEType(type)) 37106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return TextDocument::create(frame, url); 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (type == "image/svg+xml") { 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(DASHBOARD_SUPPORT) 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Settings* settings = frame ? frame->settings() : 0; 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!settings || !settings->usesDashboardBackwardCompatibilityMode()) 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 37906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return SVGDocument::create(frame, url); 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (isXMLMIMEType(type)) 38306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return Document::create(frame, url); 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen return HTMLDocument::create(frame, url); 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 389