Runtime renderer selection for embedder tests Add new command line flag for embedder tests to request the renderer to use. This is available for Skia builds, which is the configuration where runtime selection is available. Bug: pdfium:1878 Change-Id: I2573680b0e8e6507243c42f5c8745842bbeee3a6 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97030 Reviewed-by: Nigi <nigi@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Alan Screen <awscreen@chromium.org>
diff --git a/testing/embedder_test_environment.cpp b/testing/embedder_test_environment.cpp index dec8de0..77e89f6 100644 --- a/testing/embedder_test_environment.cpp +++ b/testing/embedder_test_environment.cpp
@@ -8,6 +8,7 @@ #include "core/fxcrt/fx_system.h" #include "public/fpdfview.h" +#include "testing/command_line_helpers.h" #include "third_party/base/check.h" #ifdef PDF_ENABLE_V8 @@ -20,7 +21,8 @@ } // namespace -EmbedderTestEnvironment::EmbedderTestEnvironment() { +EmbedderTestEnvironment::EmbedderTestEnvironment() + : renderer_type_(GetDefaultRendererType()) { DCHECK(!g_environment); g_environment = this; } @@ -37,7 +39,7 @@ void EmbedderTestEnvironment::SetUp() { FPDF_LIBRARY_CONFIG config; - config.version = 3; + config.version = 4; config.m_pUserFontPaths = nullptr; config.m_v8EmbedderSlot = 0; config.m_pPlatform = nullptr; @@ -51,6 +53,7 @@ config.m_pIsolate = nullptr; config.m_pPlatform = nullptr; #endif // PDF_ENABLE_V8 + config.m_RendererType = renderer_type_; FPDF_InitLibraryWithConfig(&config); @@ -67,8 +70,24 @@ } void EmbedderTestEnvironment::AddFlag(const std::string& flag) { - if (flag == "--write-pngs") + if (flag == "--write-pngs") { write_pngs_ = true; - else - std::cerr << "Unknown flag: " << flag << "\n"; + return; + } +#if defined(_SKIA_SUPPORT_) + std::string value; + if (ParseSwitchKeyValue(flag, "--use-renderer=", &value)) { + if (value == "agg") { + renderer_type_ = FPDF_RENDERERTYPE_AGG; + } else if (value == "skia") { + renderer_type_ = FPDF_RENDERERTYPE_SKIA; + } else { + std::cerr << "Invalid --use-renderer argument, value must be one of agg " + "or skia\n"; + } + return; + } +#endif // defined(_SKIA_SUPPORT_) + + std::cerr << "Unknown flag: " << flag << "\n"; }
diff --git a/testing/embedder_test_environment.h b/testing/embedder_test_environment.h index cf7c8c1..2f98716 100644 --- a/testing/embedder_test_environment.h +++ b/testing/embedder_test_environment.h
@@ -31,6 +31,7 @@ private: void AddFlag(const std::string& flag); + FPDF_RENDERER_TYPE renderer_type_; bool write_pngs_ = false; TestFonts test_fonts_; };