Add method CFX_WindowsRenderDevice::DebugVerifyBitmapIsPreMultiplied().
When rendering PDFs on a Windows platform, CFX_WindowsRenderDevice is
always used, and its |m_pDeviceDriver| can never be type
CFX_SkiaDeviceDriver even when Skia is enabled.
However, when Skia is enabled, the rendering process still checks
whether bitmap is pre-multiplied assuming CFX_SkiaDeviceDriver is the
only driver type that's being used, which causes crashes since
CFX_WindowsRenderDevice doesn't have a matching method
DebugVerifyBitmapIsPreMultiplied() for its possible device drivers and
CFX_RenderDevice::DebugVerifyBitmapIsPreMultiplied() gets called.
This CL adds the method
CFX_WindowsRenderDevice::DebugVerifyBitmapIsPreMultiplied() so that for
rendering with Skia on Windows, we can still verify the bitmap is
pre-multiplied without the device driver being CFX_SkiaDeviceDriver
type. This CL also enables the two Windows embedder tests which crash
due to missing this method.
Bug: pdfium:1500
Change-Id: Ie6d22200f44376dd88852da2450ae8f3e6065d5c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/76016
Reviewed-by: Daniel Hosseinian <dhoss@chromium.org>
Commit-Queue: Hui Yingst <nigi@chromium.org>
diff --git a/core/fxge/cfx_windowsrenderdevice.cpp b/core/fxge/cfx_windowsrenderdevice.cpp
index 3f40c7a..698a4d6 100644
--- a/core/fxge/cfx_windowsrenderdevice.cpp
+++ b/core/fxge/cfx_windowsrenderdevice.cpp
@@ -462,3 +462,9 @@
}
CFX_WindowsRenderDevice::~CFX_WindowsRenderDevice() = default;
+
+#if defined(_SKIA_SUPPORT_)
+void CFX_WindowsRenderDevice::DebugVerifyBitmapIsPreMultiplied() const {
+ ASSERT(GetDeviceCaps(FXDC_BITS_PIXEL) == 32);
+}
+#endif
diff --git a/core/fxge/cfx_windowsrenderdevice.h b/core/fxge/cfx_windowsrenderdevice.h
index 84b34d6..a356dc6 100644
--- a/core/fxge/cfx_windowsrenderdevice.h
+++ b/core/fxge/cfx_windowsrenderdevice.h
@@ -39,6 +39,10 @@
public:
CFX_WindowsRenderDevice(HDC hDC, const EncoderIface* pEncoderIface);
~CFX_WindowsRenderDevice() override;
+
+#if defined(_SKIA_SUPPORT_)
+ void DebugVerifyBitmapIsPreMultiplied() const override;
+#endif
};
#endif // CORE_FXGE_CFX_WINDOWSRENDERDEVICE_H_
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 4e52863..193f372 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -1478,13 +1478,7 @@
}
};
-// TODO(crbug.com/pdfium/1500): Fix this test and enable.
-#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#define MAYBE_Rectangles DISABLED_Rectangles
-#else
-#define MAYBE_Rectangles Rectangles
-#endif
-TEST_F(PostScriptLevel2EmbedderTest, MAYBE_Rectangles) {
+TEST_F(PostScriptLevel2EmbedderTest, Rectangles) {
ASSERT_TRUE(OpenDocument("rectangles.pdf"));
FPDF_PAGE page = LoadPage(0);
ASSERT_TRUE(page);
@@ -1501,13 +1495,7 @@
UnloadPage(page);
}
-// TODO(crbug.com/pdfium/1500): Fix this test and enable.
-#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#define MAYBE_Rectangles DISABLED_Rectangles
-#else
-#define MAYBE_Rectangles Rectangles
-#endif
-TEST_F(PostScriptLevel3EmbedderTest, MAYBE_Rectangles) {
+TEST_F(PostScriptLevel3EmbedderTest, Rectangles) {
ASSERT_TRUE(OpenDocument("rectangles.pdf"));
FPDF_PAGE page = LoadPage(0);
ASSERT_TRUE(page);