Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(517)

Unified Diff: third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp

Issue 2942123002: Break LayoutObject dependency for NinePieceImagePainter (Closed)
Patch Set: Pass document explicitly Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
diff --git a/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
index 12c550264c2801f3ec666704cbe02f87da677d85..ee8d41772d40b7d75d9e80302f60638f9f3f8c07 100644
--- a/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/InlineFlowBoxPainter.cpp
@@ -7,6 +7,7 @@
#include "core/layout/api/LineLayoutAPIShim.h"
#include "core/layout/line/RootInlineBox.h"
#include "core/paint/BoxPainter.h"
+#include "core/paint/NinePieceImagePainter.h"
#include "core/paint/PaintInfo.h"
#include "core/paint/PaintLayer.h"
#include "platform/graphics/GraphicsContextStateSaver.h"
@@ -241,6 +242,13 @@ InlineFlowBoxPainter::GetBorderPaintType(const LayoutRect& adjusted_frame_rect,
return kDontPaintBorders;
}
+static inline Node* GetNode(const LayoutObject* box_model) {
+ Node* node = nullptr;
+ for (const LayoutObject* obj = box_model; obj && !node; obj = obj->Parent())
+ node = obj->GeneratingNode();
+ return node;
+}
+
void InlineFlowBoxPainter::PaintBoxDecorationBackground(
const PaintInfo& paint_info,
const LayoutPoint& paint_offset,
@@ -301,14 +309,16 @@ void InlineFlowBoxPainter::PaintBoxDecorationBackground(
style_to_use->BackgroundLayers(), adjusted_frame_rect);
PaintInsetBoxShadow(paint_info, *style_to_use, adjusted_frame_rect);
+ const LayoutObject* box_model = ToLayoutBoxModelObject(
+ LineLayoutAPIShim::LayoutObjectFrom(inline_flow_box_.BoxModelObject()));
+
switch (border_painting_type) {
case kDontPaintBorders:
break;
case kPaintBordersWithoutClip:
BoxPainter::PaintBorder(
- *ToLayoutBoxModelObject(LineLayoutAPIShim::LayoutObjectFrom(
- inline_flow_box_.BoxModelObject())),
- paint_info, adjusted_frame_rect,
+ *box_model, box_model->GetDocument(), GetNode(box_model), paint_info,
+ adjusted_frame_rect,
inline_flow_box_.GetLineLayoutItem().StyleRef(
inline_flow_box_.IsFirstLineStyle()),
kBackgroundBleedNone, inline_flow_box_.IncludeLogicalLeftEdge(),
@@ -322,12 +332,11 @@ void InlineFlowBoxPainter::PaintBoxDecorationBackground(
adjusted_paint_offset, frame_rect.Size(), TextDirection::kLtr);
GraphicsContextStateSaver state_saver(paint_info.context);
paint_info.context.Clip(adjusted_clip_rect);
- BoxPainter::PaintBorder(
- *ToLayoutBoxModelObject(LineLayoutAPIShim::LayoutObjectFrom(
- inline_flow_box_.BoxModelObject())),
- paint_info, image_strip_paint_rect,
- inline_flow_box_.GetLineLayoutItem().StyleRef(
- inline_flow_box_.IsFirstLineStyle()));
+ BoxPainter::PaintBorder(*box_model, box_model->GetDocument(),
+ GetNode(box_model), paint_info,
+ image_strip_paint_rect,
+ inline_flow_box_.GetLineLayoutItem().StyleRef(
+ inline_flow_box_.IsFirstLineStyle()));
break;
}
}
@@ -398,8 +407,9 @@ void InlineFlowBoxPainter::PaintMask(const PaintInfo& paint_info,
// The simple case is where we are the only box for this object. In those
// cases only a single call to draw is required.
if (!inline_flow_box_.PrevLineBox() && !inline_flow_box_.NextLineBox()) {
- BoxPainter::PaintNinePieceImage(
- *box_model, paint_info.context, paint_rect,
+ NinePieceImagePainter::Paint(
+ paint_info.context, *box_model, box_model->GetDocument(),
+ GetNode(box_model), paint_rect,
inline_flow_box_.GetLineLayoutItem().StyleRef(), mask_nine_piece_image,
composite_op);
} else {
@@ -413,8 +423,9 @@ void InlineFlowBoxPainter::PaintMask(const PaintInfo& paint_info,
GraphicsContextStateSaver state_saver(paint_info.context);
// TODO(chrishtr): this should be pixel-snapped.
paint_info.context.Clip(clip_rect);
- BoxPainter::PaintNinePieceImage(
- *box_model, paint_info.context, image_strip_paint_rect,
+ NinePieceImagePainter::Paint(
+ paint_info.context, *box_model, box_model->GetDocument(),
+ GetNode(box_model), image_strip_paint_rect,
inline_flow_box_.GetLineLayoutItem().StyleRef(), mask_nine_piece_image,
composite_op);
}
« no previous file with comments | « third_party/WebKit/Source/core/paint/FieldsetPainter.cpp ('k') | third_party/WebKit/Source/core/paint/NinePieceImagePainter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698