| Index: Source/core/paint/FilterEffectBuilder.cpp
|
| diff --git a/Source/core/paint/FilterEffectBuilder.cpp b/Source/core/paint/FilterEffectBuilder.cpp
|
| index 357315fefad6c4f8aa0cadc7eb39064be4751085..9d8df74b3e4b37bd2848db40d24dc3a860b5e669 100644
|
| --- a/Source/core/paint/FilterEffectBuilder.cpp
|
| +++ b/Source/core/paint/FilterEffectBuilder.cpp
|
| @@ -71,10 +71,18 @@ DEFINE_TRACE(FilterEffectBuilder)
|
| visitor->trace(m_referenceFilters);
|
| }
|
|
|
| -bool FilterEffectBuilder::build(LayoutObject* layoutObject, const FilterOperations& operations)
|
| +bool FilterEffectBuilder::build(Element* element, const FilterOperations& operations, ScaleMode scaleMode)
|
| {
|
| - const ComputedStyle* style = layoutObject->style();
|
| - float zoom = style ? style->effectiveZoom() : 1.0f;
|
| + float zoom = 1.0f;
|
| + if (scaleMode == ApplyScale) {
|
| + LayoutObject* layoutObject = element->layoutObject();
|
| + if (layoutObject) {
|
| + const ComputedStyle* style = layoutObject->style();
|
| + if (style) {
|
| + zoom = style->effectiveZoom();
|
| + }
|
| + }
|
| + }
|
|
|
| // Create a parent filter for shorthand filters. These have already been scaled by the CSS code for page zoom, so scale is 1.0 here.
|
| RefPtrWillBeRawPtr<ReferenceFilter> parentFilter = ReferenceFilter::create(1.0f);
|
| @@ -85,7 +93,7 @@ bool FilterEffectBuilder::build(LayoutObject* layoutObject, const FilterOperatio
|
| switch (filterOperation->type()) {
|
| case FilterOperation::REFERENCE: {
|
| RefPtrWillBeRawPtr<ReferenceFilter> referenceFilter = ReferenceFilter::create(zoom);
|
| - effect = ReferenceFilterBuilder::build(referenceFilter.get(), *layoutObject, previousEffect.get(), toReferenceFilterOperation(*filterOperation));
|
| + effect = ReferenceFilterBuilder::build(referenceFilter.get(), element, previousEffect.get(), toReferenceFilterOperation(*filterOperation));
|
| referenceFilter->setLastEffect(effect);
|
| m_referenceFilters.append(referenceFilter);
|
| break;
|
|
|