diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-05-13 11:45:37 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-05-13 12:24:23 +0200 |
commit | 013a4f1f5c9ea5fb511568c53a7e76d1b365a65d (patch) | |
tree | fcd0a9c9405a45535160a93f22ec1ce65416fe43 /sw/qa | |
parent | 54387d1d35cb79a30be208052831de74efd8b2f2 (diff) |
sw XHTML export: fix handling of list labels
This is building on top of commit
119b6876c92e4cdae44583c4b1b1419d3533e3ee (sw XHTML export: properly
write <li>...</li> around multiple paragraphs, 2020-05-21), but the
use-case here is a numbering with list labels only.
The first problem was that the list label had its <li> suppressed, but
not its </li>.
The other problem is that <ul> can only have <li> child elements, so at
least fix the case where the list only has list labels, in which case
even <ul> and </ul> should be omitted.
Change-Id: Id38978a40d8618f483e3e9d499f75838d5b2adb0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115543
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/extras/htmlexport/htmlexport.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx index 200aa3f9d3d9..1d56b2b23d3c 100644 --- a/sw/qa/extras/htmlexport/htmlexport.cxx +++ b/sw/qa/extras/htmlexport/htmlexport.cxx @@ -1386,6 +1386,37 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqifObjdataPresentationDataSize) CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(565994), aOle1Reader.m_nPresentationDataSize); } +CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testListHeading) +{ + // Given a document with a list heading: + loadURL("private:factory/swriter", nullptr); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + SwWrtShell* pWrtShell = pTextDoc->GetDocShell()->GetWrtShell(); + pWrtShell->Insert("list header"); + SwDoc* pDoc = pWrtShell->GetDoc(); + sal_uInt16 nPos = pDoc->MakeNumRule(pDoc->GetUniqueNumRuleName()); + SwNumRule* pNumRule = pDoc->GetNumRuleTable()[nPos]; + SwNode& rNode = pWrtShell->GetCursor()->GetPoint()->nNode.GetNode(); + SwTextNode& rTextNode = *rNode.GetTextNode(); + rTextNode.SetAttr(SwNumRuleItem(pNumRule->GetName())); + rTextNode.SetCountedInList(false); + + // When exporting to ReqIF: + ExportToReqif(); + + // Then make sure the output is valid xhtml: + SvMemoryStream aStream; + HtmlExportTest::wrapFragment(maTempFile, aStream); + xmlDocUniquePtr pXmlDoc = parseXmlStream(&aStream); + CPPUNIT_ASSERT(pDoc); + + // Without the accompanying fix in place, this test would have failed: + // - expected: <div><p>...</p></div> + // - actual : <div><ol><p>...</p></li></ol></div> + // because a </li> but no <li> is not well-formed and <ol> with a non-li children is invalid. + assertXPathContent(pXmlDoc, "/reqif-xhtml:html/reqif-xhtml:div/reqif-xhtml:p", "list header"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |