Modified embeddertests for FPDF_StructElement.
- Added title "TitleText" to test file tagged_alt_text.in and built
matching binary file tagged_alt_text.pdf.
- Added embeddertest for FPDF_StructElement_GetTitle().
- Added checks for nullptr parameters for the test of
FPDF_StructElement_GetType().
BUG=pdfium:1242
Change-Id: I993bf40c3dff3773bafb546887d24661624fac0a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/54492
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_structtree_embeddertest.cpp b/fpdfsdk/fpdf_structtree_embeddertest.cpp
index a754c08..c68e2eb 100644
--- a/fpdfsdk/fpdf_structtree_embeddertest.cpp
+++ b/fpdfsdk/fpdf_structtree_embeddertest.cpp
@@ -107,7 +107,12 @@
FPDF_StructTree_GetChildAtIndex(struct_tree.get(), 0);
ASSERT_NE(nullptr, element);
+ // test nullptr inputs
unsigned short buffer[12];
+ ASSERT_EQ(0U, FPDF_StructElement_GetType(nullptr, buffer, sizeof(buffer)));
+ ASSERT_EQ(0U, FPDF_StructElement_GetType(nullptr, nullptr, 0));
+ ASSERT_EQ(18U, FPDF_StructElement_GetType(element, nullptr, 0));
+
memset(buffer, 0, sizeof(buffer));
// Deliberately pass in a small buffer size to make sure |buffer| remains
// untouched.
@@ -123,3 +128,41 @@
UnloadPage(page);
}
+
+TEST_F(FPDFStructTreeEmbedderTest, GetTitle) {
+ ASSERT_TRUE(OpenDocument("tagged_alt_text.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ {
+ ScopedFPDFStructTree struct_tree(FPDF_StructTree_GetForPage(page));
+ ASSERT_TRUE(struct_tree);
+ ASSERT_EQ(1, FPDF_StructTree_CountChildren(struct_tree.get()));
+
+ FPDF_STRUCTELEMENT element =
+ FPDF_StructTree_GetChildAtIndex(struct_tree.get(), 0);
+ ASSERT_NE(nullptr, element);
+
+ // test nullptr inputs
+ unsigned short buffer[12];
+ ASSERT_EQ(0U, FPDF_StructElement_GetTitle(nullptr, buffer, sizeof(buffer)));
+ ASSERT_EQ(0U, FPDF_StructElement_GetTitle(nullptr, nullptr, 0));
+ ASSERT_EQ(20U, FPDF_StructElement_GetTitle(element, nullptr, 0));
+
+ memset(buffer, 0, sizeof(buffer));
+ // Deliberately pass in a small buffer size to make sure |buffer| remains
+ // untouched.
+ ASSERT_EQ(20U, FPDF_StructElement_GetTitle(element, buffer, 1));
+ for (size_t i = 0; i < FX_ArraySize(buffer); ++i)
+ EXPECT_EQ(0U, buffer[i]);
+
+ ASSERT_EQ(20U,
+ FPDF_StructElement_GetTitle(element, buffer, sizeof(buffer)));
+
+ const wchar_t kExpected[] = L"TitleText";
+ EXPECT_EQ(WideString(kExpected),
+ WideString::FromUTF16LE(buffer, FXSYS_len(kExpected)));
+ }
+
+ UnloadPage(page);
+}
diff --git a/testing/resources/tagged_alt_text.in b/testing/resources/tagged_alt_text.in
index c092540..7ea5ac0 100644
--- a/testing/resources/tagged_alt_text.in
+++ b/testing/resources/tagged_alt_text.in
@@ -128,6 +128,7 @@
/Type /StructElem
/S /Document
/K [12 0 R]
+ /T (TitleText)
/P 8 0 R
/Pg 3 0 R
>>
diff --git a/testing/resources/tagged_alt_text.pdf b/testing/resources/tagged_alt_text.pdf
index 7f44e98..73b4988 100644
--- a/testing/resources/tagged_alt_text.pdf
+++ b/testing/resources/tagged_alt_text.pdf
@@ -129,6 +129,7 @@
/Type /StructElem
/S /Document
/K [12 0 R]
+ /T (TitleText)
/P 8 0 R
/Pg 3 0 R
>>
@@ -169,13 +170,13 @@
0000001412 00000 n
0000001454 00000 n
0000001612 00000 n
-0000001706 00000 n
-0000001813 00000 n
-0000001931 00000 n
+0000001723 00000 n
+0000001830 00000 n
+0000001948 00000 n
trailer <<
/Root 1 0 R
/Size 15
>>
startxref
-1986
+2003
%%EOF