[Libreoffice-commits] core.git: oox/source sw/qa

Miklos Vajna vmiklos at collabora.co.uk
Tue Mar 18 03:52:57 PDT 2014


 oox/source/core/xmlfilterbase.cxx                  |   15 ++++++++++++++-
 sw/qa/extras/ooxmlimport/data/strict-smartart.docx |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx           |   11 +++++++++--
 3 files changed, 23 insertions(+), 3 deletions(-)

New commits:
commit 8c52b5dd1c6457131b2c2c6b85222400fce3f246
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Mar 18 11:26:41 2014 +0100

    oox: fix DOCX strict import of SmartArt
    
    Change-Id: Ied8283e17ec4379f218dc60912e1c41ca28a8ac9

diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index 5b054f8..130ae9e 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -90,8 +90,11 @@ struct NamespaceIds: public rtl::StaticWithInit<
             "http://www.w3.org/XML/1998/namespace",
             "http://schemas.openxmlformats.org/package/2006/relationships",
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
+            "http://purl.oclc.org/ooxml/officeDocument/relationships",
             "http://schemas.openxmlformats.org/drawingml/2006/main",
+            "http://purl.oclc.org/ooxml/drawingml/main",
             "http://schemas.openxmlformats.org/drawingml/2006/diagram",
+            "http://purl.oclc.org/ooxml/drawingml/diagram",
             "http://schemas.openxmlformats.org/drawingml/2006/chart",
             "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing",
             "urn:schemas-microsoft-com:vml",
@@ -114,8 +117,11 @@ struct NamespaceIds: public rtl::StaticWithInit<
             NMSP_xml,
             NMSP_packageRel,
             NMSP_officeRel,
+            NMSP_officeRel,
+            NMSP_dml,
             NMSP_dml,
             NMSP_dmlDiagram,
+            NMSP_dmlDiagram,
             NMSP_dmlChart,
             NMSP_dmlChartDr,
             NMSP_vml,
@@ -146,8 +152,15 @@ struct NamespaceIds: public rtl::StaticWithInit<
 void registerNamespaces( FastParser& rParser )
 {
     const Sequence< beans::Pair<OUString, sal_Int32> > ids = NamespaceIds::get();
+
+    // Filter out duplicates: a namespace can have multiple URL's, think of
+    // strict vs trasitional.
+    std::set<sal_Int32> aSet;
     for (sal_Int32 i = 0; i < ids.getLength(); ++i)
-        rParser.registerNamespace(ids[i].Second);
+        aSet.insert(ids[i].Second);
+
+    for (std::set<sal_Int32>::iterator it = aSet.begin(); it != aSet.end(); ++it)
+        rParser.registerNamespace(*it);
 }
 
 } // namespace
diff --git a/sw/qa/extras/ooxmlimport/data/strict-smartart.docx b/sw/qa/extras/ooxmlimport/data/strict-smartart.docx
new file mode 100644
index 0000000..bab7c16
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/strict-smartart.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 535ebf8..1492cd9 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -70,13 +70,13 @@ public:
 
     virtual void preTest(const char* filename) SAL_OVERRIDE
     {
-        if (OString(filename) == "smartart.docx")
+        if (OString(filename) == "smartart.docx" || OString(filename) == "strict-smartart.docx")
             SvtFilterOptions::Get().SetSmartArt2Shape(true);
     }
 
     virtual void postTest(const char* filename) SAL_OVERRIDE
     {
-        if (OString(filename) == "smartart.docx")
+        if (OString(filename) == "smartart.docx" || OString(filename) == "strict-smartart.docx")
             SvtFilterOptions::Get().SetSmartArt2Shape(false);
     }
 };
@@ -1969,6 +1969,13 @@ DECLARE_OOXMLIMPORT_TEST(testStrictLockedcanvas, "strict-lockedcanvas.docx")
     getShape(1);
 }
 
+DECLARE_OOXMLIMPORT_TEST(testSmartartStrict, "strict-smartart.docx")
+{
+    uno::Reference<container::XIndexAccess> xGroup(getShape(1), uno::UNO_QUERY);
+    // This was 0, SmartArt was visually missing.
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xGroup->getCount()); // 3 ellipses + 3 arrows
+}
+
 DECLARE_OOXMLIMPORT_TEST(testI124106, "i124106.docx")
 {
     // This was 2.


More information about the Libreoffice-commits mailing list