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

Unified Diff: third_party/WebKit/Source/platform/DragImage.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/platform/DragImage.cpp
diff --git a/third_party/WebKit/Source/platform/DragImage.cpp b/third_party/WebKit/Source/platform/DragImage.cpp
index 273192227e4d934fd322db7c9965dda505266160..87b59f5fa84fc2bcaf7c5c89ddb4d1e3b542ab50 100644
--- a/third_party/WebKit/Source/platform/DragImage.cpp
+++ b/third_party/WebKit/Source/platform/DragImage.cpp
@@ -188,8 +188,16 @@ std::unique_ptr<DragImage> DragImage::create(const KURL& url,
float deviceScaleFactor) {
const Font labelFont =
deriveDragLabelFont(kDragLinkLabelFontSize, FontWeightBold, systemFont);
+ const SimpleFontData* labelFontData = labelFont.primaryFont();
+ DCHECK(labelFontData);
const Font urlFont =
deriveDragLabelFont(kDragLinkUrlFontSize, FontWeightNormal, systemFont);
+ const SimpleFontData* urlFontData = urlFont.primaryFont();
+ DCHECK(urlFontData);
+
+ if (!labelFontData || !urlFontData)
+ return nullptr;
+
FontCachePurgePreventer fontCachePurgePreventer;
bool drawURLString = true;
@@ -209,8 +217,8 @@ std::unique_ptr<DragImage> DragImage::create(const KURL& url,
TextRun labelRun(label.impl());
TextRun urlRun(urlString.impl());
IntSize labelSize(labelFont.width(labelRun),
- labelFont.getFontMetrics().ascent() +
- labelFont.getFontMetrics().descent());
+ labelFontData->getFontMetrics().ascent() +
+ labelFontData->getFontMetrics().descent());
if (labelSize.width() > maxDragLabelStringWidthDIP) {
labelSize.setWidth(maxDragLabelStringWidthDIP);
@@ -223,8 +231,8 @@ std::unique_ptr<DragImage> DragImage::create(const KURL& url,
if (drawURLString) {
urlStringSize.setWidth(urlFont.width(urlRun));
- urlStringSize.setHeight(urlFont.getFontMetrics().ascent() +
- urlFont.getFontMetrics().descent());
+ urlStringSize.setHeight(urlFontData->getFontMetrics().ascent() +
+ urlFontData->getFontMetrics().descent());
imageSize.setHeight(imageSize.height() + urlStringSize.height());
if (urlStringSize.width() > maxDragLabelStringWidthDIP) {
imageSize.setWidth(maxDragLabelStringWidthDIP);
@@ -260,9 +268,10 @@ std::unique_ptr<DragImage> DragImage::create(const KURL& url,
if (clipURLString)
urlString = StringTruncator::centerTruncate(
urlString, imageSize.width() - (kDragLabelBorderX * 2.0f), urlFont);
- IntPoint textPos(kDragLabelBorderX,
- imageSize.height() - (kLabelBorderYOffset +
- urlFont.getFontMetrics().descent()));
+ IntPoint textPos(
+ kDragLabelBorderX,
+ imageSize.height() -
+ (kLabelBorderYOffset + urlFontData->getFontMetrics().descent()));
TextRun textRun(urlString);
urlFont.drawText(buffer->canvas(), TextRunPaintInfo(textRun), textPos,
deviceScaleFactor, textPaint);

Powered by Google App Engine
This is Rietveld 408576698