Changeset 271785 in webkit
- Timestamp:
- Jan 24, 2021 4:28:45 PM (18 months ago)
- Location:
- trunk
- Files:
-
- 4 added
- 3 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/css3/filters/invalid-reference-filter-expected.html (added)
-
LayoutTests/css3/filters/invalid-reference-filter-in-chain-expected.html (added)
-
LayoutTests/css3/filters/invalid-reference-filter-in-chain.html (added)
-
LayoutTests/css3/filters/invalid-reference-filter.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/CSSFilter.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r271780 r271785 1 2021-01-24 Simon Fraser <simon.fraser@apple.com> 2 3 SVG reference filter chain with errors applies only some of the filters, producing incorrect output 4 https://bugs.webkit.org/show_bug.cgi?id=220893 5 6 Reviewed by Sam Weinig. 7 8 * css3/filters/invalid-reference-filter-expected.html: Added. 9 * css3/filters/invalid-reference-filter-in-chain-expected.html: Added. 10 * css3/filters/invalid-reference-filter-in-chain.html: Added. 11 * css3/filters/invalid-reference-filter.html: Added. 12 1 13 2021-01-23 Per Arne Vollan <pvollan@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r271784 r271785 1 2021-01-24 Simon Fraser <simon.fraser@apple.com> 2 3 SVG reference filter chain with errors applies only some of the filters, producing incorrect output 4 https://bugs.webkit.org/show_bug.cgi?id=220893 5 6 Reviewed by Sam Weinig. 7 8 If the CSS filter property refers to an invalid reference filter, ensure that 9 the entire reference filter is skipped. Previously, we'd add elements of the reference 10 filter up to the invalid one. 11 12 This behavior matches Gecko and Blink. 13 14 Tests: css3/filters/invalid-reference-filter-in-chain.html 15 css3/filters/invalid-reference-filter.html 16 17 * rendering/CSSFilter.cpp: 18 (WebCore::CSSFilter::buildReferenceFilter): 19 1 20 2021-01-24 Rob Buis <rbuis@igalia.com> 2 21 -
trunk/Source/WebCore/rendering/CSSFilter.cpp
r266542 r271785 111 111 } 112 112 113 RefPtr<FilterEffect> effect;114 115 113 auto builder = makeUnique<SVGFilterBuilder>(&previousEffect); 116 114 m_sourceAlpha = builder->getEffectById(SourceAlpha::effectName()); 117 115 116 RefPtr<FilterEffect> effect; 117 Vector<Ref<FilterEffect>> referenceEffects; 118 118 119 for (auto& effectElement : childrenOfType<SVGFilterPrimitiveStandardAttributes>(*filter)) { 119 120 effect = effectElement.build(builder.get(), *this); 120 if (!effect) 121 continue; 121 if (!effect) { 122 LOG_WITH_STREAM(Filters, stream << "CSSFilter " << this << " buildReferenceFilter: failed to build effect from " << effectElement); 123 return nullptr; 124 } 122 125 123 126 effectElement.setStandardAttributes(effect.get()); … … 126 129 127 130 builder->add(effectElement.result(), effect); 128 m_effects.append(*effect); 129 } 131 referenceEffects.append(*effect); 132 } 133 134 m_effects.appendVector(WTFMove(referenceEffects)); 130 135 return effect; 131 136 }
Note: See TracChangeset
for help on using the changeset viewer.