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

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

Issue 2261663002: Disallow cast/implicit conversion from LayoutUnit to int/unsigned (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: - Created 4 years, 4 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/InlineTextBoxPainter.cpp
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
index 878aee39191234c22a7b61095ee641e9791810c4..ca3f747fb3cd1ec5d73b27b632a1c8e62f5334ae 100644
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
@@ -286,8 +286,8 @@ void InlineTextBoxPainter::paintSingleCompositionBackgroundRun(GraphicsContext&
if (sPos >= ePos)
return;
- int deltaY = m_inlineTextBox.getLineLayoutItem().style()->isFlippedLinesWritingMode() ? m_inlineTextBox.root().selectionBottom() - m_inlineTextBox.logicalBottom() : m_inlineTextBox.logicalTop() - m_inlineTextBox.root().selectionTop();
- int selHeight = m_inlineTextBox.root().selectionHeight();
+ int deltaY = (m_inlineTextBox.getLineLayoutItem().style()->isFlippedLinesWritingMode() ? m_inlineTextBox.root().selectionBottom() - m_inlineTextBox.logicalBottom() : m_inlineTextBox.logicalTop() - m_inlineTextBox.root().selectionTop()).toInt();
+ int selHeight = m_inlineTextBox.root().selectionHeight().toInt();
FloatPoint localOrigin(boxOrigin.x().toFloat(), boxOrigin.y().toFloat() - deltaY);
context.drawHighlightForText(font, m_inlineTextBox.constructTextRun(style), localOrigin, selHeight, backgroundColor, sPos, ePos);
}
@@ -400,8 +400,8 @@ void InlineTextBoxPainter::paintDocumentMarker(GraphicsContext& context, const L
endPosition = std::min<int>(endPosition, m_inlineTextBox.truncation());
// Calculate start & width
- int deltaY = m_inlineTextBox.getLineLayoutItem().style()->isFlippedLinesWritingMode() ? m_inlineTextBox.root().selectionBottom() - m_inlineTextBox.logicalBottom() : m_inlineTextBox.logicalTop() - m_inlineTextBox.root().selectionTop();
- int selHeight = m_inlineTextBox.root().selectionHeight();
+ int deltaY = (m_inlineTextBox.getLineLayoutItem().style()->isFlippedLinesWritingMode() ? m_inlineTextBox.root().selectionBottom() - m_inlineTextBox.logicalBottom() : m_inlineTextBox.logicalTop() - m_inlineTextBox.root().selectionTop()).toInt();
+ int selHeight = m_inlineTextBox.root().selectionHeight().toInt();
LayoutPoint startPoint(boxOrigin.x(), boxOrigin.y() - deltaY);
TextRun run = m_inlineTextBox.constructTextRun(style);
@@ -419,11 +419,11 @@ void InlineTextBoxPainter::paintDocumentMarker(GraphicsContext& context, const L
// we pin to two pixels under the baseline.
int lineThickness = misspellingLineThickness;
int baseline = m_inlineTextBox.getLineLayoutItem().style(m_inlineTextBox.isFirstLineStyle())->getFontMetrics().ascent();
- int descent = m_inlineTextBox.logicalHeight() - baseline;
+ int descent = (m_inlineTextBox.logicalHeight() - baseline).toInt();
int underlineOffset;
if (descent <= (lineThickness + 2)) {
// Place the underline at the very bottom of the text in small/medium fonts.
- underlineOffset = m_inlineTextBox.logicalHeight() - lineThickness;
+ underlineOffset = (m_inlineTextBox.logicalHeight() - lineThickness).toInt();
} else {
// In larger fonts, though, place the underline up near the baseline to prevent a big gap.
underlineOffset = baseline + 2;
@@ -466,7 +466,7 @@ void InlineTextBoxPainter::paintSelection(GraphicsContext& context, const Layout
ASSERT(combinedText);
// We can't use the height of m_inlineTextBox because LayoutTextCombine's inlineTextBox is horizontal within vertical flow
combinedText->transformToInlineCoordinates(context, boxRect, true);
- context.drawHighlightForText(font, textRun, FloatPoint(boxRect.location()), boxRect.height(), c, sPos, ePos);
+ context.drawHighlightForText(font, textRun, FloatPoint(boxRect.location()), boxRect.height().toInt(), c, sPos, ePos);
return;
}
@@ -487,8 +487,10 @@ void InlineTextBoxPainter::paintSelection(GraphicsContext& context, const Layout
// and so will end up positioned at (0, 0), even though we paint their
// selection highlight with character width. For RTL then, we have to
// explicitly shift the selection rect over to paint in the right location.
- if (!m_inlineTextBox.isLeftToRightDirection() && m_inlineTextBox.isLineBreak())
- selectionRect.move(-selectionRect.width(), 0);
+ if (!m_inlineTextBox.isLeftToRightDirection() && m_inlineTextBox.isLineBreak()) {
+ // TODO(crbug.com/638981): Is the conversion to int intentional?
+ selectionRect.move(-selectionRect.width().toInt(), 0);
+ }
context.fillRect(FloatRect(selectionRect), c);
}
@@ -529,8 +531,8 @@ static int computeUnderlineOffset(const TextUnderlinePosition underlinePosition,
// Position underline relative to the under edge of the lowest element's content box.
const LayoutUnit offset = inlineTextBox->root().maxLogicalTop() - inlineTextBox->logicalTop();
if (offset > 0)
- return inlineTextBox->logicalHeight() + gap + offset;
- return inlineTextBox->logicalHeight() + gap;
+ return (inlineTextBox->logicalHeight() + gap + offset).toInt();
+ return (inlineTextBox->logicalHeight() + gap).toInt();
}
}
@@ -868,7 +870,7 @@ void InlineTextBoxPainter::paintTextMatchMarkerBackground(const PaintInfo& paint
LayoutRect boxRect(boxOrigin, LayoutSize(m_inlineTextBox.logicalWidth(), m_inlineTextBox.logicalHeight()));
context.clip(FloatRect(boxRect));
- context.drawHighlightForText(font, run, FloatPoint(boxOrigin), boxRect.height(), color, sPos, ePos);
+ context.drawHighlightForText(font, run, FloatPoint(boxOrigin), boxRect.height().toInt(), color, sPos, ePos);
}

Powered by Google App Engine
This is Rietveld 408576698