Do more checks in a FPDFPage_RemoveObject() test
Add more checks to FPDFEditEmbedderTest.RemovePageObject to ensure the
text object removal works after calling FPDFPage_GenerateContent(), and
after saving/reloading.
Also rename the test case name to "RemoveTextObject" to reflect the
specific type of page object it is removing.
Change-Id: I997aa16656d73f3b3f372a2c56adb0d22273e95c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/105290
Reviewed-by: Nigi <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index d704f45..ce462d4 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -887,7 +887,7 @@
CloseSavedDocument();
}
-TEST_F(FPDFEditEmbedderTest, RemovePageObject) {
+TEST_F(FPDFEditEmbedderTest, RemoveTextObject) {
// Load document with some text.
ASSERT_TRUE(OpenDocument("hello_world.pdf"));
FPDF_PAGE page = LoadPage(0);
@@ -901,19 +901,31 @@
// Get the "Hello, world!" text object and remove it.
ASSERT_EQ(2, FPDFPage_CountObjects(page));
- FPDF_PAGEOBJECT page_object = FPDFPage_GetObject(page, 0);
- ASSERT_TRUE(page_object);
- EXPECT_TRUE(FPDFPage_RemoveObject(page, page_object));
+ {
+ ScopedFPDFPageObject page_object(FPDFPage_GetObject(page, 0));
+ ASSERT_TRUE(page_object);
+ EXPECT_TRUE(FPDFPage_RemoveObject(page, page_object.get()));
+ }
+ ASSERT_EQ(1, FPDFPage_CountObjects(page));
// Verify the "Hello, world!" text is gone.
{
ScopedFPDFBitmap page_bitmap = RenderPage(page);
CompareBitmap(page_bitmap.get(), 200, 200, FirstRemovedChecksum());
}
- ASSERT_EQ(1, FPDFPage_CountObjects(page));
+
+ // Verify the rendering again after calling FPDFPage_GenerateContent().
+ ASSERT_TRUE(FPDFPage_GenerateContent(page));
+ {
+ ScopedFPDFBitmap page_bitmap = RenderPage(page);
+ CompareBitmap(page_bitmap.get(), 200, 200, FirstRemovedChecksum());
+ }
+
+ // Save the document and verify it after reloading.
+ ASSERT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
+ VerifySavedDocument(200, 200, FirstRemovedChecksum());
UnloadPage(page);
- FPDFPageObj_Destroy(page_object);
}
void CheckMarkCounts(FPDF_PAGE page,