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

Unified Diff: third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp

Issue 2416033003: Remove unsafe getFontMetrics methods (Closed)
Patch Set: Address wkroman suggestions Created 4 years, 2 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/layout/svg/line/SVGInlineTextBox.cpp
diff --git a/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp b/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp
index 966ec7c7a08a1de89f612f9f558f4c7744f5f51a..7c0eb62517af1c25c2ce38ccd07fd790c14a380a 100644
--- a/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/line/SVGInlineTextBox.cpp
@@ -112,7 +112,12 @@ FloatRect SVGInlineTextBox::selectionRectForTextFragment(
ASSERT(scalingFactor);
const Font& scaledFont = lineLayoutItem.scaledFont();
- const FontMetrics& scaledFontMetrics = scaledFont.getFontMetrics();
+ const SimpleFontData* fontData = scaledFont.primaryFont();
+ DCHECK(fontData);
+ if (!fontData)
+ return FloatRect();
+
+ const FontMetrics& scaledFontMetrics = fontData->getFontMetrics();
FloatPoint textOrigin(fragment.x, fragment.y);
if (scalingFactor != 1)
textOrigin.scale(scalingFactor, scalingFactor);
@@ -257,11 +262,14 @@ void SVGInlineTextBox::paintTextMatchMarkerBackground(
LayoutRect SVGInlineTextBox::calculateBoundaries() const {
LineLayoutSVGInlineText lineLayoutItem =
LineLayoutSVGInlineText(this->getLineLayoutItem());
+ const SimpleFontData* fontData = lineLayoutItem.scaledFont().primaryFont();
+ DCHECK(fontData);
+ if (!fontData)
+ return LayoutRect();
+
float scalingFactor = lineLayoutItem.scalingFactor();
ASSERT(scalingFactor);
- LayoutUnit baseline(
- lineLayoutItem.scaledFont().getFontMetrics().floatAscent() /
- scalingFactor);
+ LayoutUnit baseline(fontData->getFontMetrics().floatAscent() / scalingFactor);
LayoutRect textBoundingRect;
for (const SVGTextFragment& fragment : m_textFragments)
@@ -296,11 +304,15 @@ bool SVGInlineTextBox::nodeAtPoint(HitTestResult& result,
if (locationInContainer.intersects(rect)) {
LineLayoutSVGInlineText lineLayoutItem =
LineLayoutSVGInlineText(this->getLineLayoutItem());
- ASSERT(lineLayoutItem.scalingFactor());
- float baseline =
- lineLayoutItem.scaledFont().getFontMetrics().floatAscent() /
- lineLayoutItem.scalingFactor();
-
+ const SimpleFontData* fontData =
+ lineLayoutItem.scaledFont().primaryFont();
+ DCHECK(fontData);
+ if (!fontData)
+ return false;
+
+ DCHECK(lineLayoutItem.scalingFactor());
+ float baseline = fontData->getFontMetrics().floatAscent() /
+ lineLayoutItem.scalingFactor();
FloatPoint floatLocation = FloatPoint(locationInContainer.point());
for (const SVGTextFragment& fragment : m_textFragments) {
FloatQuad fragmentQuad = fragment.boundingQuad(baseline);

Powered by Google App Engine
This is Rietveld 408576698