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; |