summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_state.cc
diff options
context:
space:
mode:
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.cc17
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();