[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