summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc
diff options
context:
space:
mode:
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.cc11
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