sw/qa/extras/htmlimport/data/reqif-page-style.xhtml | 1 sw/qa/extras/htmlimport/htmlimport.cxx | 8 +++++ sw/source/filter/html/swhtml.cxx | 31 ++++++++++++-------- sw/source/filter/html/swhtml.hxx | 6 +-- sw/source/filter/inc/fltini.hxx | 5 +++ 5 files changed, 36 insertions(+), 15 deletions(-)
New commits: commit 4168118731f5e89bd945c7504d14d30c77dea138 Author: Miklos Vajna <[email protected]> AuthorDate: Thu Oct 25 14:22:02 2018 +0200 Commit: Miklos Vajna <[email protected]> CommitDate: Thu Oct 25 18:00:43 2018 +0200 sw HTML import: avoid custom default page style in reqif mode Would be "HTML" by default, but reqif-html is mostly very simple documents and the custom page styles is unexpected. Reviewed-on: https://gerrit.libreoffice.org/62317 Reviewed-by: Miklos Vajna <[email protected]> Tested-by: Jenkins (cherry picked from commit 094e7b6a1028620c2b1503de8b51dc6a2482e290) Conflicts: sw/source/filter/html/swhtml.cxx sw/source/filter/html/swhtml.hxx Change-Id: I3f1b293bcd074305cf5cc87f03248e934d5fac4d diff --git a/sw/qa/extras/htmlimport/data/reqif-page-style.xhtml b/sw/qa/extras/htmlimport/data/reqif-page-style.xhtml new file mode 100644 index 000000000000..36f5aa11768b --- /dev/null +++ b/sw/qa/extras/htmlimport/data/reqif-page-style.xhtml @@ -0,0 +1 @@ +<reqif-xhtml:p>aaa<reqif-xhtml:br/>bbb</reqif-xhtml:p> diff --git a/sw/qa/extras/htmlimport/htmlimport.cxx b/sw/qa/extras/htmlimport/htmlimport.cxx index 91e33f863d07..4d5cdb5c37b6 100644 --- a/sw/qa/extras/htmlimport/htmlimport.cxx +++ b/sw/qa/extras/htmlimport/htmlimport.cxx @@ -269,6 +269,14 @@ DECLARE_HTMLIMPORT_TEST(testReqIfTable, "reqif-table.xhtml") CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(COL_TRANSPARENT), getProperty<sal_Int32>(xCell, "BackColor")); } +DECLARE_HTMLIMPORT_TEST(testReqIfPageStyle, "reqif-page-style.xhtml") +{ + // Without the accompanying fix in place, this test would have failed with + // 'Expected: Standard, Actual : HTML'. + CPPUNIT_ASSERT_EQUAL(OUString("Standard"), + getProperty<OUString>(getParagraph(1), "PageStyleName")); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index 2dc52ea140e9..1fa50556e127 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -198,6 +198,8 @@ bool HTMLReader::SetStrmStgPtr() // Aufruf fuer die allg. Reader-Schnittstelle sal_uLong HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, const OUString & rName ) { + SetupFilterOptions(); + if( !pStrm ) { OSL_ENSURE( pStrm, "HTML-Read without stream" ); @@ -210,7 +212,7 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, // Set the HTML page style, when it isn't a HTML document, // otherwise it's already set. - if( !rDoc.getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) ) + if( !rDoc.getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) && m_aNamespace != "reqif-xhtml" ) { rDoc.getIDocumentContentOperations().InsertPoolItem( rPam, SwFormatPageDesc( rDoc.getIDocumentStylePoolAccess().GetPageDescFromPool( RES_POOLPAGE_HTML, false )) ); @@ -223,7 +225,7 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPam, tools::SvRef<SwHTMLParser> xParser = new SwHTMLParser( &rDoc, rPam, *pStrm, rName, rBaseURL, !bInsertMode, pMedium, IsReadUTF8(), - bIgnoreHTMLComments ); + bIgnoreHTMLComments, m_aNamespace ); SvParserState eState = xParser->CallParser(); @@ -247,7 +249,8 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn, const OUString& rBaseURL, bool bReadNewDoc, SfxMedium* pMed, bool bReadUTF8, - bool bNoHTMLComments ) + bool bNoHTMLComments, + const OUString& rNamespace ) : SfxHTMLParser( rIn, bReadNewDoc, pMed ), SwClient( nullptr ), m_aPathToFile( rPath ), @@ -415,7 +418,13 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn, } } - SetupFilterOptions(); + if (!rNamespace.isEmpty()) + { + SetNamespace(rNamespace); + m_bXHTML = true; + if (rNamespace == "reqif-xhtml") + m_bReqIF = true; + } } SwHTMLParser::~SwHTMLParser() @@ -5564,12 +5573,15 @@ void SwHTMLParser::AddMetaUserDefined( OUString const & i_rMetaName ) } } -void SwHTMLParser::SetupFilterOptions() +void HTMLReader::SetupFilterOptions() { - if (!GetMedium()) + // Reset state from previous Read() invocation. + m_aNamespace.clear(); + + if (!pMedium) return; - const SfxItemSet* pItemSet = GetMedium()->GetItemSet(); + const SfxItemSet* pItemSet = pMedium->GetItemSet(); if (!pItemSet) return; @@ -5582,10 +5594,7 @@ void SwHTMLParser::SetupFilterOptions() if (aFilterOptions.startsWith(aXhtmlNsKey)) { OUString aNamespace = aFilterOptions.copy(aXhtmlNsKey.getLength()); - SetNamespace(aNamespace); - m_bXHTML = true; - if (aNamespace == "reqif-xhtml") - m_bReqIF = true; + m_aNamespace = aNamespace; } } diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx index 05aa01fa6431..41ad4af41332 100644 --- a/sw/source/filter/html/swhtml.hxx +++ b/sw/source/filter/html/swhtml.hxx @@ -865,9 +865,6 @@ private: bool HasCurrentParaFlys( bool bNoSurroundOnly = false, bool bSurroundOnly = false ) const; - /// Parse FilterOptions passed to the importer. - void SetupFilterOptions(); - public: // used in tables // Create brush item (with new) or 0 @@ -894,7 +891,8 @@ public: const OUString& rBaseURL, bool bReadNewDoc, SfxMedium* pMed = nullptr, bool bReadUTF8 = false, - bool bIgnoreHTMLComments = false ); + bool bIgnoreHTMLComments = false, + const OUString& rNamespace = OUString()); virtual SvParserState CallParser() override; diff --git a/sw/source/filter/inc/fltini.hxx b/sw/source/filter/inc/fltini.hxx index 7e01449b1b3c..01db2ec737c7 100644 --- a/sw/source/filter/inc/fltini.hxx +++ b/sw/source/filter/inc/fltini.hxx @@ -35,6 +35,11 @@ class HTMLReader: public Reader virtual bool SetStrmStgPtr() override; virtual sal_uLong Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override; virtual OUString GetTemplateName(SwDoc& rDoc) const override; + + /// Parse FilterOptions passed to the importer. + void SetupFilterOptions(); + + OUString m_aNamespace; public: HTMLReader(); }; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
