dev/null                                                   |binary
 sw/CppunitTest_sw_core_header_footer.mk                    |   73 
 sw/Module_sw.mk                                            |    1 
 sw/qa/core/header_footer/HeaderFooterTest.cxx              | 1253 +++++++++++++
 sw/qa/core/header_footer/data/DoubleFirstLeftRight.docx    |binary
 sw/qa/core/header_footer/data/DoubleFirstLeftRight.odt     |binary
 sw/qa/core/header_footer/data/FirstPageHeaderShape.docx    |binary
 sw/qa/core/header_footer/data/FirstPageHeaderShape.odt     |binary
 sw/qa/core/header_footer/data/SimpleFirstLeftRight.docx    |binary
 sw/qa/core/header_footer/data/SimpleFirstLeftRight.odt     |binary
 sw/qa/core/header_footer/data/TestFirstFooterDisabled.docx |binary
 sw/qa/core/header_footer/data/TestPageStyleOnlyLeft.docx   |binary
 sw/qa/core/header_footer/data/tdf135216_evenOddFooter.docx |binary
 sw/qa/extras/odfexport/odfexport.cxx                       |   67 
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx                   |  135 -
 sw/qa/extras/ooxmlexport/ooxmlexport10.cxx                 |   26 
 sw/qa/extras/ooxmlexport/ooxmlexport11.cxx                 |   26 
 sw/qa/extras/ooxmlexport/ooxmlexport14.cxx                 |   43 
 sw/qa/extras/ooxmlexport/ooxmlexport15.cxx                 |   45 
 sw/qa/extras/ooxmlexport/ooxmlexport16.cxx                 |   17 
 sw/qa/extras/ooxmlexport/ooxmlexport2.cxx                  |   67 
 sw/qa/extras/ooxmlexport/ooxmlexport7.cxx                  |   14 
 sw/qa/extras/ooxmlexport/ooxmlexport8.cxx                  |   18 
 sw/qa/extras/ooxmlexport/ooxmlexport9.cxx                  |  127 -
 sw/qa/extras/ooxmlimport/ooxmlimport2.cxx                  |  226 --
 sw/qa/extras/ww8export/ww8export.cxx                       |   20 
 26 files changed, 1327 insertions(+), 831 deletions(-)

New commits:
commit e3fbf91e934d172d16fa5e820b22aa0f5af57c59
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Fri Nov 24 12:55:25 2023 +0900
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Mon Dec 4 08:57:02 2023 +0100

    sw: move header/footer tests to own class in core tests
    
    In addition add some more basic header/footer tests.
    
    This makes refactoring of header and footer OOXML import
    much easier.
    
    Change-Id: I5b3b3714656ba2f7b1dda8d8f067c3bfe68857a3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159946
    Tested-by: Tomaž Vajngerl <qui...@gmail.com>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 9e876c164a1d9e552c08be3112ada09712a20eb3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160136
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sw/CppunitTest_sw_core_header_footer.mk 
b/sw/CppunitTest_sw_core_header_footer.mk
new file mode 100644
index 000000000000..5f1668c3fb49
--- /dev/null
+++ b/sw/CppunitTest_sw_core_header_footer.mk
@@ -0,0 +1,73 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,sw_core_header_footer))
+
+$(eval $(call 
gb_CppunitTest_use_common_precompiled_header,sw_core_header_footer))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sw_core_header_footer, \
+    sw/qa/core/header_footer/HeaderFooterTest \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,sw_core_header_footer, \
+    comphelper \
+    cppu \
+    cppuhelper \
+    sal \
+    sfx \
+    subsequenttest \
+    sw \
+    swqahelper \
+    test \
+    unotest \
+    utl \
+    vcl \
+    svt \
+    tl \
+    svl \
+    svxcore \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,sw_core_header_footer,\
+    boost_headers \
+    libxml2 \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sw_core_header_footer,\
+    -I$(SRCDIR)/sw/inc \
+    -I$(SRCDIR)/sw/source/core/inc \
+    -I$(SRCDIR)/sw/source/uibase/inc \
+    -I$(SRCDIR)/sw/qa/inc \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,sw_core_header_footer,\
+       udkapi \
+       offapi \
+       oovbaapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,sw_core_header_footer))
+$(eval $(call gb_CppunitTest_use_vcl,sw_core_header_footer))
+$(eval $(call gb_CppunitTest_use_rdb,sw_core_header_footer,services))
+$(eval $(call gb_CppunitTest_use_configuration,sw_core_header_footer))
+
+$(eval $(call gb_CppunitTest_use_custom_headers,sw_core_header_footer,\
+    officecfg/registry \
+))
+
+$(eval $(call gb_CppunitTest_use_uiconfigs,sw_core_header_footer, \
+    modules/swriter \
+    svt \
+    svx \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk
index 33ff9de9081f..6d4d1f816c40 100644
--- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk
@@ -153,6 +153,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
     CppunitTest_sw_uibase_fldui \
     CppunitTest_sw_core_view \
     CppunitTest_sw_core_attr \
+    CppunitTest_sw_core_header_footer \
     CppunitTest_sw_filter_ww8 \
     CppunitTest_sw_filter_html \
     CppunitTest_sw_a11y \
diff --git a/sw/qa/core/header_footer/HeaderFooterTest.cxx 
b/sw/qa/core/header_footer/HeaderFooterTest.cxx
new file mode 100644
index 000000000000..1f1dd5c2db70
--- /dev/null
+++ b/sw/qa/core/header_footer/HeaderFooterTest.cxx
@@ -0,0 +1,1253 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <swmodeltestbase.hxx>
+
+#include <com/sun/star/text/XTextViewCursorSupplier.hpp>
+#include <com/sun/star/text/XFootnote.hpp>
+#include <com/sun/star/text/XFootnotesSupplier.hpp>
+#include <com/sun/star/text/XSimpleText.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/text/XPageCursor.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCursor.hpp>
+#include <com/sun/star/text/XTextDocument.hpp>
+#include <com/sun/star/text/XTextFrame.hpp>
+#include <com/sun/star/text/XTextFramesSupplier.hpp>
+#include <com/sun/star/text/XTextFieldsSupplier.hpp>
+#include <com/sun/star/style/PageStyleLayout.hpp>
+#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+
+#include <cppunit/TestAssert.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace
+{
+class HeaderFooterTest : public SwModelTestBase
+{
+public:
+    void checkParagraph(sal_Int32 nNumber, OUString const& rParagraphString,
+                        OUString const& rConnectedPageStyle);
+    void checkFirstRestHeaderPageStyles();
+    void checkLeftRightHeaderPageStyles();
+    void checkFirstLeftRightHeaderPageStyles();
+    void checkDoubleFirstLeftRightHeaderPageStyles(OUString const& 
rCustomPageStyleName);
+    void checkShapeInFirstPageHeader();
+
+    HeaderFooterTest()
+        : SwModelTestBase("/sw/qa/core/header_footer/data/")
+    {
+        skipValidation();
+    }
+};
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testNonFirstHeaderIsDisabled)
+{
+    // related to tdf#127778
+    // Header for the first page is enabled, but for the second page it should 
be disabled or act like it is disabled
+    // so the header vertical size is consistent.
+
+    createSwDoc("tdf127778.docx");
+
+    xmlDocUniquePtr pLayout = parseLayoutDump();
+    assertXPath(pLayout, "//page[2]/header", 0);
+}
+
+// Check for correct header/footer with special first page with TOC inside
+// Related to tdf#118393
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testHeaderFooterWithSpecialFirstPage_OOXML)
+{
+    // Load, save in OOXML format and reload
+    createSwDoc("tdf118393.odt");
+    saveAndReload("Office Open XML Text");
+
+    CPPUNIT_ASSERT_EQUAL(7, getPages());
+
+    {
+        xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+        // check first page
+        assertXPath(pXmlDoc, "/root/page[1]/header", 0);
+        assertXPath(pXmlDoc, "/root/page[1]/footer", 0);
+        // check second page in the same way
+        assertXPath(pXmlDoc, "/root/page[2]/header");
+        assertXPath(pXmlDoc, "/root/page[2]/footer");
+    }
+    // All other pages should have header/footer
+    OUString sExpected("Seite * von *");
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[2]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[2]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[3]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[3]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[4]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[4]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[5]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[5]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[6]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[6]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[7]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[7]/footer/txt/text()"));
+}
+
+// Check for correct header/footer with special first page with TOC inside
+// Related to tdf#118393
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testHeaderFooterWithSpecialFirstPage_ODF)
+{
+    // Load, save in ODF format and reload
+    createSwDoc("tdf118393.odt");
+    saveAndReload("writer8");
+
+    CPPUNIT_ASSERT_EQUAL(7, getPages());
+
+    // First page has no header/footer
+    {
+        xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+        // check first page
+        assertXPath(pXmlDoc, "/root/page[1]/header", 0);
+        assertXPath(pXmlDoc, "/root/page[1]/footer", 0);
+        // check second page in the same way
+        assertXPath(pXmlDoc, "/root/page[2]/header");
+        assertXPath(pXmlDoc, "/root/page[2]/footer");
+    }
+
+    // All other pages should have header/footer
+    OUString sExpected("Seite * von *");
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[2]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[2]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[3]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[3]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[4]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[4]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[5]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[5]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[6]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[6]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[7]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(sExpected, 
parseDump("/root/page[7]/footer/txt/text()"));
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFloatingTableInHeader)
+{
+    // Related to tdf#79639
+    createSwDoc("tdf79639.docx");
+
+    // This was 0, floating table in header wasn't converted to a TextFrame.
+    CPPUNIT_ASSERT_EQUAL(1, getShapes());
+
+    saveAndReload("Office Open XML Text");
+
+    // This was 0, floating table in header wasn't converted to a TextFrame.
+    CPPUNIT_ASSERT_EQUAL(1, getShapes());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFdo64238_a)
+{
+    createSwDoc("fdo64238_a.docx");
+
+    // The problem was that when 'Show Only Odd Footer' was marked in Word and 
the Even footer *was filled*
+    // then LO would still import the Even footer and concatenate it to the 
odd footer.
+    // This case specifically is for :
+    // 'Blank Odd Footer' with 'Non-Blank Even Footer' when 'Show Only Odd 
Footer' is marked in Word
+    // In this case the imported footer in LO was supposed to be blank, but 
instead was the 'even' footer
+    uno::Reference<text::XText> xFooterText = 
getProperty<uno::Reference<text::XText>>(
+        getStyles("PageStyles")->getByName("Standard"), "FooterText");
+    uno::Reference<text::XTextRange> xFooterParagraph = getParagraphOfText(1, 
xFooterText);
+    uno::Reference<container::XEnumerationAccess> 
xRunEnumAccess(xFooterParagraph, uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> xRunEnum = 
xRunEnumAccess->createEnumeration();
+    sal_Int32 numOfRuns = 0;
+    while (xRunEnum->hasMoreElements())
+    {
+        xRunEnum->nextElement();
+        numOfRuns++;
+    }
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), numOfRuns);
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFdo64238_b)
+{
+    createSwDoc("fdo64238_b.docx");
+
+    // The problem was that when 'Show Only Odd Footer' was marked in Word and 
the Even footer *was filled*
+    // then LO would still import the Even footer and concatenate it to the 
odd footer.
+    // This case specifically is for :
+    // 'Non-Blank Odd Footer' with 'Non-Blank Even Footer' when 'Show Only Odd 
Footer' is marked in Word
+    // In this case the imported footer in LO was supposed to be just the odd 
footer, but instead was the 'odd' and 'even' footers concatenated
+    uno::Reference<text::XText> xFooterText = 
getProperty<uno::Reference<text::XText>>(
+        getStyles("PageStyles")->getByName("Standard"), "FooterText");
+    uno::Reference<text::XTextRange> xFooterParagraph = getParagraphOfText(1, 
xFooterText);
+    uno::Reference<container::XEnumerationAccess> 
xRunEnumAccess(xFooterParagraph, uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> xRunEnum = 
xRunEnumAccess->createEnumeration();
+    sal_Int32 numOfRuns = 0;
+    while (xRunEnum->hasMoreElements())
+    {
+        xRunEnum->nextElement();
+        numOfRuns++;
+    }
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(5), numOfRuns);
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstPageHeadersAndEmptyFooters)
+{
+    // Test for fdo#66145
+
+    // Test case where headers and footers for first page are set, but footers 
are empty
+    auto verify = [this]() {
+        CPPUNIT_ASSERT_EQUAL(OUString("This is the FIRST page header."),
+                             parseDump("/root/page[1]/header/txt/text()"));
+
+        CPPUNIT_ASSERT_EQUAL(OUString("This is the header for the REST OF THE 
FILE."),
+                             parseDump("/root/page[2]/header/txt/text()"));
+
+        CPPUNIT_ASSERT_EQUAL(OUString("This is the header for the REST OF THE 
FILE."),
+                             parseDump("/root/page[3]/header/txt/text()"));
+    };
+
+    createSwDoc("fdo66145.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstHeaderFooterImport)
+{
+    // Test import and export of a section's headerf/footerf properties.
+    // (copied from a ww8export test, with doc converted to docx using Word)
+    auto verify = [this]() {
+        CPPUNIT_ASSERT_EQUAL(6, getPages());
+
+        // The document has 6 pages. Note that we don't test if 4 or just 2 
page
+        // styles are created, the point is that layout should be correct.
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header"),
+                             parseDump("/root/page[1]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer"),
+                             parseDump("/root/page[1]/footer/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page header"),
+                             parseDump("/root/page[2]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page footer"),
+                             parseDump("/root/page[2]/footer/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page header"),
+                             parseDump("/root/page[3]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer"),
+                             parseDump("/root/page[3]/footer/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header2"),
+                             parseDump("/root/page[4]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer 2"),
+                             parseDump("/root/page[4]/footer/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page header 2"),
+                             parseDump("/root/page[5]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer 2"),
+                             parseDump("/root/page[5]/footer/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page header 2"),
+                             parseDump("/root/page[6]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page footer 2"),
+                             parseDump("/root/page[6]/footer/txt/text()"));
+    };
+
+    createSwDoc("first-header-footer.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstHeaderFooterRoundTrip)
+{
+    createSwDoc("first-header-footerB.odt");
+    saveAndReload("Office Open XML Text");
+
+    CPPUNIT_ASSERT_EQUAL(6, getPages());
+
+    CPPUNIT_ASSERT_EQUAL(OUString("First page header"),
+                         parseDump("/root/page[1]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page footer"),
+                         parseDump("/root/page[1]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page header"),
+                         parseDump("/root/page[2]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer"),
+                         parseDump("/root/page[2]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header"), 
parseDump("/root/page[3]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer"), 
parseDump("/root/page[3]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page header2"),
+                         parseDump("/root/page[4]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page footer 2"),
+                         parseDump("/root/page[4]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header 2"),
+                         parseDump("/root/page[5]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer 2"),
+                         parseDump("/root/page[5]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page header 2"),
+                         parseDump("/root/page[6]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer 2"),
+                         parseDump("/root/page[6]/footer/txt/text()"));
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstHeaderFooter_ODF)
+{
+    createSwDoc("first-header-footer.odt");
+    saveAndReload("writer8");
+
+    CPPUNIT_ASSERT_EQUAL(6, getPages());
+    // Test import and export of the header-first token.
+
+    // The document has 6 pages, two page styles for the first and second half 
of pages.
+    CPPUNIT_ASSERT_EQUAL(OUString("First header"), 
parseDump("/root/page[1]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First footer"), 
parseDump("/root/page[1]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Left header"), 
parseDump("/root/page[2]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Left footer"), 
parseDump("/root/page[2]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Right header"), 
parseDump("/root/page[3]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Right footer"), 
parseDump("/root/page[3]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First header2"), 
parseDump("/root/page[4]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First footer2"), 
parseDump("/root/page[4]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Right header2"), 
parseDump("/root/page[5]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Right footer2"), 
parseDump("/root/page[5]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Left header2"), 
parseDump("/root/page[6]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Left footer2"), 
parseDump("/root/page[6]/footer/txt/text()"));
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstHeaderFooter_DOC)
+{
+    createSwDoc("first-header-footer.doc");
+    saveAndReload("MS Word 97");
+
+    // Test import and export of a section's headerf/footerf properties.
+
+    // The document has 6 pages. Note that we don't test if 4 or just 2 page
+    // styles are created, the point is that layout should be correct.
+    CPPUNIT_ASSERT_EQUAL(OUString("First page header"),
+                         parseDump("/root/page[1]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page footer"),
+                         parseDump("/root/page[1]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page header"),
+                         parseDump("/root/page[2]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer"),
+                         parseDump("/root/page[2]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header"), 
parseDump("/root/page[3]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer"), 
parseDump("/root/page[3]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page header2"),
+                         parseDump("/root/page[4]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("First page footer 2"),
+                         parseDump("/root/page[4]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header 2"),
+                         parseDump("/root/page[5]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer 2"),
+                         parseDump("/root/page[5]/footer/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page header 2"),
+                         parseDump("/root/page[6]/header/txt/text()"));
+    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer 2"),
+                         parseDump("/root/page[6]/footer/txt/text()"));
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFdo65655)
+{
+    // related - fdo#65655
+
+    // The problem was that the DOCX had a non-blank odd footer and a blank 
even footer
+    // The 'Different Odd & Even Pages' was turned on
+    // However - LO assumed that because the 'even' footer is blank - it 
should ignore the 'Different Odd & Even Pages' flag
+    // So it did not import it and did not export it
+
+    auto verify = [this]() {
+        uno::Reference<beans::XPropertySet> xPropertySet(
+            getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+        {
+            bool bValue = false;
+            xPropertySet->getPropertyValue("HeaderIsShared") >>= bValue;
+            CPPUNIT_ASSERT_EQUAL(false, bValue);
+        }
+        {
+            bool bValue = false;
+            xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
+            CPPUNIT_ASSERT_EQUAL(false, bValue);
+        }
+    };
+    createSwDoc("fdo65655.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testImageInHeader)
+{
+    // Related bug tdf#57155
+    createSwDoc("tdf57155.docx");
+
+    // Without the fix in place, the image in the header of page 2 wouldn't 
exist
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+    CPPUNIT_ASSERT_EQUAL(4, getShapes());
+
+    saveAndReload("Office Open XML Text");
+
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+    CPPUNIT_ASSERT_EQUAL(4, getShapes());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testImageInFooter)
+{
+    // Related bug tdf#129582
+    createSwDoc("tdf129582.docx");
+
+    // Without the fix in place, the image in the footer of page 2 wouldn't 
exist
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+    CPPUNIT_ASSERT_EQUAL(2, getShapes());
+
+    saveAndReload("Office Open XML Text");
+
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+    CPPUNIT_ASSERT_EQUAL(2, getShapes());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testTdf112694)
+{
+    auto verify = [this]() {
+        uno::Any aPageStyle = getStyles("PageStyles")->getByName("Standard");
+        // Header was on when header for file was for explicit first pages only
+        // (marked via <w:titlePg>).
+        CPPUNIT_ASSERT(!getProperty<bool>(aPageStyle, "HeaderIsOn"));
+    };
+
+    createSwDoc("tdf112694.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testContSectBreakHeaderFooter)
+{
+    auto verify = [this]() {
+        // Load a document with a continuous section break on page 2.
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header, section 1"),
+                             parseDump("/root/page[1]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer, section 1"),
+                             parseDump("/root/page[1]/footer/txt/text()"));
+
+        // Make sure the header stays like this; if we naively just update the 
page style name of the
+        // first para on page 2, then this would be 'Header, section 2', which 
is incorrect.
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header, section 2"),
+                             parseDump("/root/page[2]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer, section 2"),
+                             parseDump("/root/page[2]/footer/txt/text()"));
+
+        // This is inherited from page 2.
+        CPPUNIT_ASSERT_EQUAL(OUString("Header, section 2"),
+                             parseDump("/root/page[3]/header/txt/text()"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Footer, section 3"),
+                             parseDump("/root/page[3]/footer/txt/text()"));
+
+        // Without the export fix in place, the import-export-import test 
would have failed with:
+        // - Expected: Header, section 2
+        // - Actual  : First page header, section 2
+        // i.e. both the header and the footer on page 3 was wrong.
+
+        // Additional problem: top margin on page 3 was wrong.
+        if (isExported())
+        {
+            xmlDocUniquePtr pXml = parseExport("word/document.xml");
+            // Without the accompanying fix in place, this test would have 
failed with:
+            // - Expected: 2200
+            // - Actual  : 2574
+            // i.e. the top margin on page 3 was too large and now matches the 
value from the input
+            // document.
+            assertXPath(pXml, "/w:document/w:body/w:sectPr/w:pgMar", "top", 
"2200");
+        }
+    };
+
+    createSwDoc("cont-sect-break-header-footer.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testTdf145998_firstHeader)
+{
+    createSwDoc("tdf145998_firstHeader.odt");
+    saveAndReload("Office Open XML Text");
+
+    // Sanity check - always good to test when dealing with page styles and 
breaks.
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+
+    CPPUNIT_ASSERT_EQUAL(OUString("Very first header"), 
parseDump("/root/page[1]/header/txt"));
+
+    // Page Style is already used in prior section - this can't be the 
first-header
+    CPPUNIT_ASSERT_EQUAL(OUString("Normal Header"), 
parseDump("/root/page[2]/header/txt"));
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testEvenPageOddPageFooter_Import)
+{
+    // Related tdf#135216
+
+    createSwDoc("tdf135216_evenOddFooter.docx");
+
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
+        xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<text::XPageCursor> 
xCursor(xTextViewCursorSupplier->getViewCursor(),
+                                              uno::UNO_QUERY);
+
+    // get LO page style for the first page (even page #2)
+    OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    uno::Reference<container::XNameAccess> xPageStyles = 
getStyles("PageStyles");
+    uno::Reference<style::XStyle> 
xPageStyle(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+
+    xCursor->jumpToFirstPage(); // Even/Left page #2
+    uno::Reference<text::XText> xFooter
+        = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft");
+    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
+
+    xCursor->jumpToNextPage();
+    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextFirst"));
+    CPPUNIT_ASSERT_EQUAL(OUString("odd page - first footer"), 
xFooter->getString());
+
+    xCursor->jumpToNextPage();
+    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft"));
+    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
+
+    // The contents of paragraph 2 should be the page number (2) located on 
page 1.
+    getParagraph(2, "2");
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testEvenPageOddPageFooter_Roundtrip)
+{
+    // Related tdf#135216
+
+    // Load, save as OOXML and reload
+    createSwDoc("tdf135216_evenOddFooter.odt");
+    saveAndReload("Office Open XML Text");
+
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
+        xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<text::XPageCursor> 
xCursor(xTextViewCursorSupplier->getViewCursor(),
+                                              uno::UNO_QUERY);
+
+    // get LO page style for the first page (even page #2)
+    OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    uno::Reference<container::XNameAccess> xPageStyles = 
getStyles("PageStyles");
+    uno::Reference<style::XStyle> 
xPageStyle(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+
+    xCursor->jumpToFirstPage(); // Even/Left page #2
+    uno::Reference<text::XText> xFooter
+        = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft");
+    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
+
+    xCursor->jumpToNextPage();
+    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextFirst"));
+    CPPUNIT_ASSERT_EQUAL(OUString("odd page - first footer"), 
xFooter->getString());
+
+    xCursor->jumpToNextPage();
+    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft"));
+    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
+
+    // The contents of paragraph 2 should be the page number (2) located on 
page 1.
+    getParagraph(2, "2");
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testTdf69635)
+{
+    createSwDoc("tdf69635.docx");
+    saveAndReload("Office Open XML Text");
+
+    xmlDocUniquePtr pXmlHeader1 = parseExport("word/header1.xml");
+    CPPUNIT_ASSERT(pXmlHeader1);
+
+    xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml");
+    CPPUNIT_ASSERT(pXmlSettings);
+
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: "left"
+    // - Actual  : "right"
+    assertXPathContent(pXmlHeader1, "/w:hdr/w:p/w:r/w:t", "left");
+
+    // Make sure "left" appears as a hidden header
+    assertXPath(pXmlSettings, "/w:settings/w:evenAndOddHeaders", 0);
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testTdf113849_evenAndOddHeaders)
+{
+    createSwDoc("tdf113849_evenAndOddHeaders.odt");
+    saveAndReload("Office Open XML Text");
+
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header2 text", OUString("L. J. Kendall"),
+                                 parseDump("/root/page[2]/header/txt"));
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer2 text", OUString("*"),
+                                 parseDump("/root/page[2]/footer/txt"));
+
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header3 text", OUString("Shadow Hunt"),
+                                 parseDump("/root/page[3]/header/txt"));
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer3 text", OUString("*"),
+                                 parseDump("/root/page[3]/footer/txt"));
+
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header4 text", OUString("L. J. Kendall"),
+                                 parseDump("/root/page[4]/header/txt"));
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer4 text", OUString("*"),
+                                 parseDump("/root/page[4]/footer/txt"));
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer5 text", OUString(""),
+                                 parseDump("/root/page[5]/footer/txt"));
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer6 text", OUString(""),
+                                 parseDump("/root/page[6]/footer/txt"));
+
+    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number of pages", 6, getPages());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstPageFooterEnabled)
+{
+    // tdf#106572
+    // Page style with first page and other pages.
+    // Footer shouldn't be enabled on first page, but then on the other pages
+    auto verify = [this]() {
+        xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+        assertXPath(pXmlDoc, "/root/page[1]/footer/txt", 0);
+    };
+    createSwDoc("TestFirstFooterDisabled.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testBnc519228OddBreaks)
+{
+    auto verify = [this]() {
+        // Check that all the normal styles are not set as right-only, those 
should be only those used after odd page breaks.
+        auto xStyles = getStyles("PageStyles");
+        uno::Reference<beans::XPropertySet> xStyle;
+        {
+            xStyle.set(xStyles->getByName("Standard"), uno::UNO_QUERY);
+            auto aPageLayout = xStyle->getPropertyValue("PageStyleLayout");
+            CPPUNIT_ASSERT_EQUAL(uno::Any(style::PageStyleLayout_ALL), 
aPageLayout);
+        }
+        {
+            xStyle.set(xStyles->getByName("First Page"), uno::UNO_QUERY);
+            auto aPageLayout = xStyle->getPropertyValue("PageStyleLayout");
+            CPPUNIT_ASSERT_EQUAL(uno::Any(style::PageStyleLayout_ALL), 
aPageLayout);
+        }
+
+        uno::Reference<beans::XPropertySet> page1Style;
+        {
+            auto xPara = getParagraph(1);
+            CPPUNIT_ASSERT_EQUAL(OUString("This is the first page."), 
xPara->getString());
+            OUString page1StyleName = getProperty<OUString>(xPara, 
"PageDescName");
+            page1Style.set(xStyles->getByName(page1StyleName), uno::UNO_QUERY);
+            auto aPageLayout = page1Style->getPropertyValue("PageStyleLayout");
+            CPPUNIT_ASSERT_EQUAL(uno::Any(style::PageStyleLayout_RIGHT), 
aPageLayout);
+
+            auto xHeaderText = 
getProperty<uno::Reference<text::XText>>(page1Style, "HeaderText");
+            auto xHeaderPara = getParagraphOfText(1, xHeaderText);
+            CPPUNIT_ASSERT_EQUAL(OUString("This is the header for odd pages"),
+                                 xHeaderPara->getString());
+        }
+
+        // Page2 comes from follow of style for page 1 and should be a normal 
page. Also check the two page style have the same properties,
+        // since page style for page1 was created from page style for page 2.
+        {
+            auto aFollowStyleName = getProperty<OUString>(page1Style, 
"FollowStyle");
+
+            uno::Reference<beans::XPropertySet> page2Style;
+            page2Style.set(xStyles->getByName(aFollowStyleName), 
uno::UNO_QUERY);
+            auto aPage2Layout = 
page2Style->getPropertyValue("PageStyleLayout");
+            CPPUNIT_ASSERT_EQUAL(uno::Any(style::PageStyleLayout_ALL), 
aPage2Layout);
+
+            auto xHeaderTextLeft
+                = getProperty<uno::Reference<text::XText>>(page2Style, 
"HeaderTextLeft");
+            auto xHeaderLeftPara = getParagraphOfText(1, xHeaderTextLeft);
+            CPPUNIT_ASSERT_EQUAL(OUString("This is the even header"), 
xHeaderLeftPara->getString());
+
+            auto xHeaderTextRight
+                = getProperty<uno::Reference<text::XText>>(page2Style, 
"HeaderTextRight");
+            auto xHeaderRightPara = getParagraphOfText(1, xHeaderTextRight);
+            CPPUNIT_ASSERT_EQUAL(OUString("This is the header for odd pages"),
+                                 xHeaderRightPara->getString());
+
+            CPPUNIT_ASSERT_EQUAL(getProperty<sal_Int32>(page1Style, 
"TopMargin"),
+                                 getProperty<sal_Int32>(page2Style, 
"TopMargin"));
+        }
+
+        // Page 5
+        {
+            auto xPara = getParagraph(4);
+            CPPUNIT_ASSERT_EQUAL(
+                OUString("Then an odd break after an odd page, should lead us 
to page #5."),
+                xPara->getString());
+
+            OUString page5StyleName = getProperty<OUString>(xPara, 
"PageDescName");
+            uno::Reference<beans::XPropertySet> 
page5Style(xStyles->getByName(page5StyleName),
+                                                           uno::UNO_QUERY);
+            auto aPageLayout = page5Style->getPropertyValue("PageStyleLayout");
+            CPPUNIT_ASSERT_EQUAL(uno::Any(style::PageStyleLayout_RIGHT), 
aPageLayout);
+
+            auto xHeaderText = 
getProperty<uno::Reference<text::XText>>(page5Style, "HeaderText");
+            auto xHeaderTextPara = getParagraphOfText(1, xHeaderText);
+            CPPUNIT_ASSERT_EQUAL(OUString("This is the header for odd pages"),
+                                 xHeaderTextPara->getString());
+        }
+    };
+
+    createSwDoc("bnc519228_odd-breaksB.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testBnc875718)
+{
+    createSwDoc("bnc875718.docx");
+    saveAndReload("Office Open XML Text");
+
+    // The frame in the footer must not accidentally end up in the document 
body.
+    // The easiest way for this to test I've found is checking that
+    // xray ThisComponent.TextFrames.GetByIndex( index 
).Anchor.Text.ImplementationName
+    // is not SwXBodyText but rather SwXHeadFootText
+    uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<container::XIndexAccess> 
xIndexAccess(xTextFramesSupplier->getTextFrames(),
+                                                         uno::UNO_QUERY);
+    // The sample bugdoc has 3 footer.xml and has a textframe in each. The 
first one is hidden
+    // and it has no text in its anchored text range: it is anchored to body 
text. Ignoring...
+    for (int i = 1; i < xIndexAccess->getCount(); ++i)
+    {
+        uno::Reference<text::XTextFrame> frame(xIndexAccess->getByIndex(i), 
uno::UNO_QUERY);
+        uno::Reference<text::XTextRange> range = frame->getAnchor();
+        uno::Reference<lang::XServiceInfo> text(range->getText(), 
uno::UNO_QUERY);
+        CPPUNIT_ASSERT_EQUAL(OUString("SwXHeadFootText"), 
text->getImplementationName());
+    }
+    // Also check that the footer contents are not in the body text.
+    uno::Reference<text::XTextDocument> textDocument(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<text::XText> text = textDocument->getText();
+    CPPUNIT_ASSERT(text); //Do not crash on empty content
+    CPPUNIT_ASSERT_EQUAL(OUString("Text"), text->getString());
+}
+
+// base class to supply a helper method for testHFLinkToPrev
+class TestHFBase : public HeaderFooterTest
+{
+protected:
+    OUString getHFText(const uno::Reference<style::XStyle>& xPageStyle, const 
OUString& sPropName)
+    {
+        auto xTextRange = 
getProperty<uno::Reference<text::XTextRange>>(xPageStyle, sPropName);
+        return xTextRange->getString();
+    }
+};
+
+CPPUNIT_TEST_FIXTURE(TestHFBase, testHFLinkToPrev)
+{
+    auto verify = [this]() {
+        uno::Reference<container::XNameAccess> xPageStyles = 
getStyles("PageStyles");
+
+        // get a page cursor
+        uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+        uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
+            xModel->getCurrentController(), uno::UNO_QUERY);
+        uno::Reference<text::XPageCursor> 
xCursor(xTextViewCursorSupplier->getViewCursor(),
+                                                  uno::UNO_QUERY);
+
+        // get LO page style for page 1, corresponding to docx section 1 first 
page
+        xCursor->jumpToFirstPage();
+        OUString pageStyleName = getProperty<OUString>(xCursor, 
"PageStyleName");
+        uno::Reference<style::XStyle> 
xPageStyle(xPageStyles->getByName(pageStyleName),
+                                                 uno::UNO_QUERY);
+        // check page 1 header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header for all sections"),
+                             getHFText(xPageStyle, "HeaderTextFirst"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer for section 1 only"),
+                             getHFText(xPageStyle, "FooterTextFirst"));
+
+        // get LO page style for page 2, corresponding to docx section 1
+        xCursor->jumpToPage(2);
+        pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+        xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+        // check header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page header for section 1 only"),
+                             getHFText(xPageStyle, "HeaderTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page footer for all sections"),
+                             getHFText(xPageStyle, "FooterTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page header for all sections"),
+                             getHFText(xPageStyle, "HeaderText"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer for section 1 only"),
+                             getHFText(xPageStyle, "FooterText"));
+
+        // get LO page style for page 4, corresponding to docx section 2 first 
page
+        xCursor->jumpToPage(4);
+        pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+        xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+        // check header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header for all sections"),
+                             getHFText(xPageStyle, "HeaderTextFirst"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "FooterTextFirst"));
+
+        // get LO page style for page 5, corresponding to docx section 2
+        xCursor->jumpToPage(5);
+        pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+        xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+        // check header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page header for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "HeaderTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page footer for all sections"),
+                             getHFText(xPageStyle, "FooterTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page header for all sections"),
+                             getHFText(xPageStyle, "HeaderText"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "FooterText"));
+
+        // get LO page style for page 7, corresponding to docx section 3 first 
page
+        xCursor->jumpToPage(7);
+        pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+        xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+        // check header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("First page header for all sections"),
+                             getHFText(xPageStyle, "HeaderTextFirst"));
+        CPPUNIT_ASSERT_EQUAL(OUString("First page footer for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "FooterTextFirst"));
+
+        // get LO page style for page 8, corresponding to docx section 3
+        xCursor->jumpToPage(8);
+        pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
+        xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
+        // check header & footer text
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page header for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "HeaderTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Even page footer for all sections"),
+                             getHFText(xPageStyle, "FooterTextLeft"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page header for all sections"),
+                             getHFText(xPageStyle, "HeaderText"));
+        CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer for sections 2 and 3 
only"),
+                             getHFText(xPageStyle, "FooterText"));
+    };
+    createSwDoc("headerfooter-link-to-prev.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testN750935)
+{
+    auto verify = [this]() {
+        // Some page break types were ignores, resulting in less pages.
+        CPPUNIT_ASSERT_EQUAL(5, getPages());
+
+        // The problem was that the header and footer was not shared.
+        // xray ThisComponent.StyleFamilies.PageStyles.Default.FooterIsShared
+        uno::Reference<beans::XPropertySet> xPropertySet(
+            getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+        bool bValue = false;
+        xPropertySet->getPropertyValue("HeaderIsShared") >>= bValue;
+        CPPUNIT_ASSERT_EQUAL(true, bValue);
+        xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
+        CPPUNIT_ASSERT_EQUAL(true, bValue);
+    };
+    createSwDoc("n750935.docx");
+    verify();
+    saveAndReload("Office Open XML Text");
+    verify();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testOnlyLeftPageStyle)
+{
+    createSwDoc("TestPageStyleOnlyLeft.docx");
+    saveAndReload("Office Open XML Text");
+    // There should be 2 pages - first page should be blank
+    CPPUNIT_ASSERT_EQUAL(2, getPages());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testMsoPosition)
+{
+    auto verifyFooter = [this]() {
+        xmlDocUniquePtr doc = parseExport("word/footer1.xml");
+        // We write the frames out in different order than they were read, so 
check it's the correct
+        // textbox first by checking width. These tests may need reordering if 
that gets fixed.
+        OUString style1 = getXPath(
+            doc, 
"/w:ftr/w:p/w:r[3]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style1.indexOf(";width:531pt;") >= 0);
+        CPPUNIT_ASSERT(style1.indexOf(";mso-position-vertical-relative:page") 
>= 0);
+        
CPPUNIT_ASSERT(style1.indexOf(";mso-position-horizontal-relative:page") >= 0);
+        OUString style2 = getXPath(
+            doc, 
"/w:ftr/w:p/w:r[4]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style2.indexOf(";width:549pt;") >= 0);
+        CPPUNIT_ASSERT(style2.indexOf(";mso-position-vertical-relative:text") 
>= 0);
+        CPPUNIT_ASSERT(style2.indexOf(";mso-position-horizontal:center") >= 0);
+        
CPPUNIT_ASSERT(style2.indexOf(";mso-position-horizontal-relative:text") >= 0);
+        OUString style3 = getXPath(
+            doc, 
"/w:ftr/w:p/w:r[5]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style3.indexOf(";width:36pt;") >= 0);
+        
CPPUNIT_ASSERT(style3.indexOf(";mso-position-horizontal-relative:text") >= 0);
+        CPPUNIT_ASSERT(style3.indexOf(";mso-position-vertical-relative:text") 
>= 0);
+    };
+
+    auto verifyHeader = [this]() {
+        xmlDocUniquePtr doc = parseExport("word/header1.xml");
+        OUString style1 = getXPath(
+            doc, 
"/w:hdr/w:p/w:r[2]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style1.indexOf(";width:335.75pt;") >= 0);
+        
CPPUNIT_ASSERT(style1.indexOf(";mso-position-horizontal-relative:page") >= 0);
+        CPPUNIT_ASSERT(style1.indexOf(";mso-position-vertical-relative:page") 
>= 0);
+        OUString style2 = getXPath(
+            doc, 
"/w:hdr/w:p/w:r[3]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style2.indexOf(";width:138.15pt;") >= 0);
+        
CPPUNIT_ASSERT(style2.indexOf(";mso-position-horizontal-relative:page") >= 0);
+        CPPUNIT_ASSERT(style2.indexOf(";mso-position-vertical-relative:page") 
>= 0);
+        OUString style3 = getXPath(
+            doc, 
"/w:hdr/w:p/w:r[4]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
+        CPPUNIT_ASSERT(style3.indexOf(";width:163.8pt;") >= 0);
+        
CPPUNIT_ASSERT(style3.indexOf(";mso-position-horizontal-relative:page") >= 0);
+        CPPUNIT_ASSERT(style3.indexOf(";mso-position-vertical-relative:page") 
>= 0);
+    };
+
+    createSwDoc("bnc884615-mso-position.docx");
+    saveAndReload("Office Open XML Text");
+    verifyHeader();
+    verifyFooter();
+}
+
+void HeaderFooterTest::checkParagraph(sal_Int32 nNumber, OUString const& 
rParagraphString,
+                                      OUString const& rConnectedPageStyle)
+{
+    uno::Reference<beans::XPropertySet> 
xPropertySet(getParagraphOrTable(nNumber), uno::UNO_QUERY);
+
+    uno::Reference<text::XTextRange> xTextRange(xPropertySet, uno::UNO_QUERY);
+    CPPUNIT_ASSERT_EQUAL(rParagraphString, xTextRange->getString());
+
+    OUString pageStyle;
+    xPropertySet->getPropertyValue("PageStyleName") >>= pageStyle;
+    CPPUNIT_ASSERT_EQUAL(rConnectedPageStyle, pageStyle);
+}
+
+void HeaderFooterTest::checkFirstRestHeaderPageStyles()
+{
+    // Page 1
+    checkParagraph(1, "P1", "Standard");
+
+    // Page 2
+    checkParagraph(2, "P2", "Standard");
+
+    // Page 3
+    checkParagraph(3, "P3", "Standard");
+
+    // Check Default Style
+    {
+        uno::Reference<beans::XPropertySet> xPageStyle(
+            getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+
+        bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+        bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+        CPPUNIT_ASSERT_EQUAL(true, bHeaderIsShared);
+
+        bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bFirstIsShared);
+
+        auto xHeaderTextFirst
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextFirst");
+        CPPUNIT_ASSERT_EQUAL(OUString("FIRST"), xHeaderTextFirst->getString());
+
+        auto xHeaderText = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderText");
+        CPPUNIT_ASSERT_EQUAL(OUString("NON-FIRST"), xHeaderText->getString());
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstRestHeaderPageStyles_ODF)
+{
+    createSwDoc("SimpleFirst.odt");
+    checkFirstRestHeaderPageStyles();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstRestHeaderPageStyles_OOXML)
+{
+    //createSwDoc("SimpleFirst.docx");
+    //checkFirstRestHeaderPageStyles();
+}
+
+void HeaderFooterTest::checkLeftRightHeaderPageStyles()
+{
+    // Page 1
+    checkParagraph(1, "P1", "Standard");
+
+    // Page 2
+    checkParagraph(2, "P2", "Standard");
+
+    // Page 3
+    checkParagraph(3, "P3", "Standard");
+
+    // Page 4
+    checkParagraph(4, "P4", "Standard");
+
+    // Check Default Style
+    {
+        uno::Reference<beans::XPropertySet> xPageStyle(
+            getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+
+        bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+        bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bHeaderIsShared);
+
+        bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+        CPPUNIT_ASSERT_EQUAL(true, bFirstIsShared);
+
+        auto xHeaderTextLeft
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextLeft");
+        CPPUNIT_ASSERT_EQUAL(OUString("LEFT"), xHeaderTextLeft->getString());
+
+        auto xHeaderTextRight
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextRight");
+        CPPUNIT_ASSERT_EQUAL(OUString("RIGHT"), xHeaderTextRight->getString());
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testLeftRightHeaderPageStyles_ODF)
+{
+    createSwDoc("SimpleLeftRight.odt");
+    checkLeftRightHeaderPageStyles();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testLeftRightHeaderPageStyles_OOXML)
+{
+    //createSwDoc("SimpleLeftRight.docx");
+    //checkLeftRightHeaderPageStyles();
+}
+
+void HeaderFooterTest::checkFirstLeftRightHeaderPageStyles()
+{
+    // Page 1
+    checkParagraph(1, "Para 1", "Standard");
+
+    // Page 2
+    checkParagraph(2, "Para 2", "Standard");
+
+    // Page 3
+    checkParagraph(3, "Para 3", "Standard");
+
+    // Page 4
+    checkParagraph(4, "Para 4", "Standard");
+
+    // Page 5
+    checkParagraph(5, "Para 5", "Standard");
+
+    // Check Default Style
+    uno::Reference<beans::XPropertySet> 
xPageStyle(getStyles("PageStyles")->getByName("Standard"),
+                                                   uno::UNO_QUERY);
+
+    bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+    CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+    bool bFooter = getProperty<bool>(xPageStyle, "FooterIsOn");
+    CPPUNIT_ASSERT_EQUAL(true, bFooter);
+
+    bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+    CPPUNIT_ASSERT_EQUAL(false, bHeaderIsShared);
+
+    bool bFooterIsShared = getProperty<bool>(xPageStyle, "FooterIsShared");
+    CPPUNIT_ASSERT_EQUAL(false, bFooterIsShared);
+
+    bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+    CPPUNIT_ASSERT_EQUAL(false, bFirstIsShared);
+
+    auto xHeaderTextFirst = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderTextFirst");
+    CPPUNIT_ASSERT_EQUAL(OUString("FIRST HEADER"), 
xHeaderTextFirst->getString());
+
+    auto xHeaderTextLeft = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderTextLeft");
+    CPPUNIT_ASSERT_EQUAL(OUString("LEFT HEADER"), 
xHeaderTextLeft->getString());
+
+    auto xHeaderTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderText");
+    CPPUNIT_ASSERT_EQUAL(OUString("RIGHT HEADER"), 
xHeaderTextRight->getString());
+
+    auto xFooterTextFirst = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterTextFirst");
+    CPPUNIT_ASSERT_EQUAL(OUString("FIRST FOOTER"), 
xFooterTextFirst->getString());
+
+    auto xFooterTextLeft = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterTextLeft");
+    CPPUNIT_ASSERT_EQUAL(OUString("LEFT FOOTER"), 
xFooterTextLeft->getString());
+
+    auto xFooterTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterText");
+    CPPUNIT_ASSERT_EQUAL(OUString("RIGHT FOOTER"), 
xFooterTextRight->getString());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstLeftRightHeaderPageStyles_ODF)
+{
+    createSwDoc("SimpleFirstLeftRight.odt");
+    checkFirstLeftRightHeaderPageStyles();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testFirstLeftRightHeaderPageStyles_OOXML)
+{
+    //createSwDoc("SimpleFirstLeftRight.docx");
+    //checkFirstLeftRightHeaderPageStyles();
+}
+
+void HeaderFooterTest::checkDoubleFirstLeftRightHeaderPageStyles(
+    OUString const& rCustomPageStyleName)
+{
+    // Page 1
+    checkParagraph(1, "Para 1 - Default", "Standard");
+
+    // Page 2
+    checkParagraph(2, "Para 2 - Default", "Standard");
+
+    // Page 3
+    checkParagraph(3, "Para 3 - Default", "Standard");
+
+    // Page 4
+    checkParagraph(4, "Para 4 - Custom", rCustomPageStyleName);
+
+    // Page 5
+    checkParagraph(5, "Para 5 - Custom", rCustomPageStyleName);
+
+    // Page 6
+    checkParagraph(6, "Para 6 - Custom", rCustomPageStyleName);
+
+    // Check Default Style
+    {
+        uno::Reference<beans::XPropertySet> xPageStyle(
+            getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
+
+        bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+        bool bFooter = getProperty<bool>(xPageStyle, "FooterIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bFooter);
+
+        bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bHeaderIsShared);
+
+        bool bFooterIsShared = getProperty<bool>(xPageStyle, "FooterIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bFooterIsShared);
+
+        bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bFirstIsShared);
+
+        auto xHeaderTextFirst
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextFirst");
+        CPPUNIT_ASSERT_EQUAL(OUString("FIRST HEADER"), 
xHeaderTextFirst->getString());
+
+        auto xHeaderTextLeft
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextLeft");
+        CPPUNIT_ASSERT_EQUAL(OUString("LEFT HEADER"), 
xHeaderTextLeft->getString());
+
+        auto xHeaderTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderText");
+        CPPUNIT_ASSERT_EQUAL(OUString("RIGHT HEADER"), 
xHeaderTextRight->getString());
+
+        auto xFooterTextFirst
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextFirst");
+        CPPUNIT_ASSERT_EQUAL(OUString("FIRST FOOTER"), 
xFooterTextFirst->getString());
+
+        auto xFooterTextLeft
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft");
+        CPPUNIT_ASSERT_EQUAL(OUString("LEFT FOOTER"), 
xFooterTextLeft->getString());
+
+        auto xFooterTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterText");
+        CPPUNIT_ASSERT_EQUAL(OUString("RIGHT FOOTER"), 
xFooterTextRight->getString());
+    }
+
+    {
+        uno::Reference<beans::XPropertySet> xPageStyle(
+            getStyles("PageStyles")->getByName(rCustomPageStyleName), 
uno::UNO_QUERY);
+
+        bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+        bool bFooter = getProperty<bool>(xPageStyle, "FooterIsOn");
+        CPPUNIT_ASSERT_EQUAL(true, bFooter);
+
+        bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bHeaderIsShared);
+
+        bool bFooterIsShared = getProperty<bool>(xPageStyle, "FooterIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bFooterIsShared);
+
+        bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+        CPPUNIT_ASSERT_EQUAL(false, bFirstIsShared);
+
+        auto xHeaderTextFirst
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextFirst");
+        CPPUNIT_ASSERT_EQUAL(OUString("FIRST HEADER - CUSTOM"), 
xHeaderTextFirst->getString());
+
+        auto xHeaderTextLeft
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"HeaderTextLeft");
+        CPPUNIT_ASSERT_EQUAL(OUString("LEFT HEADER - CUSTOM"), 
xHeaderTextLeft->getString());
+
+        auto xHeaderTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderText");
+        CPPUNIT_ASSERT_EQUAL(OUString("RIGHT HEADER - CUSTOM"), 
xHeaderTextRight->getString());
+
+        auto xFooterTextFirst
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextFirst");
+        CPPUNIT_ASSERT_EQUAL(OUString("FIRST FOOTER - CUSTOM"), 
xFooterTextFirst->getString());
+
+        auto xFooterTextLeft
+            = getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft");
+        CPPUNIT_ASSERT_EQUAL(OUString("LEFT FOOTER - CUSTOM"), 
xFooterTextLeft->getString());
+
+        auto xFooterTextRight = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterText");
+        CPPUNIT_ASSERT_EQUAL(OUString("RIGHT FOOTER - CUSTOM"), 
xFooterTextRight->getString());
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testDoubleFirstLeftRightHeaderPageStyles_ODF)
+{
+    createSwDoc("DoubleFirstLeftRight.odt");
+    checkDoubleFirstLeftRightHeaderPageStyles("Custom Page Style");
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, 
testDoubleFirstLeftRightHeaderPageStyles_OOXML)
+{
+    //createSwDoc("DoubleFirstLeftRight.docx");
+    //checkDoubleFirstLeftRightHeaderPageStyles("Converted1");
+}
+
+void HeaderFooterTest::checkShapeInFirstPageHeader()
+{
+    // Check Default Style
+    uno::Reference<beans::XPropertySet> 
xPageStyle(getStyles("PageStyles")->getByName("Standard"),
+                                                   uno::UNO_QUERY);
+
+    bool bHeader = getProperty<bool>(xPageStyle, "HeaderIsOn");
+    CPPUNIT_ASSERT_EQUAL(true, bHeader);
+
+    bool bFooter = getProperty<bool>(xPageStyle, "FooterIsOn");
+    CPPUNIT_ASSERT_EQUAL(false, bFooter);
+
+    bool bHeaderIsShared = getProperty<bool>(xPageStyle, "HeaderIsShared");
+    CPPUNIT_ASSERT_EQUAL(true, bHeaderIsShared);
+
+    bool bFirstIsShared = getProperty<bool>(xPageStyle, "FirstIsShared");
+    CPPUNIT_ASSERT_EQUAL(false, bFirstIsShared);
+
+    // Check shape is anchored to paragraph belonging to XText from 
"HeaderTextFirst" property
+    auto xHeaderTextFirst = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "HeaderTextFirst");
+    CPPUNIT_ASSERT(xHeaderTextFirst.is());
+
+    uno::Reference<text::XTextContent> xShapeText(getShape(1), uno::UNO_QUERY);
+    CPPUNIT_ASSERT(xShapeText.is());
+    uno::Reference<text::XTextRange> xAnchor = xShapeText->getAnchor();
+    CPPUNIT_ASSERT(xAnchor.is());
+
+    CPPUNIT_ASSERT_EQUAL(xHeaderTextFirst, xAnchor->getText());
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstPageHeaderShape_ODF)
+{
+    createSwDoc("FirstPageHeaderShape.odt");
+    checkShapeInFirstPageHeader();
+}
+
+CPPUNIT_TEST_FIXTURE(HeaderFooterTest, testFirstPageHeaderShape_OOXML)
+{
+    //createSwDoc("FirstPageHeaderShape.docx");
+    //checkShapeInFirstPageHeader();
+}
+
+} // end anonymous namespace
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/core/header_footer/data/DoubleFirstLeftRight.docx 
b/sw/qa/core/header_footer/data/DoubleFirstLeftRight.docx
new file mode 100644
index 000000000000..307567507d2e
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/DoubleFirstLeftRight.docx differ
diff --git a/sw/qa/core/header_footer/data/DoubleFirstLeftRight.odt 
b/sw/qa/core/header_footer/data/DoubleFirstLeftRight.odt
new file mode 100644
index 000000000000..3bef1c87b655
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/DoubleFirstLeftRight.odt differ
diff --git a/sw/qa/core/header_footer/data/FirstPageHeaderShape.docx 
b/sw/qa/core/header_footer/data/FirstPageHeaderShape.docx
new file mode 100644
index 000000000000..baed4b215ec1
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/FirstPageHeaderShape.docx differ
diff --git a/sw/qa/core/header_footer/data/FirstPageHeaderShape.odt 
b/sw/qa/core/header_footer/data/FirstPageHeaderShape.odt
new file mode 100644
index 000000000000..7053423d000d
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/FirstPageHeaderShape.odt differ
diff --git a/sw/qa/extras/ooxmlimport/data/SimpleFirst.docx 
b/sw/qa/core/header_footer/data/SimpleFirst.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/SimpleFirst.docx
rename to sw/qa/core/header_footer/data/SimpleFirst.docx
diff --git a/sw/qa/extras/ooxmlimport/data/SimpleFirst.odt 
b/sw/qa/core/header_footer/data/SimpleFirst.odt
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/SimpleFirst.odt
rename to sw/qa/core/header_footer/data/SimpleFirst.odt
diff --git a/sw/qa/core/header_footer/data/SimpleFirstLeftRight.docx 
b/sw/qa/core/header_footer/data/SimpleFirstLeftRight.docx
new file mode 100644
index 000000000000..d0a8ed02e868
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/SimpleFirstLeftRight.docx differ
diff --git a/sw/qa/core/header_footer/data/SimpleFirstLeftRight.odt 
b/sw/qa/core/header_footer/data/SimpleFirstLeftRight.odt
new file mode 100644
index 000000000000..a16cc922fc9f
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/SimpleFirstLeftRight.odt differ
diff --git a/sw/qa/extras/ooxmlimport/data/SimpleLeftRight.docx 
b/sw/qa/core/header_footer/data/SimpleLeftRight.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/SimpleLeftRight.docx
rename to sw/qa/core/header_footer/data/SimpleLeftRight.docx
diff --git a/sw/qa/extras/ooxmlimport/data/SimpleLeftRight.odt 
b/sw/qa/core/header_footer/data/SimpleLeftRight.odt
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/SimpleLeftRight.odt
rename to sw/qa/core/header_footer/data/SimpleLeftRight.odt
diff --git a/sw/qa/core/header_footer/data/TestFirstFooterDisabled.docx 
b/sw/qa/core/header_footer/data/TestFirstFooterDisabled.docx
new file mode 100644
index 000000000000..2fe9a176689b
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/TestFirstFooterDisabled.docx differ
diff --git a/sw/qa/core/header_footer/data/TestPageStyleOnlyLeft.docx 
b/sw/qa/core/header_footer/data/TestPageStyleOnlyLeft.docx
new file mode 100644
index 000000000000..4714b8e27f87
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/TestPageStyleOnlyLeft.docx differ
diff --git a/sw/qa/extras/ooxmlexport/data/bnc519228_odd-breaksB.docx 
b/sw/qa/core/header_footer/data/bnc519228_odd-breaksB.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/bnc519228_odd-breaksB.docx
rename to sw/qa/core/header_footer/data/bnc519228_odd-breaksB.docx
diff --git a/sw/qa/extras/ooxmlexport/data/bnc875718.docx 
b/sw/qa/core/header_footer/data/bnc875718.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/bnc875718.docx
rename to sw/qa/core/header_footer/data/bnc875718.docx
diff --git a/sw/qa/extras/ooxmlexport/data/bnc884615-mso-position.docx 
b/sw/qa/core/header_footer/data/bnc884615-mso-position.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/bnc884615-mso-position.docx
rename to sw/qa/core/header_footer/data/bnc884615-mso-position.docx
diff --git a/sw/qa/extras/ooxmlexport/data/cont-sect-break-header-footer.docx 
b/sw/qa/core/header_footer/data/cont-sect-break-header-footer.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/cont-sect-break-header-footer.docx
rename to sw/qa/core/header_footer/data/cont-sect-break-header-footer.docx
diff --git a/sw/qa/extras/ooxmlexport/data/fdo64238_a.docx 
b/sw/qa/core/header_footer/data/fdo64238_a.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/fdo64238_a.docx
rename to sw/qa/core/header_footer/data/fdo64238_a.docx
diff --git a/sw/qa/extras/ooxmlexport/data/fdo64238_b.docx 
b/sw/qa/core/header_footer/data/fdo64238_b.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/fdo64238_b.docx
rename to sw/qa/core/header_footer/data/fdo64238_b.docx
diff --git a/sw/qa/extras/ooxmlexport/data/fdo65655.docx 
b/sw/qa/core/header_footer/data/fdo65655.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/fdo65655.docx
rename to sw/qa/core/header_footer/data/fdo65655.docx
diff --git a/sw/qa/extras/ooxmlexport/data/fdo66145.docx 
b/sw/qa/core/header_footer/data/fdo66145.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/fdo66145.docx
rename to sw/qa/core/header_footer/data/fdo66145.docx
diff --git a/sw/qa/extras/ww8export/data/first-header-footer.doc 
b/sw/qa/core/header_footer/data/first-header-footer.doc
similarity index 100%
rename from sw/qa/extras/ww8export/data/first-header-footer.doc
rename to sw/qa/core/header_footer/data/first-header-footer.doc
diff --git a/sw/qa/extras/ooxmlexport/data/first-header-footer.docx 
b/sw/qa/core/header_footer/data/first-header-footer.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/first-header-footer.docx
rename to sw/qa/core/header_footer/data/first-header-footer.docx
diff --git a/sw/qa/extras/odfexport/data/first-header-footer.odt 
b/sw/qa/core/header_footer/data/first-header-footer.odt
similarity index 100%
rename from sw/qa/extras/odfexport/data/first-header-footer.odt
rename to sw/qa/core/header_footer/data/first-header-footer.odt
diff --git a/sw/qa/extras/ooxmlexport/data/first-header-footerB.odt 
b/sw/qa/core/header_footer/data/first-header-footerB.odt
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/first-header-footerB.odt
rename to sw/qa/core/header_footer/data/first-header-footerB.odt
diff --git a/sw/qa/extras/ooxmlexport/data/headerfooter-link-to-prev.docx 
b/sw/qa/core/header_footer/data/headerfooter-link-to-prev.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/headerfooter-link-to-prev.docx
rename to sw/qa/core/header_footer/data/headerfooter-link-to-prev.docx
diff --git a/sw/qa/extras/ooxmlexport/data/n750935.docx 
b/sw/qa/core/header_footer/data/n750935.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/n750935.docx
rename to sw/qa/core/header_footer/data/n750935.docx
diff --git a/sw/qa/extras/ooxmlexport/data/tdf112694.docx 
b/sw/qa/core/header_footer/data/tdf112694.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf112694.docx
rename to sw/qa/core/header_footer/data/tdf112694.docx
diff --git a/sw/qa/extras/ooxmlexport/data/tdf113849_evenAndOddHeaders.odt 
b/sw/qa/core/header_footer/data/tdf113849_evenAndOddHeaders.odt
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf113849_evenAndOddHeaders.odt
rename to sw/qa/core/header_footer/data/tdf113849_evenAndOddHeaders.odt
diff --git a/sw/qa/extras/odfexport/data/tdf118393.odt 
b/sw/qa/core/header_footer/data/tdf118393.odt
similarity index 100%
rename from sw/qa/extras/odfexport/data/tdf118393.odt
rename to sw/qa/core/header_footer/data/tdf118393.odt
diff --git a/sw/qa/extras/ooxmlimport/data/tdf127778.docx 
b/sw/qa/core/header_footer/data/tdf127778.docx
similarity index 100%
rename from sw/qa/extras/ooxmlimport/data/tdf127778.docx
rename to sw/qa/core/header_footer/data/tdf127778.docx
diff --git a/sw/qa/extras/ooxmlexport/data/tdf129582.docx 
b/sw/qa/core/header_footer/data/tdf129582.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf129582.docx
rename to sw/qa/core/header_footer/data/tdf129582.docx
diff --git a/sw/qa/core/header_footer/data/tdf135216_evenOddFooter.docx 
b/sw/qa/core/header_footer/data/tdf135216_evenOddFooter.docx
new file mode 100644
index 000000000000..05840f984827
Binary files /dev/null and 
b/sw/qa/core/header_footer/data/tdf135216_evenOddFooter.docx differ
diff --git a/sw/qa/extras/ooxmlexport/data/tdf135216_evenOddFooter.odt 
b/sw/qa/core/header_footer/data/tdf135216_evenOddFooter.odt
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf135216_evenOddFooter.odt
rename to sw/qa/core/header_footer/data/tdf135216_evenOddFooter.odt
diff --git a/sw/qa/extras/ooxmlexport/data/tdf145998_firstHeader.odt 
b/sw/qa/core/header_footer/data/tdf145998_firstHeader.odt
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf145998_firstHeader.odt
rename to sw/qa/core/header_footer/data/tdf145998_firstHeader.odt
diff --git a/sw/qa/extras/ooxmlexport/data/tdf57155.docx 
b/sw/qa/core/header_footer/data/tdf57155.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf57155.docx
rename to sw/qa/core/header_footer/data/tdf57155.docx
diff --git a/sw/qa/extras/ooxmlexport/data/tdf69635.docx 
b/sw/qa/core/header_footer/data/tdf69635.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf69635.docx
rename to sw/qa/core/header_footer/data/tdf69635.docx
diff --git a/sw/qa/extras/ooxmlexport/data/tdf79639.docx 
b/sw/qa/core/header_footer/data/tdf79639.docx
similarity index 100%
rename from sw/qa/extras/ooxmlexport/data/tdf79639.docx
rename to sw/qa/core/header_footer/data/tdf79639.docx
diff --git a/sw/qa/extras/odfexport/odfexport.cxx 
b/sw/qa/extras/odfexport/odfexport.cxx
index b92f5eaaf22c..9d8f45c768b1 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -757,26 +757,6 @@ DECLARE_ODFEXPORT_TEST(testFdo79358, "fdo79358.odt")
     CPPUNIT_ASSERT_EQUAL(uno::Any(uno::Sequence<OUString>()), 
xLevels->getByIndex(2));
 }
 
-DECLARE_ODFEXPORT_TEST(testFirstHeaderFooter, "first-header-footer.odt")
-{
-    CPPUNIT_ASSERT_EQUAL(6, getPages());
-    // Test import and export of the header-first token.
-
-    // The document has 6 pages, two page styles for the first and second half 
of pages.
-    CPPUNIT_ASSERT_EQUAL(OUString("First header"),  
parseDump("/root/page[1]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First footer"),  
parseDump("/root/page[1]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Left header"),   
parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Left footer"),   
parseDump("/root/page[2]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Right header"),  
parseDump("/root/page[3]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Right footer"),  
parseDump("/root/page[3]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First header2"), 
parseDump("/root/page[4]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First footer2"), 
parseDump("/root/page[4]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Right header2"), 
parseDump("/root/page[5]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Right footer2"), 
parseDump("/root/page[5]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Left header2"),  
parseDump("/root/page[6]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Left footer2"),  
parseDump("/root/page[6]/footer/txt/text()"));
-}
-
 DECLARE_ODFEXPORT_TEST(testTextframeGradient, "textframe-gradient.odt")
 {
     CPPUNIT_ASSERT_EQUAL(2, getShapes());
@@ -1876,53 +1856,6 @@ DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt")
     CPPUNIT_ASSERT_EQUAL(1, getShapes());
 }
 
-// Check for correct header/footer with special first page with TOC inside:
-// - DECLARE_ODFEXPORT_TEST(testTdf118393, "tdf118393.odt")
-// - DECLARE_OOXMLEXPORT_TEST(testTdf118393, "tdf118393.odt")
-DECLARE_ODFEXPORT_TEST(testTdf118393, "tdf118393.odt")
-{
-    CPPUNIT_ASSERT_EQUAL( 7, getPages() );
-
-    // First page has no header/footer
-    {
-        xmlDocUniquePtr pXmlDoc = parseLayoutDump();
-
-        // check first page
-        xmlXPathObjectPtr pXmlPage1Header = getXPathNode(pXmlDoc, 
"/root/page[1]/header");
-        CPPUNIT_ASSERT_EQUAL(0, 
xmlXPathNodeSetGetLength(pXmlPage1Header->nodesetval));
-
-        xmlXPathObjectPtr pXmlPage1Footer = getXPathNode(pXmlDoc, 
"/root/page[1]/footer");
-        CPPUNIT_ASSERT_EQUAL(0, 
xmlXPathNodeSetGetLength(pXmlPage1Footer->nodesetval));
-
-        // check second page in the same way
-        xmlXPathObjectPtr pXmlPage2Header = getXPathNode(pXmlDoc, 
"/root/page[2]/header");
-        CPPUNIT_ASSERT_EQUAL(1, 
xmlXPathNodeSetGetLength(pXmlPage2Header->nodesetval));
-
-        xmlXPathObjectPtr pXmlPage2Footer = getXPathNode(pXmlDoc, 
"/root/page[2]/footer");
-        CPPUNIT_ASSERT_EQUAL(1, 
xmlXPathNodeSetGetLength(pXmlPage2Footer->nodesetval));
-   }
-
-    // All other pages should have header/footer
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[2]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[3]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[3]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[4]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[4]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[5]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[5]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[6]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[6]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[7]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[7]/footer/txt/text()"));
-}
-
 DECLARE_ODFEXPORT_TEST(testTdf135338_firstLeftPageFooter, 
"tdf135338_firstLeftPageFooter.odt")
 {
     CPPUNIT_ASSERT_EQUAL(6, getPages());
diff --git a/sw/qa/extras/ooxmlexport/data/tdf118393.odt 
b/sw/qa/extras/ooxmlexport/data/tdf118393.odt
deleted file mode 100644
index ff8d5400950b..000000000000
Binary files a/sw/qa/extras/ooxmlexport/data/tdf118393.odt and /dev/null differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 4fc4b7a218f8..52f7a2c9c9d0 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -77,54 +77,6 @@ CPPUNIT_TEST_FIXTURE(Test, testFooterBodyDistance)
     assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/w:br", 1);
 }
 
-// Check for correct header/footer with special first page with TOC inside:
-// - DECLARE_ODFEXPORT_TEST(testTdf118393, "tdf118393.odt")
-// - DECLARE_OOXMLEXPORT_TEST(testTdf118393, "tdf118393.odt")
-CPPUNIT_TEST_FIXTURE(Test, testTdf118393)
-{
-    loadAndReload("tdf118393.odt");
-    CPPUNIT_ASSERT_EQUAL( 7, getPages() );
-
-    // First page has no header/footer
-    {
-        xmlDocUniquePtr pXmlDoc = parseLayoutDump();
-
-        // check first page
-        xmlXPathObjectPtr pXmlPage1Header = getXPathNode(pXmlDoc, 
"/root/page[1]/header");
-        CPPUNIT_ASSERT_EQUAL(0, 
xmlXPathNodeSetGetLength(pXmlPage1Header->nodesetval));
-
-        xmlXPathObjectPtr pXmlPage1Footer = getXPathNode(pXmlDoc, 
"/root/page[1]/footer");
-        CPPUNIT_ASSERT_EQUAL(0, 
xmlXPathNodeSetGetLength(pXmlPage1Footer->nodesetval));
-
-        // check second page in the same way
-        xmlXPathObjectPtr pXmlPage2Header = getXPathNode(pXmlDoc, 
"/root/page[2]/header");
-        CPPUNIT_ASSERT_EQUAL(1, 
xmlXPathNodeSetGetLength(pXmlPage2Header->nodesetval));
-
-        xmlXPathObjectPtr pXmlPage2Footer = getXPathNode(pXmlDoc, 
"/root/page[2]/footer");
-        CPPUNIT_ASSERT_EQUAL(1, 
xmlXPathNodeSetGetLength(pXmlPage2Footer->nodesetval));
-   }
-
-    // All other pages should have header/footer
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[2]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[3]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[3]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[4]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[4]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[5]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[5]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[6]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[6]/footer/txt/text()"));
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[7]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"),   
parseDump("/root/page[7]/footer/txt/text()"));
-}
-
 DECLARE_OOXMLEXPORT_TEST(testfdo81031, "fdo81031.docx")
 {
     // vml image was not rendered
@@ -190,48 +142,6 @@ CPPUNIT_TEST_FIXTURE(Test, testParaShading)
     assertXPathNoAttribute(pXmlDoc, "/w:document/w:body/w:p/w:pPr/w:shd", 
"themeColor");
 }
 
-DECLARE_OOXMLEXPORT_TEST(testFirstHeaderFooter, "first-header-footer.docx")
-{
-    // Test import and export of a section's headerf/footerf properties.
-    // (copied from a ww8export test, with doc converted to docx using Word)
-
-    CPPUNIT_ASSERT_EQUAL( 6, getPages() );
-
-    // The document has 6 pages. Note that we don't test if 4 or just 2 page
-    // styles are created, the point is that layout should be correct.
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header"),  
parseDump("/root/page[1]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer"),  
parseDump("/root/page[1]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page header"),   
parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer"),   
parseDump("/root/page[2]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header"),  
parseDump("/root/page[3]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer"),  
parseDump("/root/page[3]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header2"), 
parseDump("/root/page[4]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer 2"), 
parseDump("/root/page[4]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header 2"), 
parseDump("/root/page[5]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer 2"), 
parseDump("/root/page[5]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page header 2"),  
parseDump("/root/page[6]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer 2"),  
parseDump("/root/page[6]/footer/txt/text()"));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testFirstHeaderFooterB)
-{
-    loadAndReload("first-header-footerB.odt");
-    CPPUNIT_ASSERT_EQUAL( 6, getPages() );
-
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header"),  
parseDump("/root/page[1]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer"),  
parseDump("/root/page[1]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page header"),   
parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer"),   
parseDump("/root/page[2]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header"),  
parseDump("/root/page[3]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer"),  
parseDump("/root/page[3]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header2"), 
parseDump("/root/page[4]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer 2"), 
parseDump("/root/page[4]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page header 2"), 
parseDump("/root/page[5]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Odd page footer 2"), 
parseDump("/root/page[5]/footer/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page header 2"),  
parseDump("/root/page[6]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("Even page footer 2"),  
parseDump("/root/page[6]/footer/txt/text()"));
-}
-
 CPPUNIT_TEST_FIXTURE(Test, testFDO83044)
 {
     loadAndSave("fdo83044.docx");
@@ -503,44 +413,6 @@ CPPUNIT_TEST_FIXTURE(Test, testRot270Flipv)
     assertXPath(pXmlDoc, "//a:xfrm", "rot", "16200000");
 }
 
-CPPUNIT_TEST_FIXTURE(Test, testMsoPosition)
-{
-    loadAndSave("bnc884615-mso-position.docx");
-    {
-        xmlDocUniquePtr doc = parseExport("word/footer1.xml");
-        // We write the frames out in different order than they were read, so 
check it's the correct
-        // textbox first by checking width. These tests may need reordering if 
that gets fixed.
-        OUString style1 = getXPath(doc, 
"/w:ftr/w:p/w:r[3]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-        CPPUNIT_ASSERT( style1.indexOf( ";width:531pt;" ) >= 0 );
-        CPPUNIT_ASSERT( style1.indexOf( ";mso-position-vertical-relative:page" 
) >= 0 );
-        CPPUNIT_ASSERT( style1.indexOf( 
";mso-position-horizontal-relative:page" ) >= 0 );
-        OUString style2 = getXPath(doc, 
"/w:ftr/w:p/w:r[4]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-        CPPUNIT_ASSERT( style2.indexOf( ";width:549pt;" ) >= 0 );
-        CPPUNIT_ASSERT( style2.indexOf( ";mso-position-vertical-relative:text" 
) >= 0 );
-        CPPUNIT_ASSERT( style2.indexOf( ";mso-position-horizontal:center" ) >= 
0 );
-        CPPUNIT_ASSERT( style2.indexOf( 
";mso-position-horizontal-relative:text" ) >= 0 );
-        OUString style3 = getXPath(doc, 
"/w:ftr/w:p/w:r[5]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-        CPPUNIT_ASSERT( style3.indexOf( ";width:36pt;" ) >= 0 );
-        CPPUNIT_ASSERT( style3.indexOf( 
";mso-position-horizontal-relative:text" ) >= 0 );
-        CPPUNIT_ASSERT( style3.indexOf( ";mso-position-vertical-relative:text" 
) >= 0 );
-    }
-
-    xmlDocUniquePtr doc = parseExport("word/header1.xml");
-    OUString style1 = getXPath(doc, 
"/w:hdr/w:p/w:r[2]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-    CPPUNIT_ASSERT( style1.indexOf( ";width:335.75pt;" ) >= 0 );
-    CPPUNIT_ASSERT( style1.indexOf( ";mso-position-horizontal-relative:page" ) 
>= 0 );
-    CPPUNIT_ASSERT( style1.indexOf( ";mso-position-vertical-relative:page" ) 
>= 0 );
-    OUString style2 = getXPath(doc, 
"/w:hdr/w:p/w:r[3]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-    CPPUNIT_ASSERT( style2.indexOf( ";width:138.15pt;" ) >= 0 );
-    CPPUNIT_ASSERT( style2.indexOf( ";mso-position-horizontal-relative:page" ) 
>= 0 );
-    CPPUNIT_ASSERT( style2.indexOf( ";mso-position-vertical-relative:page" ) 
>= 0 );
-    OUString style3 = getXPath(doc, 
"/w:hdr/w:p/w:r[4]/mc:AlternateContent/mc:Fallback/w:pict/v:rect", "style");
-    CPPUNIT_ASSERT( style3.indexOf( ";width:163.8pt;" ) >= 0 );
-    CPPUNIT_ASSERT( style3.indexOf( ";mso-position-horizontal-relative:page" ) 
>= 0 );
-    CPPUNIT_ASSERT( style3.indexOf( ";mso-position-vertical-relative:page" ) 
>= 0 );
-
-}
-
 DECLARE_OOXMLEXPORT_TEST(testWpsCharColor, "wps-char-color.docx")
 {
     uno::Reference<text::XTextRange> xShape(getShape(1), uno::UNO_QUERY);
@@ -954,13 +826,6 @@ DECLARE_OOXMLEXPORT_TEST(testTdf91261, "tdf91261.docx")
     bool bGridSnapToChars;
     xStyle->getPropertyValue("GridSnapToChars") >>= bGridSnapToChars;
     CPPUNIT_ASSERT_EQUAL(true, bGridSnapToChars);
-
-}
-
-DECLARE_OOXMLEXPORT_TEST(testTdf79639, "tdf79639.docx")
-{
-    // This was 0, floating table in header wasn't converted to a TextFrame.
-    CPPUNIT_ASSERT_EQUAL(1, getShapes());
 }
 
 DECLARE_OOXMLEXPORT_TEST(testTdf89890, "tdf89890.docx")
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
index f83742a7c114..c6cca6f242d8 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx
@@ -721,32 +721,6 @@ DECLARE_OOXMLEXPORT_TEST(testFdo79535, "fdo79535.docx")
     CPPUNIT_ASSERT_EQUAL(1, getPages());
 }
 
-DECLARE_OOXMLEXPORT_TEST(testBnc875718, "bnc875718.docx")
-{
-    // The frame in the footer must not accidentally end up in the document 
body.
-    // The easiest way for this to test I've found is checking that
-    // xray ThisComponent.TextFrames.GetByIndex( index 
).Anchor.Text.ImplementationName
-    // is not SwXBodyText but rather SwXHeadFootText
-    uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<container::XIndexAccess> 
xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
-    // The sample bugdoc has 3 footer.xml and has a textframe in each. The 
first one is hidden
-    // and it has no text in its anchored text range: it is anchored to body 
text. Ignoring...
-    for( int i = 1;
-         i < xIndexAccess->getCount();
-         ++i )
-    {
-        uno::Reference<text::XTextFrame> frame(xIndexAccess->getByIndex( i ), 
uno::UNO_QUERY);
-        uno::Reference<text::XTextRange> range = frame->getAnchor();
-        uno::Reference<lang::XServiceInfo> text(range->getText(), 
uno::UNO_QUERY);
-        CPPUNIT_ASSERT_EQUAL( OUString( "SwXHeadFootText" ), 
text->getImplementationName());
-    }
-    // Also check that the footer contents are not in the body text.
-    uno::Reference<text::XTextDocument> textDocument(mxComponent, 
uno::UNO_QUERY);
-    uno::Reference<text::XText> text = textDocument->getText();
-    CPPUNIT_ASSERT(text); //Do not crash on empty content
-    CPPUNIT_ASSERT_EQUAL( OUString( "Text" ), text->getString());
-}
-
 DECLARE_OOXMLEXPORT_TEST(testCaption, "caption.docx")
 {
     uno::Reference<beans::XPropertySet> 
xStyle(getStyles("ParagraphStyles")->getByName("Caption"), uno::UNO_QUERY);
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index 908d8db90e3e..33873cd29bc1 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -254,32 +254,6 @@ CPPUNIT_TEST_FIXTURE(Test, 
testTdf76683_negativeTwipsMeasure)
     CPPUNIT_ASSERT( nColumn1 > nColumn2 );
 }
 
-DECLARE_OOXMLEXPORT_TEST(testTdf112694, "tdf112694.docx")
-{
-    uno::Any aPageStyle = getStyles("PageStyles")->getByName("Standard");
-    // Header was on when header for file was for explicit first pages only
-    // (marked via <w:titlePg>).
-    CPPUNIT_ASSERT(!getProperty<bool>(aPageStyle, "HeaderIsOn"));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf113849_evenAndOddHeaders)
-{
-    loadAndReload("tdf113849_evenAndOddHeaders.odt");
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header2 text", OUString("L. J. Kendall"), 
parseDump("/root/page[2]/header/txt"));
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer2 text", OUString("*"), 
parseDump("/root/page[2]/footer/txt"));
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header3 text", OUString("Shadow Hunt"), 
parseDump("/root/page[3]/header/txt"));
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer3 text", OUString("*"), 
parseDump("/root/page[3]/footer/txt"));
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Header4 text", OUString("L. J. Kendall"), 
parseDump("/root/page[4]/header/txt"));
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer4 text", OUString("*"), 
parseDump("/root/page[4]/footer/txt"));
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer5 text", OUString(""), 
parseDump("/root/page[5]/footer/txt"));
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Footer6 text", OUString(""), 
parseDump("/root/page[6]/footer/txt"));
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("Number of pages", 6, getPages() );
-}
-
 DECLARE_OOXMLEXPORT_TEST(testTdf118361_RTLfootnoteSeparator, 
"tdf118361_RTLfootnoteSeparator.docx")
 {
     uno::Any aPageStyle = getStyles("PageStyles")->getByName("Standard");
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
index 04044e4b5bd4..44724766a5a1 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport14.cxx
@@ -1383,49 +1383,6 @@ DECLARE_OOXMLEXPORT_TEST(testTdf146346, "tdf146346.docx")
 }
 #endif
 
-DECLARE_OOXMLEXPORT_TEST(testContSectBreakHeaderFooter, 
"cont-sect-break-header-footer.docx")
-{
-    // Load a document with a continuous section break on page 2.
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header, section 1"),
-                         parseDump("/root/page[1]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer, section 1"),
-                         parseDump("/root/page[1]/footer/txt/text()"));
-    // Make sure the header stays like this; if we naively just update the 
page style name of the
-    // first para on page 2, then this would be 'Header, section 2', which is 
incorrect.
-    CPPUNIT_ASSERT_EQUAL(OUString("First page header, section 2"),
-                         parseDump("/root/page[2]/header/txt/text()"));
-    CPPUNIT_ASSERT_EQUAL(OUString("First page footer, section 2"),
-                         parseDump("/root/page[2]/footer/txt/text()"));
-    // This is inherited from page 2.
-    CPPUNIT_ASSERT_EQUAL(OUString("Header, section 2"),
-                         parseDump("/root/page[3]/header/txt/text()"));
-    // Without the accompanying fix in place, this test would have failed with:
-    // - Expected: 1
-    // - Actual  : 0
-    // - xpath should match exactly 1 node
-    // i.e. the footer had no text (inherited from page 2), while the correct 
behavior is to provide
-    // the own footer text.
-    CPPUNIT_ASSERT_EQUAL(OUString("Footer, section 3"),
-                         parseDump("/root/page[3]/footer/txt/text()"));
-
-    // Without the export fix in place, the import-export-import test would 
have failed with:
-    // - Expected: Header, section 2
-    // - Actual  : First page header, section 2
-    // i.e. both the header and the footer on page 3 was wrong.
-
-    // Additional problem: top margin on page 3 was wrong.
-    if (isExported())
-    {
-        xmlDocUniquePtr pXml = parseExport("word/document.xml");
-        // Without the accompanying fix in place, this test would have failed 
with:
-        // - Expected: 2200
-        // - Actual  : 2574
-        // i.e. the top margin on page 3 was too large and now matches the 
value from the input
-        // document.
-        assertXPath(pXml, "/w:document/w:body/w:sectPr/w:pgMar", "top", 
"2200");
-    }
-}
-
 CPPUNIT_TEST_FIXTURE(Test, testHyphenationAuto)
 {
     loadAndReload("hyphenation.odt");
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
index 302c7a5dd1cd..83b1200c8f1f 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport15.cxx
@@ -505,51 +505,6 @@ CPPUNIT_TEST_FIXTURE(Test, 
testTdf145998_unnecessaryPageStyles)
     CPPUNIT_ASSERT_EQUAL(OUString(), parseDump("/root/page[5]/footer/txt"));
 }
 
-CPPUNIT_TEST_FIXTURE(Test, testTdf145998_firstHeader)
-{
-    loadAndReload("tdf145998_firstHeader.odt");
-
-    // Sanity check - always good to test when dealing with page styles and 
breaks.
-    CPPUNIT_ASSERT_EQUAL(2, getPages());
-
-    CPPUNIT_ASSERT_EQUAL(OUString("Very first header"), 
parseDump("/root/page[1]/header/txt"));
-
-    // Page Style is already used in prior section - this can't be the 
first-header
-    CPPUNIT_ASSERT_EQUAL(OUString("Normal Header"), 
parseDump("/root/page[2]/header/txt"));
-}
-
-CPPUNIT_TEST_FIXTURE(Test, testTdf135216_evenOddFooter)
-{
-    loadAndReload("tdf135216_evenOddFooter.odt");
-    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
-    uno::Reference<text::XTextViewCursorSupplier> 
xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
-    uno::Reference<text::XPageCursor> 
xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
-
-    // get LO page style for the first page (even page #2)
-    OUString pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
-    uno::Reference<container::XNameAccess> xPageStyles = 
getStyles("PageStyles");
-    uno::Reference<style::XStyle> 
xPageStyle(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
-
-    xCursor->jumpToFirstPage();  // Even/Left page #2
-    uno::Reference<text::XText> xFooter = 
getProperty<uno::Reference<text::XText>>(xPageStyle, "FooterTextLeft");
-    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
-
-    xCursor->jumpToNextPage();
-    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
-    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
-    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextFirst"));
-    CPPUNIT_ASSERT_EQUAL(OUString("odd page - first footer"), 
xFooter->getString());
-
-    xCursor->jumpToNextPage();
-    pageStyleName = getProperty<OUString>(xCursor, "PageStyleName");
-    xPageStyle.set(xPageStyles->getByName(pageStyleName), uno::UNO_QUERY);
-    xFooter.set(getProperty<uno::Reference<text::XText>>(xPageStyle, 
"FooterTextLeft"));
-    CPPUNIT_ASSERT_EQUAL(OUString("even page"), xFooter->getString());
-
-    // The contents of paragraph 2 should be the page number (2) located on 
page 1.
-    getParagraph(2, "2");
-}
-
 CPPUNIT_TEST_FIXTURE(Test, testTdf136929_framesOfParagraph)
 {
     loadAndReload("tdf136929_framesOfParagraph.odt");
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
index 6d501548ad25..8c4e308da732 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport16.cxx
@@ -469,23 +469,6 @@ CPPUNIT_TEST_FIXTURE(Test, testCustomShapePresetExport)
     CPPUNIT_ASSERT_EQUAL(17, nCount);
 }
 
-CPPUNIT_TEST_FIXTURE(Test, testTdf69635)
-{
-    loadAndSave("tdf69635.docx");
-    xmlDocUniquePtr pXmlHeader1 = parseExport("word/header1.xml");
-    xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml");
-    CPPUNIT_ASSERT(pXmlHeader1);
-    CPPUNIT_ASSERT(pXmlSettings);
-
-    // Without the accompanying fix in place, this test would have failed with:
-    // - Expected: "left"
-    // - Actual  : "right"
-    assertXPathContent(pXmlHeader1, "/w:hdr/w:p/w:r/w:t", "left");
-
-    // Make sure "left" appears as a hidden header
-    assertXPath(pXmlSettings, "/w:settings/w:evenAndOddHeaders", 0);
-}
-
 DECLARE_OOXMLEXPORT_TEST(testTdf148671, "tdf148671.docx")
 {
     // Don't assert with 'pFieldMark' failed when document is opened
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
index bf26037fffc8..0ff66099b7b2 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
@@ -722,20 +722,6 @@ DECLARE_OOXMLEXPORT_TEST(testFdo65265, "fdo65265.docx")
     CPPUNIT_ASSERT_EQUAL(OUString("Format"), 
getProperty<OUString>(getRun(xParagraph2, 2), "RedlineType"));
 }
 
-DECLARE_OOXMLEXPORT_TEST(testFdo65655, "fdo65655.docx")
-{
-    // The problem was that the DOCX had a non-blank odd footer and a blank 
even footer
-    // The 'Different Odd & Even Pages' was turned on
-    // However - LO assumed that because the 'even' footer is blank - it 
should ignore the 'Different Odd & Even Pages' flag
-    // So it did not import it and did not export it
-    uno::Reference<beans::XPropertySet> 
xPropertySet(getStyles("PageStyles")->getByName("Standard"), uno::UNO_QUERY);
-    bool bValue = false;
-    xPropertySet->getPropertyValue("HeaderIsShared") >>= bValue;
-    CPPUNIT_ASSERT_EQUAL(false, bValue);
-    xPropertySet->getPropertyValue("FooterIsShared") >>= bValue;
-    CPPUNIT_ASSERT_EQUAL(false, bValue);
-}
-
 DECLARE_OOXMLEXPORT_TEST(testFDO63053, "fdo63053.docx")
 {
     uno::Reference<document::XDocumentPropertiesSupplier> 
xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY);
@@ -823,46 +809,6 @@ DECLARE_OOXMLEXPORT_TEST(testFdo43093, "fdo43093.docx")
     CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, nLRDir);
 }
 
-DECLARE_OOXMLEXPORT_TEST(testFdo64238_a, "fdo64238_a.docx")
-{
-    // The problem was that when 'Show Only Odd Footer' was marked in Word and 
the Even footer *was filled*
-    // then LO would still import the Even footer and concatenate it to the 
odd footer.
-    // This case specifically is for :
-    // 'Blank Odd Footer' with 'Non-Blank Even Footer' when 'Show Only Odd 
Footer' is marked in Word
-    // In this case the imported footer in LO was supposed to be blank, but 
instead was the 'even' footer
-    uno::Reference<text::XText> xFooterText = getProperty< 
uno::Reference<text::XText> >(getStyles("PageStyles")->getByName("Standard"), 
"FooterText");
-    uno::Reference< text::XTextRange > xFooterParagraph = getParagraphOfText( 
1, xFooterText );
-    uno::Reference<container::XEnumerationAccess> 
xRunEnumAccess(xFooterParagraph, uno::UNO_QUERY);
-    uno::Reference<container::XEnumeration> xRunEnum = 
xRunEnumAccess->createEnumeration();
-    sal_Int32 numOfRuns = 0;
-    while (xRunEnum->hasMoreElements())
-    {
-        xRunEnum->nextElement();
-        numOfRuns++;
-    }
-    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), numOfRuns);
-}
-
-DECLARE_OOXMLEXPORT_TEST(testFdo64238_b, "fdo64238_b.docx")
-{
-    // The problem was that when 'Show Only Odd Footer' was marked in Word and 
the Even footer *was filled*
-    // then LO would still import the Even footer and concatenate it to the 
odd footer.
-    // This case specifically is for :
-    // 'Non-Blank Odd Footer' with 'Non-Blank Even Footer' when 'Show Only Odd 
Footer' is marked in Word

... etc. - the rest is truncated

Reply via email to