Fix a JPEG2000 decoding regression

When neither the PDF nor the JPEG2000 image provides a colorspace, treat
images with 3 channels as though they are RGB and decode them, instead
of giving up and not decoding at all.

This fixes a regression from CL [1], and also reverts the change to
testing/resources/pixel/bug_304_expected.pdf.0.png from that CL.
Although Acrobat Reader rejects the image in the top-left quadrant and
renders it as white, most other PDF implementations will render is as
red.

[1] https://pdfium-review.googlesource.com/104031

Bug: 430651971
Change-Id: I1bc40492671bd0e2bd39cab063d30157dce92e63
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/134150
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_dib.cpp b/core/fpdfapi/page/cpdf_dib.cpp
index 13bfda2..be46268 100644
--- a/core/fpdfapi/page/cpdf_dib.cpp
+++ b/core/fpdfapi/page/cpdf_dib.cpp
@@ -184,6 +184,9 @@
   switch (jpx_info.colorspace) {
     case OPJ_CLRSPC_UNKNOWN:
     case OPJ_CLRSPC_UNSPECIFIED:
+      return jpx_info.channels == 3 ? JpxDecodeAction::kUseRgb
+                                    : JpxDecodeAction::kDoNothing;
+
     case OPJ_CLRSPC_SYCC:
     case OPJ_CLRSPC_EYCC:
       return JpxDecodeAction::kDoNothing;
@@ -201,11 +204,12 @@
   NOTREACHED();
 }
 
-int GetComponentCountFromOpjColorSpace(OPJ_COLOR_SPACE colorspace) {
-  switch (colorspace) {
+int GetComponentCountFromJpxImageInfo(
+    const CJPX_Decoder::JpxImageInfo& jpx_info) {
+  switch (jpx_info.colorspace) {
     case OPJ_CLRSPC_UNKNOWN:
     case OPJ_CLRSPC_UNSPECIFIED:
-      return 0;
+      return jpx_info.channels;
 
     case OPJ_CLRSPC_GRAY:
       return 1;
@@ -268,7 +272,7 @@
     // components count.
     if (!pdf_colorspace) {
       conversion.jpx_components_count_ =
-          GetComponentCountFromOpjColorSpace(jpx_info.colorspace);
+          GetComponentCountFromJpxImageInfo(jpx_info);
     }
     return conversion;
   }
diff --git a/testing/resources/pixel/bug_304_expected.pdf.0.png b/testing/resources/pixel/bug_304_expected.pdf.0.png
index 62de87b..e1b3d43 100644
--- a/testing/resources/pixel/bug_304_expected.pdf.0.png
+++ b/testing/resources/pixel/bug_304_expected.pdf.0.png
Binary files differ