Static assert bounds of PP_TextRenderingMode and FPDF_TEXT_RENDERMODE
PDFium's FPDFText_GetTextRenderMode() is technically an experimental API, but it guarantees to return enum values within a certain range. By statically asserting the bounds of FPDF_TEXT_RENDERMODE, we can simply DCHECK the returned value of FPDFText_GetTextRenderMode() against those bounds instead of handling an out-of-bounds value in runtime. Change-Id: I89d377eeaaab5186712e6b85683bf658590eab53 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2567452 Commit-Queue: Daniel Hosseinian <dhoss@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Cr-Commit-Position: refs/heads/master@{#833068}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
c9e8e130c7
commit
bf0cba7c9c
@ -259,6 +259,8 @@ STATIC_ASSERT_ENUM(PP_PRIVATEDUPLEXMODE_SIMPLEX, Simplex);
|
||||
STATIC_ASSERT_ENUM(PP_PRIVATEDUPLEXMODE_SHORT_EDGE, DuplexFlipShortEdge);
|
||||
STATIC_ASSERT_ENUM(PP_PRIVATEDUPLEXMODE_LONG_EDGE, DuplexFlipLongEdge);
|
||||
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_UNKNOWN, FPDF_TEXTRENDERMODE_UNKNOWN);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_FIRST, FPDF_TEXTRENDERMODE_UNKNOWN);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_FILL, FPDF_TEXTRENDERMODE_FILL);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_STROKE, FPDF_TEXTRENDERMODE_STROKE);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_FILLSTROKE,
|
||||
@ -272,6 +274,7 @@ STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_STROKECLIP,
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_FILLSTROKECLIP,
|
||||
FPDF_TEXTRENDERMODE_FILL_STROKE_CLIP);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_CLIP, FPDF_TEXTRENDERMODE_CLIP);
|
||||
STATIC_ASSERT_ENUM(PP_TEXTRENDERINGMODE_LAST, FPDF_TEXTRENDERMODE_LAST);
|
||||
|
||||
STATIC_ASSERT_ENUM(chrome_pdf::PDFEngine::FormType::kNone, FORMTYPE_NONE);
|
||||
STATIC_ASSERT_ENUM(chrome_pdf::PDFEngine::FormType::kAcroForm,
|
||||
|
@ -396,12 +396,9 @@ void PDFiumPage::CalculateTextRunStyleInfo(
|
||||
}
|
||||
|
||||
int render_mode = FPDFText_GetTextRenderMode(text_page, char_index);
|
||||
if (render_mode < PP_TEXTRENDERINGMODE_FIRST ||
|
||||
render_mode > PP_TEXTRENDERINGMODE_LAST) {
|
||||
style_info->render_mode = PP_TEXTRENDERINGMODE_UNKNOWN;
|
||||
} else {
|
||||
style_info->render_mode = static_cast<PP_TextRenderingMode>(render_mode);
|
||||
}
|
||||
DCHECK_GE(render_mode, PP_TEXTRENDERINGMODE_FIRST);
|
||||
DCHECK_LE(render_mode, PP_TEXTRENDERINGMODE_LAST);
|
||||
style_info->render_mode = static_cast<PP_TextRenderingMode>(render_mode);
|
||||
}
|
||||
|
||||
bool PDFiumPage::AreTextStyleEqual(
|
||||
|
Reference in New Issue
Block a user