Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
index 438a159f3daabc6c64b661a26776ce4eb54e773d..a381eb5918afad26f9b7b43925ea060fd0b65a44 100644 |
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp |
@@ -12,12 +12,11 @@ |
#include "core/paint/FilterEffectBuilder.h" |
#include "core/style/ComputedStyle.h" |
#include "core/svg/SVGFilterElement.h" |
+#include "modules/canvas2d/BaseRenderingContext2D.h" |
#include "modules/canvas2d/CanvasGradient.h" |
#include "modules/canvas2d/CanvasPattern.h" |
-#include "modules/canvas2d/CanvasRenderingContext2D.h" |
#include "modules/canvas2d/CanvasStyle.h" |
#include "platform/graphics/DrawLooperBuilder.h" |
-#include "platform/graphics/filters/FilterOperation.h" |
#include "platform/graphics/filters/SkiaImageFilterBuilder.h" |
#include "platform/graphics/skia/SkiaUtils.h" |
#include "third_party/skia/include/effects/SkDashPathEffect.h" |
@@ -293,13 +292,7 @@ void CanvasRenderingContext2DState::resetTransform() |
m_isTransformInvertible = true; |
} |
-static void updateFilterReferences(HTMLCanvasElement* canvasElement, CanvasRenderingContext2D* context, const FilterOperations& filters) |
-{ |
- context->clearFilterReferences(); |
- context->addFilterReferences(filters, canvasElement->document()); |
-} |
- |
-SkImageFilter* CanvasRenderingContext2DState::getFilter(Element* styleResolutionHost, const Font& font, IntSize canvasSize, CanvasRenderingContext2D* context) const |
+SkImageFilter* CanvasRenderingContext2DState::getFilter(Element* styleResolutionHost, const Font* font, IntSize canvasSize, BaseRenderingContext2D* context) const |
{ |
if (!m_filterValue) |
return nullptr; |
@@ -307,13 +300,16 @@ SkImageFilter* CanvasRenderingContext2DState::getFilter(Element* styleResolution |
if (!m_resolvedFilter) { |
RefPtr<ComputedStyle> filterStyle = ComputedStyle::create(); |
// Must set font in case the filter uses any font-relative units (em, ex) |
- filterStyle->setFont(font); |
- |
- StyleResolverState resolverState(styleResolutionHost->document(), styleResolutionHost, filterStyle.get()); |
- resolverState.setStyle(filterStyle); |
+ if (font) |
+ filterStyle->setFont(*font); |
+ |
+ if (styleResolutionHost) { |
+ StyleResolverState resolverState(styleResolutionHost->document(), styleResolutionHost, filterStyle.get()); |
+ resolverState.setStyle(filterStyle); |
+ StyleBuilder::applyProperty(CSSPropertyWebkitFilter, resolverState, m_filterValue.get()); |
+ resolverState.loadPendingResources(); |
+ } |
- StyleBuilder::applyProperty(CSSPropertyWebkitFilter, resolverState, m_filterValue.get()); |
- resolverState.loadPendingResources(); |
RefPtrWillBeRawPtr<FilterEffectBuilder> filterEffectBuilder = FilterEffectBuilder::create(); |
// We can't reuse m_fillPaint and m_strokePaint for the filter, since these incorporate |
@@ -332,13 +328,13 @@ SkImageFilter* CanvasRenderingContext2DState::getFilter(Element* styleResolution |
RefPtrWillBeRawPtr<FilterEffect> lastEffect = filterEffectBuilder->lastEffect(); |
m_resolvedFilter = imageFilterBuilder.build(lastEffect.get(), ColorSpaceDeviceRGB); |
if (m_resolvedFilter) |
- updateFilterReferences(toHTMLCanvasElement(styleResolutionHost), context, filterStyle->filter()); |
+ context->updateFilterReferences(filterStyle->filter()); |
} |
return m_resolvedFilter.get(); |
} |
-bool CanvasRenderingContext2DState::hasFilter(Element* styleResolutionHost, const Font& font, IntSize canvasSize, CanvasRenderingContext2D* context) const |
+bool CanvasRenderingContext2DState::hasFilter(Element* styleResolutionHost, const Font* font, IntSize canvasSize, BaseRenderingContext2D* context) const |
{ |
// Checking for a non-null m_filterValue isn't sufficient, since this value |
// might refer to a non-existent filter. |