diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc b/chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc index acddffe60bd..e08bf386fb9 100644 --- a/chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc +++ b/chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc @@ -12,6 +12,7 @@ #include "third_party/blink/renderer/core/paint/paint_info.h" #include "third_party/blink/renderer/core/paint/paint_layer.h" #include "third_party/blink/renderer/core/paint/paint_phase.h" +#include "third_party/blink/renderer/core/paint/scoped_svg_paint_state.h" #include "third_party/blink/renderer/core/style/nine_piece_image.h" #include "third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h" #include "third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h" @@ -50,10 +51,15 @@ void NGInlineBoxFragmentPainter::Paint(const PaintInfo& paint_info, const PhysicalOffset& paint_offset) { ScopedDisplayItemFragment display_item_fragment( paint_info.context, inline_box_item_.FragmentId()); + const LayoutObject& layout_object = *inline_box_fragment_.GetLayoutObject(); + absl::optional<ScopedSVGPaintState> svg_paint_state; + if (layout_object.IsSVGInline()) + svg_paint_state.emplace(layout_object, paint_info); const PhysicalOffset adjusted_paint_offset = paint_offset + inline_box_item_.OffsetInContainerFragment(); - if (paint_info.phase == PaintPhase::kForeground) + if (paint_info.phase == PaintPhase::kForeground && + !layout_object.IsSVGInline()) PaintBackgroundBorderShadow(paint_info, adjusted_paint_offset); const bool suppress_box_decoration_background = true; @@ -68,7 +74,8 @@ void NGInlineBoxFragmentPainterBase::PaintBackgroundBorderShadow( const PaintInfo& paint_info, const PhysicalOffset& paint_offset) { DCHECK(paint_info.phase == PaintPhase::kForeground); - if (inline_box_fragment_.Style().Visibility() != EVisibility::kVisible) + if (inline_box_fragment_.Style().Visibility() != EVisibility::kVisible || + inline_box_fragment_.IsOpaque()) return; // You can use p::first-line to specify a background. If so, the direct child |