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: */