From ecd063eccdb25cbb573d01fc512a3d40322761be Mon Sep 17 00:00:00 2001 From: Julian Lunger Date: Wed, 27 Dec 2017 10:18:50 -0500 Subject: Expose marked content IDs for images and alt text. - Adds two new public bits of API: - StructElement_GetMCID(STRUCTELEMENT) to return the marked content ID of the struct element. - IMAGEOBJ_METADATA.mcid to contain the marked content ID of the image. - Restores ContentMark::GetMCID, which was removed with other dead code in https://pdfium-review.googlesource.com/c/pdfium/+/19170. - Adds a couple calls to tests, including a simple new PDF to test the struct tree marked content ID. Bug:pdfium:957 Change-Id: I92856e43d741df989e53a575a08258da19a39f22 Reviewed-on: https://pdfium-review.googlesource.com/20632 Reviewed-by: Lei Zhang Commit-Queue: Lei Zhang --- fpdfsdk/fpdf_structtree_embeddertest.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'fpdfsdk/fpdf_structtree_embeddertest.cpp') diff --git a/fpdfsdk/fpdf_structtree_embeddertest.cpp b/fpdfsdk/fpdf_structtree_embeddertest.cpp index 05b77fc0f7..7ca81f7b2e 100644 --- a/fpdfsdk/fpdf_structtree_embeddertest.cpp +++ b/fpdfsdk/fpdf_structtree_embeddertest.cpp @@ -6,6 +6,7 @@ #include "public/fpdf_structtree.h" #include "testing/embedder_test.h" #include "testing/test_support.h" +#include "third_party/base/optional.h" class FPDFStructTreeEmbeddertest : public EmbedderTest {}; @@ -24,6 +25,7 @@ TEST_F(FPDFStructTreeEmbeddertest, GetAltText) { EXPECT_EQ(nullptr, element); element = FPDF_StructTree_GetChildAtIndex(struct_tree, 0); ASSERT_NE(nullptr, element); + EXPECT_EQ(-1, FPDF_StructElement_GetMarkedContentID(element)); EXPECT_EQ(0U, FPDF_StructElement_GetAltText(element, nullptr, 0)); ASSERT_EQ(1, FPDF_StructElement_CountChildren(element)); @@ -34,6 +36,7 @@ TEST_F(FPDFStructTreeEmbeddertest, GetAltText) { EXPECT_EQ(nullptr, child_element); child_element = FPDF_StructElement_GetChildAtIndex(element, 0); ASSERT_NE(nullptr, child_element); + EXPECT_EQ(-1, FPDF_StructElement_GetMarkedContentID(child_element)); EXPECT_EQ(0U, FPDF_StructElement_GetAltText(child_element, nullptr, 0)); ASSERT_EQ(1, FPDF_StructElement_CountChildren(child_element)); @@ -44,6 +47,7 @@ TEST_F(FPDFStructTreeEmbeddertest, GetAltText) { EXPECT_EQ(nullptr, gchild_element); gchild_element = FPDF_StructElement_GetChildAtIndex(child_element, 0); ASSERT_NE(nullptr, gchild_element); + EXPECT_EQ(-1, FPDF_StructElement_GetMarkedContentID(gchild_element)); ASSERT_EQ(24U, FPDF_StructElement_GetAltText(gchild_element, nullptr, 0)); unsigned short buffer[12]; @@ -54,6 +58,7 @@ TEST_F(FPDFStructTreeEmbeddertest, GetAltText) { for (size_t i = 0; i < FX_ArraySize(buffer); ++i) EXPECT_EQ(0U, buffer[i]); + EXPECT_EQ(-1, FPDF_StructElement_GetMarkedContentID(gchild_element)); ASSERT_EQ(24U, FPDF_StructElement_GetAltText(gchild_element, buffer, sizeof(buffer))); const wchar_t kExpected[] = L"Black Image"; @@ -69,6 +74,22 @@ TEST_F(FPDFStructTreeEmbeddertest, GetAltText) { FPDF_ClosePage(page); } +TEST_F(FPDFStructTreeEmbeddertest, GetMarkedContentID) { + ASSERT_TRUE(OpenDocument("marked_content_id.pdf")); + FPDF_PAGE page = LoadPage(0); + ASSERT_TRUE(page); + + FPDF_STRUCTTREE struct_tree = FPDF_StructTree_GetForPage(page); + ASSERT_TRUE(struct_tree); + ASSERT_EQ(1, FPDF_StructTree_CountChildren(struct_tree)); + + FPDF_STRUCTELEMENT element = FPDF_StructTree_GetChildAtIndex(struct_tree, 0); + EXPECT_EQ(0, FPDF_StructElement_GetMarkedContentID(element)); + + FPDF_StructTree_Close(struct_tree); + FPDF_ClosePage(page); +} + TEST_F(FPDFStructTreeEmbeddertest, GetType) { ASSERT_TRUE(OpenDocument("tagged_alt_text.pdf")); FPDF_PAGE page = LoadPage(0); -- cgit v1.2.3