Realize objects created with FPDF_NewFormObjectFromXObject().

Currently, when FPDF_NewFormObjectFromXObject() creates an object, that
object does not work as intended when inserted into a document. It does
not render and has 0x0 bounds. Fix this issue by adding a missing
CPDF_Form::ParseContent() call.

Bug: pdfium:1905
Change-Id: I34d0bacbb586dfab0d41c077b49bc8b3f04a927d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/99633
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp
index a8df848..d29857a 100644
--- a/fpdfsdk/fpdf_ppo.cpp
+++ b/fpdfsdk/fpdf_ppo.cpp
@@ -815,6 +815,7 @@
   constexpr int kNoContentStream = CPDF_PageObject::kNoContentStream;
   auto form = std::make_unique<CPDF_Form>(xobj->dest_doc, nullptr,
                                           xobj->xobject, nullptr);
+  form->ParseContent(nullptr, nullptr, nullptr);
   auto form_object = std::make_unique<CPDF_FormObject>(
       kNoContentStream, std::move(form), CFX_Matrix());
   return FPDFPageObjectFromCPDFPageObject(form_object.release());
diff --git a/fpdfsdk/fpdf_ppo_embeddertest.cpp b/fpdfsdk/fpdf_ppo_embeddertest.cpp
index 5afcefe..1beae05 100644
--- a/fpdfsdk/fpdf_ppo_embeddertest.cpp
+++ b/fpdfsdk/fpdf_ppo_embeddertest.cpp
@@ -194,22 +194,19 @@
       FPDFPage_InsertObject(page.get(), page_object);
       EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
 
-      // TODO(thestig): This should have `checksum`.
       ScopedFPDFBitmap page_bitmap = RenderPage(page.get());
-      CompareBitmap(page_bitmap.get(), 612, 792,
-                    pdfium::kBlankPage612By792Checksum);
+      CompareBitmap(page_bitmap.get(), 612, 792, checksum);
 
-      // TODO(crbug.com/pdfium/1905): These should have non-zero values.
       float left;
       float bottom;
       float right;
       float top;
       ASSERT_TRUE(
           FPDFPageObj_GetBounds(page_object, &left, &bottom, &right, &top));
-      EXPECT_FLOAT_EQ(0.0f, left);
-      EXPECT_FLOAT_EQ(0.0f, bottom);
-      EXPECT_FLOAT_EQ(0.0f, right);
-      EXPECT_FLOAT_EQ(0.0f, top);
+      EXPECT_FLOAT_EQ(-1.0f, left);
+      EXPECT_FLOAT_EQ(-1.0f, bottom);
+      EXPECT_FLOAT_EQ(201.0f, right);
+      EXPECT_FLOAT_EQ(301.0f, top);
     }
 
     EXPECT_TRUE(FPDF_SaveAsCopy(output_doc.get(), this, 0));
@@ -301,9 +298,8 @@
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
 
   {
-    // TODO(thestig): This should have `checksum`.
     ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-    CompareBitmap(bitmap.get(), 200, 300, pdfium::RectanglesChecksum());
+    CompareBitmap(bitmap.get(), 200, 300, checksum);
   }
 
   FPDF_CloseXObject(xobject);