sd/qa/unit/tiledrendering/data/link_2p.pdf    |binary
 sd/qa/unit/tiledrendering/tiledrendering2.cxx |   34 ++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

New commits:
commit 51fa8f5c302cd1103bb80d92c9e02a1395526de2
Author:     Jaume Pujantell <jaume.pujant...@collabora.com>
AuthorDate: Wed Jul 16 13:55:29 2025 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Jul 17 09:04:36 2025 +0200

    lokit pdfium: test link data
    
    Unit test for commits  3217f0d4b368a96b30909e2aa7d4afc9a985a88b and
    3217f0d4b368a96b30909e2aa7d4afc9a985a88b about sending link data when
    using PDFium in LOKit.
    
    Change-Id: I82a3f2c72f0e1a97300953850349267638717e13
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187961
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/sd/qa/unit/tiledrendering/data/link_2p.pdf 
b/sd/qa/unit/tiledrendering/data/link_2p.pdf
new file mode 100644
index 000000000000..cb737de4f6e0
Binary files /dev/null and b/sd/qa/unit/tiledrendering/data/link_2p.pdf differ
diff --git a/sd/qa/unit/tiledrendering/tiledrendering2.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering2.cxx
index e7c065825fb4..1b2df91f7321 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering2.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering2.cxx
@@ -112,6 +112,40 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testInsertSignatureLineExternal)
     CPPUNIT_ASSERT(!pViewShell->GetViewShell()->GetSignPDFCertificate().Is());
 }
 
+CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testPdfiumLinks)
+{
+    // Given a pdf file with links:
+    SdXImpressDocument* pDoc = createDoc("link_2p.pdf");
+    SdTestViewCallback aView;
+
+    auto get_links_array = [&aView]() -> boost::property_tree::ptree {
+        auto it = aView.m_aStateChanges.find("PageLinks");
+        CPPUNIT_ASSERT(it != aView.m_aStateChanges.end());
+        boost::property_tree::ptree pTree = it->second;
+        auto it2 = pTree.find("state");
+        CPPUNIT_ASSERT(it2 != pTree.not_found());
+        auto it3 = it2->second.find("links");
+        CPPUNIT_ASSERT(it3 != pTree.not_found());
+        return it3->second;
+    };
+
+    // First page has a link
+    pDoc->setPart(0);
+    auto links = get_links_array();
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), links.size());
+    // auto pLinkInfo = links.get_child("");
+    auto pLinkInfo = links.begin()->second;
+    CPPUNIT_ASSERT_EQUAL(std::string("767.28x292.999@(1133.86,2013)"),
+                         
pLinkInfo.get_child("rectangle").get_value<std::string>());
+    CPPUNIT_ASSERT_EQUAL(std::string("http://cidac.pt/";),
+                         pLinkInfo.get_child("uri").get_value<std::string>());
+
+    // Second doesn't
+    pDoc->setPart(1);
+    links = get_links_array();
+    CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), links.size());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to