| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2008 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> | 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
| 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 922 return parentNode() && !parentNode()->isSVGElement() && hasTagName(SVGNames:
:svgTag) && Element::shouldMoveToFlowThread(styleToUse); | 922 return parentNode() && !parentNode()->isSVGElement() && hasTagName(SVGNames:
:svgTag) && Element::shouldMoveToFlowThread(styleToUse); |
| 923 } | 923 } |
| 924 | 924 |
| 925 void SVGElement::sendSVGLoadEventIfPossible(bool sendParentLoadEvents) | 925 void SVGElement::sendSVGLoadEventIfPossible(bool sendParentLoadEvents) |
| 926 { | 926 { |
| 927 RefPtr<SVGElement> currentTarget = this; | 927 RefPtr<SVGElement> currentTarget = this; |
| 928 while (currentTarget && currentTarget->haveLoadedRequiredResources()) { | 928 while (currentTarget && currentTarget->haveLoadedRequiredResources()) { |
| 929 RefPtr<Element> parent; | 929 RefPtr<Element> parent; |
| 930 if (sendParentLoadEvents) | 930 if (sendParentLoadEvents) |
| 931 parent = currentTarget->parentOrShadowHostElement(); // save the nex
t parent to dispatch too incase dispatching the event changes the tree | 931 parent = currentTarget->parentOrShadowHostElement(); // save the nex
t parent to dispatch too incase dispatching the event changes the tree |
| 932 if (hasLoadListener(currentTarget.get())) | 932 if (hasLoadListener(currentTarget.get()) |
| 933 && (currentTarget->isStructurallyExternal() || currentTarget->isSVGS
VGElement())) |
| 933 currentTarget->dispatchEvent(Event::create(EventTypeNames::load)); | 934 currentTarget->dispatchEvent(Event::create(EventTypeNames::load)); |
| 934 currentTarget = (parent && parent->isSVGElement()) ? static_pointer_cast
<SVGElement>(parent) : RefPtr<SVGElement>(); | 935 currentTarget = (parent && parent->isSVGElement()) ? static_pointer_cast
<SVGElement>(parent) : RefPtr<SVGElement>(); |
| 935 SVGElement* element = currentTarget.get(); | 936 SVGElement* element = currentTarget.get(); |
| 936 if (!element || !element->isOutermostSVGSVGElement()) | 937 if (!element || !element->isOutermostSVGSVGElement()) |
| 937 continue; | 938 continue; |
| 938 | 939 |
| 939 // Consider <svg onload="foo()"><image xlink:href="foo.png" externalReso
urcesRequired="true"/></svg>. | 940 // Consider <svg onload="foo()"><image xlink:href="foo.png" externalReso
urcesRequired="true"/></svg>. |
| 940 // If foo.png is not yet loaded, the first SVGLoad event will go to the
<svg> element, sent through | 941 // If foo.png is not yet loaded, the first SVGLoad event will go to the
<svg> element, sent through |
| 941 // Document::implicitClose(). Then the SVGLoad event will fire for <imag
e>, once its loaded. | 942 // Document::implicitClose(). Then the SVGLoad event will fire for <imag
e>, once its loaded. |
| 942 ASSERT(sendParentLoadEvents); | 943 ASSERT(sendParentLoadEvents); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 968 void SVGElement::finishParsingChildren() | 969 void SVGElement::finishParsingChildren() |
| 969 { | 970 { |
| 970 Element::finishParsingChildren(); | 971 Element::finishParsingChildren(); |
| 971 | 972 |
| 972 // The outermost SVGSVGElement SVGLoad event is fired through Document::disp
atchWindowLoadEvent. | 973 // The outermost SVGSVGElement SVGLoad event is fired through Document::disp
atchWindowLoadEvent. |
| 973 if (isOutermostSVGSVGElement()) | 974 if (isOutermostSVGSVGElement()) |
| 974 return; | 975 return; |
| 975 | 976 |
| 976 // finishParsingChildren() is called when the close tag is reached for an el
ement (e.g. </svg>) | 977 // finishParsingChildren() is called when the close tag is reached for an el
ement (e.g. </svg>) |
| 977 // we send SVGLoad events here if we can, otherwise they'll be sent when any
required loads finish | 978 // we send SVGLoad events here if we can, otherwise they'll be sent when any
required loads finish |
| 978 sendSVGLoadEventIfPossible(); | 979 if (isSVGSVGElement()) |
| 980 sendSVGLoadEventIfPossible(); |
| 979 } | 981 } |
| 980 | 982 |
| 981 bool SVGElement::childShouldCreateRenderer(const Node& child) const | 983 bool SVGElement::childShouldCreateRenderer(const Node& child) const |
| 982 { | 984 { |
| 983 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, invalidTextContent, ()); | 985 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, invalidTextContent, ()); |
| 984 | 986 |
| 985 if (invalidTextContent.isEmpty()) { | 987 if (invalidTextContent.isEmpty()) { |
| 986 invalidTextContent.add(SVGNames::textPathTag); | 988 invalidTextContent.add(SVGNames::textPathTag); |
| 987 #if ENABLE(SVG_FONTS) | 989 #if ENABLE(SVG_FONTS) |
| 988 invalidTextContent.add(SVGNames::altGlyphTag); | 990 invalidTextContent.add(SVGNames::altGlyphTag); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 animatableAttributes.add(SVGNames::clipPathUnitsAttr); | 1153 animatableAttributes.add(SVGNames::clipPathUnitsAttr); |
| 1152 animatableAttributes.add(SVGNames::cxAttr); | 1154 animatableAttributes.add(SVGNames::cxAttr); |
| 1153 animatableAttributes.add(SVGNames::cyAttr); | 1155 animatableAttributes.add(SVGNames::cyAttr); |
| 1154 animatableAttributes.add(SVGNames::diffuseConstantAttr); | 1156 animatableAttributes.add(SVGNames::diffuseConstantAttr); |
| 1155 animatableAttributes.add(SVGNames::divisorAttr); | 1157 animatableAttributes.add(SVGNames::divisorAttr); |
| 1156 animatableAttributes.add(SVGNames::dxAttr); | 1158 animatableAttributes.add(SVGNames::dxAttr); |
| 1157 animatableAttributes.add(SVGNames::dyAttr); | 1159 animatableAttributes.add(SVGNames::dyAttr); |
| 1158 animatableAttributes.add(SVGNames::edgeModeAttr); | 1160 animatableAttributes.add(SVGNames::edgeModeAttr); |
| 1159 animatableAttributes.add(SVGNames::elevationAttr); | 1161 animatableAttributes.add(SVGNames::elevationAttr); |
| 1160 animatableAttributes.add(SVGNames::exponentAttr); | 1162 animatableAttributes.add(SVGNames::exponentAttr); |
| 1161 animatableAttributes.add(SVGNames::externalResourcesRequiredAttr); | |
| 1162 animatableAttributes.add(SVGNames::filterResAttr); | 1163 animatableAttributes.add(SVGNames::filterResAttr); |
| 1163 animatableAttributes.add(SVGNames::filterUnitsAttr); | 1164 animatableAttributes.add(SVGNames::filterUnitsAttr); |
| 1164 animatableAttributes.add(SVGNames::fxAttr); | 1165 animatableAttributes.add(SVGNames::fxAttr); |
| 1165 animatableAttributes.add(SVGNames::fyAttr); | 1166 animatableAttributes.add(SVGNames::fyAttr); |
| 1166 animatableAttributes.add(SVGNames::gradientTransformAttr); | 1167 animatableAttributes.add(SVGNames::gradientTransformAttr); |
| 1167 animatableAttributes.add(SVGNames::gradientUnitsAttr); | 1168 animatableAttributes.add(SVGNames::gradientUnitsAttr); |
| 1168 animatableAttributes.add(SVGNames::heightAttr); | 1169 animatableAttributes.add(SVGNames::heightAttr); |
| 1169 animatableAttributes.add(SVGNames::in2Attr); | 1170 animatableAttributes.add(SVGNames::in2Attr); |
| 1170 animatableAttributes.add(SVGNames::inAttr); | 1171 animatableAttributes.add(SVGNames::inAttr); |
| 1171 animatableAttributes.add(SVGNames::interceptAttr); | 1172 animatableAttributes.add(SVGNames::interceptAttr); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1238 animatableAttributes.add(SVGNames::zAttr); | 1239 animatableAttributes.add(SVGNames::zAttr); |
| 1239 } | 1240 } |
| 1240 | 1241 |
| 1241 if (name == classAttr) | 1242 if (name == classAttr) |
| 1242 return true; | 1243 return true; |
| 1243 | 1244 |
| 1244 return animatableAttributes.contains(name); | 1245 return animatableAttributes.contains(name); |
| 1245 } | 1246 } |
| 1246 #endif | 1247 #endif |
| 1247 } | 1248 } |
| OLD | NEW |