Refine NeedToPremultiplyBitmap() logic

CFX_DIBitmap::ScopedPremultiplier::NeedToPremultiplyBitmap() determines
if a bitmap needs to be pre-multiplied, yet it does not check the bitmap
at all. This is because it is relying on two crutches:

1) CFX_DIBitmap::PreMultiply() and CFX_DIBitmap::UnPreMultiply() are
   no-ops for formats without alpha.
2) It never handles pre-multiplied bitmaps.

Condition (2) will go away in the future, so anticipate that and change
NeedToPremultiplyBitmap() to check the bitmap's format.

Bug: 42271033
Change-Id: I4d961c5fa20bd254962562e6ce51ef4236ef7360
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/129012
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
diff --git a/core/fxge/dib/cfx_dibitmap.cpp b/core/fxge/dib/cfx_dibitmap.cpp
index 6b9b1ca..de5a5c4 100644
--- a/core/fxge/dib/cfx_dibitmap.cpp
+++ b/core/fxge/dib/cfx_dibitmap.cpp
@@ -977,7 +977,8 @@
 }
 
 bool CFX_DIBitmap::ScopedPremultiplier::NeedToPremultiplyBitmap() const {
-  return CFX_DefaultRenderDevice::UseSkiaRenderer();
+  return CFX_DefaultRenderDevice::UseSkiaRenderer() &&
+         bitmap_->GetFormat() == FXDIB_Format::kBgra;
 }
 
 #endif  // defined(PDF_USE_SKIA)
diff --git a/core/fxge/dib/cfx_dibitmap.h b/core/fxge/dib/cfx_dibitmap.h
index b097936..c5ef3aa 100644
--- a/core/fxge/dib/cfx_dibitmap.h
+++ b/core/fxge/dib/cfx_dibitmap.h
@@ -40,7 +40,8 @@
     ~ScopedPremultiplier();
 
    private:
-    // Returns true if Skia is enabled at runtime.
+    // Returns true if Skia is enabled at runtime and `bitmap_` is an format
+    // that has un-premultiplied alpha.
     bool NeedToPremultiplyBitmap() const;
 
     RetainPtr<CFX_DIBitmap> const bitmap_;