diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc index 8c99835e7e0..b670fe73bca 100644 --- a/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc +++ b/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc @@ -8,6 +8,7 @@ #include "third_party/blink/renderer/core/css/resolver/filter_operation_resolver.h" #include "third_party/blink/renderer/core/css/resolver/style_builder.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver_state.h" +#include "third_party/blink/renderer/core/dom/node_computed_style.h" #include "third_party/blink/renderer/core/html/canvas/html_canvas_element.h" #include "third_party/blink/renderer/core/paint/filter_effect_builder.h" #include "third_party/blink/renderer/core/style/computed_style.h" @@ -334,8 +335,18 @@ sk_sp<PaintFilter> CanvasRenderingContext2DState::GetFilter( scoped_refptr<ComputedStyle> filter_style = ComputedStyle::Create(); // Must set font in case the filter uses any font-relative units (em, ex) - filter_style->SetFont(font_for_filter_); - + // If font_for_filter_ was never set (ie frame-less documents) use base font + if (LIKELY(font_for_filter_.GetFontSelector())) { + filter_style->SetFont(font_for_filter_); + } else { + const ComputedStyle* computed_style = + style_resolution_host->GetDocument().GetComputedStyle(); + if (computed_style) { + filter_style->SetFont(computed_style->GetFont()); + } else { + return nullptr; + } + } StyleResolverState resolver_state(style_resolution_host->GetDocument(), *style_resolution_host, filter_style.get(), filter_style.get()); @@ -617,7 +628,7 @@ bool CanvasRenderingContext2DState::HasPattern() const { FillStyle()->GetCanvasPattern()->GetPattern(); } -// Only to be used if the CanvasRenderingContext2dState has Pattern +// Only to be used if the CanvasRenderingContext2DState has Pattern bool CanvasRenderingContext2DState::PatternIsAccelerated() const { DCHECK(HasPattern()); return FillStyle()->GetCanvasPattern()->GetPattern()->IsTextureBacked(); |