OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
6 * Copyright (C) 2006 Samuel Weinig (sam@webkit.org) | 6 * Copyright (C) 2006 Samuel Weinig (sam@webkit.org) |
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 #include "core/page/Page.h" | 54 #include "core/page/Page.h" |
55 #include "platform/ContentType.h" | 55 #include "platform/ContentType.h" |
56 #include "platform/MIMETypeRegistry.h" | 56 #include "platform/MIMETypeRegistry.h" |
57 #include "platform/graphics/Image.h" | 57 #include "platform/graphics/Image.h" |
58 #include "platform/plugins/PluginData.h" | 58 #include "platform/plugins/PluginData.h" |
59 #include "platform/weborigin/SecurityOrigin.h" | 59 #include "platform/weborigin/SecurityOrigin.h" |
60 #include "wtf/StdLibExtras.h" | 60 #include "wtf/StdLibExtras.h" |
61 | 61 |
62 namespace blink { | 62 namespace blink { |
63 | 63 |
64 typedef HashSet<String, CaseFoldingHash> FeatureSet; | |
65 | |
66 static void addString(FeatureSet& set, const char* string) | |
67 { | |
68 set.add(string); | |
69 } | |
70 | |
71 static bool isSupportedSVG10Feature(const String& feature, const String& version
) | |
72 { | |
73 if (!version.isEmpty() && version != "1.0") | |
74 return false; | |
75 | |
76 static bool initialized = false; | |
77 DEFINE_STATIC_LOCAL(FeatureSet, svgFeatures, ()); | |
78 if (!initialized) { | |
79 addString(svgFeatures, "svg"); | |
80 addString(svgFeatures, "svg.static"); | |
81 // addString(svgFeatures, "svg.animation"); | |
82 // addString(svgFeatures, "svg.dynamic"); | |
83 // addString(svgFeatures, "svg.dom.animation"); | |
84 // addString(svgFeatures, "svg.dom.dynamic"); | |
85 addString(svgFeatures, "dom"); | |
86 addString(svgFeatures, "dom.svg"); | |
87 addString(svgFeatures, "dom.svg.static"); | |
88 // addString(svgFeatures, "svg.all"); | |
89 // addString(svgFeatures, "dom.svg.all"); | |
90 initialized = true; | |
91 } | |
92 return feature.startsWith("org.w3c.", TextCaseInsensitive) | |
93 && svgFeatures.contains(feature.right(feature.length() - 8)); | |
94 } | |
95 | |
96 static bool isSupportedSVG11Feature(const String& feature, const String& version
) | |
97 { | |
98 if (!version.isEmpty() && version != "1.1") | |
99 return false; | |
100 | |
101 static bool initialized = false; | |
102 DEFINE_STATIC_LOCAL(FeatureSet, svgFeatures, ()); | |
103 if (!initialized) { | |
104 // Sadly, we cannot claim to implement any of the SVG 1.1 generic featur
e sets | |
105 // lack of Font and Filter support. | |
106 // http://bugs.webkit.org/show_bug.cgi?id=15480 | |
107 addString(svgFeatures, "SVG"); | |
108 addString(svgFeatures, "SVGDOM"); | |
109 addString(svgFeatures, "SVG-static"); | |
110 addString(svgFeatures, "SVGDOM-static"); | |
111 addString(svgFeatures, "SVG-animation"); | |
112 addString(svgFeatures, "SVGDOM-animation"); | |
113 // addString(svgFeatures, "SVG-dynamic); | |
114 // addString(svgFeatures, "SVGDOM-dynamic); | |
115 addString(svgFeatures, "CoreAttribute"); | |
116 addString(svgFeatures, "Structure"); | |
117 addString(svgFeatures, "BasicStructure"); | |
118 addString(svgFeatures, "ContainerAttribute"); | |
119 addString(svgFeatures, "ConditionalProcessing"); | |
120 addString(svgFeatures, "Image"); | |
121 addString(svgFeatures, "Style"); | |
122 addString(svgFeatures, "ViewportAttribute"); | |
123 addString(svgFeatures, "Shape"); | |
124 addString(svgFeatures, "Text"); | |
125 addString(svgFeatures, "BasicText"); | |
126 addString(svgFeatures, "PaintAttribute"); | |
127 addString(svgFeatures, "BasicPaintAttribute"); | |
128 addString(svgFeatures, "OpacityAttribute"); | |
129 addString(svgFeatures, "GraphicsAttribute"); | |
130 addString(svgFeatures, "BaseGraphicsAttribute"); | |
131 addString(svgFeatures, "Marker"); | |
132 // addString(svgFeatures, "ColorProfile"); | |
133 addString(svgFeatures, "Gradient"); | |
134 addString(svgFeatures, "Pattern"); | |
135 addString(svgFeatures, "Clip"); | |
136 addString(svgFeatures, "BasicClip"); | |
137 addString(svgFeatures, "Mask"); | |
138 addString(svgFeatures, "Filter"); | |
139 addString(svgFeatures, "BasicFilter"); | |
140 addString(svgFeatures, "DocumentEventsAttribute"); | |
141 addString(svgFeatures, "GraphicalEventsAttribute"); | |
142 // addString(svgFeatures, "AnimationEventsAttribute"); | |
143 addString(svgFeatures, "Cursor"); | |
144 addString(svgFeatures, "Hyperlinking"); | |
145 addString(svgFeatures, "XlinkAttribute"); | |
146 addString(svgFeatures, "View"); | |
147 addString(svgFeatures, "Script"); | |
148 addString(svgFeatures, "Animation"); | |
149 addString(svgFeatures, "Extensibility"); | |
150 initialized = true; | |
151 } | |
152 return feature.startsWith("http://www.w3.org/tr/svg11/feature#", TextCaseIns
ensitive) | |
153 && svgFeatures.contains(feature.right(feature.length() - 35)); | |
154 } | |
155 | |
156 DOMImplementation::DOMImplementation(Document& document) | 64 DOMImplementation::DOMImplementation(Document& document) |
157 : m_document(document) | 65 : m_document(document) |
158 { | 66 { |
159 } | 67 } |
160 | 68 |
161 bool DOMImplementation::hasFeature(const String& feature, const String& version) | |
162 { | |
163 if (feature.startsWith("http://www.w3.org/TR/SVG", TextCaseInsensitive) | |
164 || feature.startsWith("org.w3c.dom.svg", TextCaseInsensitive) | |
165 || feature.startsWith("org.w3c.svg", TextCaseInsensitive)) { | |
166 // FIXME: SVG 2.0 support? | |
167 return isSupportedSVG10Feature(feature, version) || isSupportedSVG11Feat
ure(feature, version); | |
168 } | |
169 return true; | |
170 } | |
171 | |
172 bool DOMImplementation::hasFeatureForBindings(const String& feature, const Strin
g& version) | |
173 { | |
174 if (!hasFeature(feature, version)) { | |
175 UseCounter::countDeprecation(m_document, UseCounter::DOMImplementationHa
sFeatureReturnFalse); | |
176 return false; | |
177 } | |
178 return true; | |
179 } | |
180 | |
181 PassRefPtrWillBeRawPtr<DocumentType> DOMImplementation::createDocumentType(const
AtomicString& qualifiedName, | 69 PassRefPtrWillBeRawPtr<DocumentType> DOMImplementation::createDocumentType(const
AtomicString& qualifiedName, |
182 const String& publicId, const String& systemId, ExceptionState& exceptionSta
te) | 70 const String& publicId, const String& systemId, ExceptionState& exceptionSta
te) |
183 { | 71 { |
184 AtomicString prefix, localName; | 72 AtomicString prefix, localName; |
185 if (!Document::parseQualifiedName(qualifiedName, prefix, localName, exceptio
nState)) | 73 if (!Document::parseQualifiedName(qualifiedName, prefix, localName, exceptio
nState)) |
186 return nullptr; | 74 return nullptr; |
187 | 75 |
188 return DocumentType::create(m_document, qualifiedName, publicId, systemId); | 76 return DocumentType::create(m_document, qualifiedName, publicId, systemId); |
189 } | 77 } |
190 | 78 |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 | 256 |
369 return HTMLDocument::create(init); | 257 return HTMLDocument::create(init); |
370 } | 258 } |
371 | 259 |
372 DEFINE_TRACE(DOMImplementation) | 260 DEFINE_TRACE(DOMImplementation) |
373 { | 261 { |
374 visitor->trace(m_document); | 262 visitor->trace(m_document); |
375 } | 263 } |
376 | 264 |
377 } | 265 } |
OLD | NEW |