[Skia] Enable FPDFEditEmbedderTest.GetRenderedBitmapHandlesSMask

FPDFBitmapFromCFXDIBitmap() only handles turning an unpremultiplied
CFX_DIBitmap into FPDF_Bitmap. However, the CFX_DIBitmap used by the
render device gets premultiplied when Skia is enabled. To get the
correct FPDF_Bitmap, this CL reverts the `result_bitmap` back to the
unpremultiplied format before calling FPDFBitmapFromCFXDIBitmap().

This CL fixes FPDFEditEmbedderTest.GetRenderedBitmapHandlesSMask. The
Skia rendering results are attached in [1].

[1] https://crbug.com/pdfium/1865#c3

Bug: pdfium:1865
Change-Id: Ieddad4937c382c3098367479387fa35aa832c58d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/95995
Commit-Queue: Nigi <nigi@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index bbcfcd5..d4f5d05 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -3947,14 +3947,7 @@
   UnloadPage(page);
 }
 
-// TODO(crbug.com/pdfium/11): Fix this test and enable.
-#if defined(_SKIA_SUPPORT_)
-#define MAYBE_GetRenderedBitmapHandlesSMask \
-  DISABLED_GetRenderedBitmapHandlesSMask
-#else
-#define MAYBE_GetRenderedBitmapHandlesSMask GetRenderedBitmapHandlesSMask
-#endif
-TEST_F(FPDFEditEmbedderTest, MAYBE_GetRenderedBitmapHandlesSMask) {
+TEST_F(FPDFEditEmbedderTest, GetRenderedBitmapHandlesSMask) {
   ASSERT_TRUE(OpenDocument("matte.pdf"));
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
@@ -3962,6 +3955,17 @@
   constexpr int kExpectedObjects = 4;
   ASSERT_EQ(kExpectedObjects, FPDFPage_CountObjects(page));
 
+  const char* smask_checksum = []() {
+    if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
+      return "5ddf871ab737746b1b8390f0bc4ec52c";
+    return "5a3ae4a660ce919e29c42ec2258142f1";
+  }();
+  const char* no_smask_checksum = []() {
+    if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
+      return "6bb3b5bd93e26f4c2e52db64a1f57686";
+    return "67504e83f5d78214ea00efc19082c5c1";
+  }();
+
   for (int i = 0; i < kExpectedObjects; ++i) {
     FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);
     ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
@@ -3970,9 +3974,9 @@
     ASSERT_TRUE(bitmap);
     EXPECT_EQ(FPDFBitmap_BGRA, FPDFBitmap_GetFormat(bitmap.get()));
     if (i == 0)
-      CompareBitmap(bitmap.get(), 40, 60, "5a3ae4a660ce919e29c42ec2258142f1");
+      CompareBitmap(bitmap.get(), 40, 60, smask_checksum);
     else
-      CompareBitmap(bitmap.get(), 40, 60, "67504e83f5d78214ea00efc19082c5c1");
+      CompareBitmap(bitmap.get(), 40, 60, no_smask_checksum);
   }
 
   UnloadPage(page);
diff --git a/fpdfsdk/fpdf_editimg.cpp b/fpdfsdk/fpdf_editimg.cpp
index 5a40c7b..617a14b 100644
--- a/fpdfsdk/fpdf_editimg.cpp
+++ b/fpdfsdk/fpdf_editimg.cpp
@@ -255,6 +255,10 @@
   if (!renderer.GetResult())
     return nullptr;
 
+#if defined(_SKIA_SUPPORT_)
+  result_bitmap->UnPreMultiply();
+#endif
+
   // Caller takes ownership.
   return FPDFBitmapFromCFXDIBitmap(result_bitmap.Leak());
 }