Changeset 101542 in webkit
- Timestamp:
- Nov 30, 2011 11:53:28 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 8 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r101537 r101542 1 2011-11-30 Tim Horton <timothy_horton@apple.com> 2 3 feImage referencing a primitive draws incorrectly 4 https://bugs.webkit.org/show_bug.cgi?id=71731 5 <rdar://problem/10408178> 6 7 Reviewed by Simon Fraser. 8 9 Add a test (feImage-reference-svg-primitive) that ensures that having 10 an <feImage> referencing an SVG primitive which is declared after it 11 successfully paints the referenced object. 12 13 Add a test (feImage-zero-size-crash) to see if we crash when <feImage> 14 references an object with 0x0 size. 15 16 Add a test (feImage-reference-invalidation) that ensures that changing the 17 xlink:href on an <feImage> correctly invalidates the image. 18 19 * svg/filters/feImage-reference-invalidation-expected.png: Added. 20 * svg/filters/feImage-reference-invalidation-expected.txt: Added. 21 * svg/filters/feImage-reference-svg-primitive-expected.png: Added. 22 * svg/filters/feImage-reference-svg-primitive-expected.txt: Added. 23 * svg/filters/feImage-reference-invalidation.svg: Added. 24 * svg/filters/feImage-reference-svg-primitive.svg: Added. 25 * svg/filters/feImage-zero-size-crash-expected.txt: Added. 26 * svg/filters/feImage-zero-size-crash.svg: Added. 27 1 28 2011-11-30 Tim Horton <timothy_horton@apple.com> 2 29 -
trunk/Source/WebCore/ChangeLog
r101538 r101542 1 2011-11-30 Tim Horton <timothy_horton@apple.com> 2 3 feImage referencing a primitive draws incorrectly 4 https://bugs.webkit.org/show_bug.cgi?id=71731 5 <rdar://problem/10408178> 6 7 Reviewed by Simon Fraser. 8 9 If the target of an <feImage> appears to be a local fragment identifier, but 10 it hasn't resolved yet, defer resolution instead of loading a bogus image. 11 12 Invalidate <feImage> if the xlink:href attribute changes. 13 14 Don't attempt to render an <feImage> if the referenced element is of size 0x0. 15 16 Tests: svg/filters/feImage-reference-invalidation.svg 17 svg/filters/feImage-reference-svg-primitive.svg 18 svg/filters/feImage-zero-size-crash.svg 19 20 * svg/SVGFEImageElement.cpp: 21 (WebCore::SVGFEImageElement::parseMappedAttribute): 22 (WebCore::SVGFEImageElement::build): 23 1 24 2011-11-30 Robin Dunn <robin@alldunn.com> 2 25 -
trunk/Source/WebCore/svg/SVGFEImageElement.cpp
r99794 r101542 70 70 } 71 71 72 void SVGFEImageElement:: requestImageResource()72 void SVGFEImageElement::invalidateImageResource() 73 73 { 74 74 if (m_cachedImage) { … … 77 77 } 78 78 79 Element* hrefElement = SVGURIReference::targetElementFromIRIString(href(), document()); 79 m_targetImage.clear(); 80 } 81 82 void SVGFEImageElement::requestImageResource() 83 { 84 invalidateImageResource(); 85 86 String fragmentIdentifier; 87 Element* hrefElement = SVGURIReference::targetElementFromIRIString(href(), document(), &fragmentIdentifier); 88 80 89 if (hrefElement && hrefElement->isSVGElement() && hrefElement->renderer()) 90 return; 91 92 // We have what appears to be a local fragment identifier, but it didn't resolve yet. 93 if (!fragmentIdentifier.isEmpty()) 81 94 return; 82 95 … … 140 153 } 141 154 142 // FIXME: This can't be correct, I'm just preserving existing code. <feImage> + SVG DOM 'href' changes need testing. 143 if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName) || SVGURIReference::isKnownAttribute(attrName)) 155 if (SVGURIReference::isKnownAttribute(attrName)) { 156 invalidateImageResource(); 157 invalidate(); 158 return; 159 } 160 161 if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) 144 162 return; 145 163 … … 163 181 PassRefPtr<FilterEffect> SVGFEImageElement::build(SVGFilterBuilder*, Filter* filter) 164 182 { 183 if (!m_cachedImage && !m_targetImage) 184 requestImageResource(); 185 165 186 if (!m_cachedImage && !m_targetImage) { 166 187 Element* hrefElement = SVGURIReference::targetElementFromIRIString(href(), document()); … … 173 194 174 195 IntRect targetRect = enclosingIntRect(renderer->objectBoundingBox()); 196 197 if (targetRect.isEmpty()) 198 return 0; 199 175 200 m_targetImage = ImageBuffer::create(targetRect.size(), ColorSpaceLinearRGB); 176 201 -
trunk/Source/WebCore/svg/SVGFEImageElement.h
r97113 r101542 57 57 virtual PassRefPtr<FilterEffect> build(SVGFilterBuilder*, Filter*); 58 58 59 void invalidateImageResource(); 59 60 void requestImageResource(); 60 61
Note: See TracChangeset
for help on using the changeset viewer.