diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-12-14 15:43:08 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-12-14 16:00:55 +0100 |
commit | d737f8220f97f3060b87c05cca3ecaf3e80f9878 (patch) | |
tree | 699ce2c06d34f7db54a7c1a72eeb8613ef1620f6 /sw | |
parent | e9ac45cd0c61e9907a6846f0da64e519bb6b3c89 (diff) |
DOC filter: mark SmartTag support non-experimental
And also relax two import conditions, as it turns out Word accept those.
So instead of checking for each offset/length one by one, only check
once.
It's now as good as the DOCX one, I believe.
Change-Id: I1890ef61fdbbd2ab6facaf3e787f75b791adcfdc
Diffstat (limited to 'sw')
-rw-r--r-- | sw/qa/extras/ww8export/data/tscp.doc (renamed from sw/qa/extras/ww8import/data/tscp.doc) | bin | 23040 -> 23040 bytes | |||
-rw-r--r-- | sw/qa/extras/ww8export/ww8export.cxx | 40 | ||||
-rw-r--r-- | sw/qa/extras/ww8import/ww8import.cxx | 41 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8scan.cxx | 46 |
4 files changed, 58 insertions, 69 deletions
diff --git a/sw/qa/extras/ww8import/data/tscp.doc b/sw/qa/extras/ww8export/data/tscp.doc Binary files differindex 7b710fcab770..7b710fcab770 100644 --- a/sw/qa/extras/ww8import/data/tscp.doc +++ b/sw/qa/extras/ww8export/data/tscp.doc diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index 1bb1236b02c8..de107665d665 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -21,6 +21,8 @@ #include <com/sun/star/text/GraphicCrop.hpp> #include <com/sun/star/text/XFormField.hpp> #include <com/sun/star/view/DocumentZoomType.hpp> +#include <com/sun/star/rdf/URI.hpp> +#include <com/sun/star/rdf/Statement.hpp> #include <pagedesc.hxx> #include <sfx2/bindings.hxx> @@ -98,6 +100,44 @@ DECLARE_WW8EXPORT_TEST(testN325936, "n325936.doc") CPPUNIT_ASSERT_EQUAL(sal_Int32(100), nValue); } +DECLARE_WW8EXPORT_TEST(testTscp, "tscp.doc") +{ + uno::Reference<uno::XComponentContext> xComponentContext(comphelper::getProcessComponentContext()); + uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); + uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); + uno::Sequence< uno::Reference<rdf::XURI> > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); + // This failed, no graphs had the urn:tscp:names:baf:1.1 type. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aGraphNames.getLength()); + uno::Reference<rdf::XURI> xGraphName = aGraphNames[0]; + uno::Reference<rdf::XNamedGraph> xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); + + // No RDF statement on the first paragraph. + uno::Reference<rdf::XResource> xParagraph(getParagraph(1), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); + CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(xStatements->hasMoreElements())); + + // 3 RDF statements on the second paragraph. + xParagraph.set(getParagraph(2), uno::UNO_QUERY); + std::map<OUString, OUString> aExpectedStatements = { + {"urn:tscp:names:baf:1.1#BusinessAuthorization", "urn:example:tscp:1"}, + {"urn:tscp:names:baf:1.1#BusinessAuthorizationCategory", "urn:example:tscp:1:confidential"}, + {"urn:tscp:names:baf:1.1#BusinessAuthorizationDate", "2015-11-27T11:45:00"} + }; + std::map<OUString, OUString> aActualStatements; + xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); + while (xStatements->hasMoreElements()) + { + rdf::Statement aStatement = xStatements->nextElement().get<rdf::Statement>(); + aActualStatements[aStatement.Predicate->getNamespace() + aStatement.Predicate->getLocalName()] = aStatement.Object->getStringValue(); + } + CPPUNIT_ASSERT(aExpectedStatements == aActualStatements); + + // No RDF statement on the third paragraph. + xParagraph.set(getParagraph(3), uno::UNO_QUERY); + xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); + CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(xStatements->hasMoreElements())); +} + DECLARE_WW8EXPORT_TEST(testFdo45724, "fdo45724.odt") { // The text and background color of the control shape was not correct. diff --git a/sw/qa/extras/ww8import/ww8import.cxx b/sw/qa/extras/ww8import/ww8import.cxx index 6714b7127872..7e9307b8f09b 100644 --- a/sw/qa/extras/ww8import/ww8import.cxx +++ b/sw/qa/extras/ww8import/ww8import.cxx @@ -18,8 +18,6 @@ #include <com/sun/star/text/XTextFramesSupplier.hpp> #include <com/sun/star/text/XTextTablesSupplier.hpp> #include <com/sun/star/table/ShadowFormat.hpp> -#include <com/sun/star/rdf/URI.hpp> -#include <com/sun/star/rdf/Statement.hpp> #include <vcl/svapp.hxx> @@ -49,45 +47,6 @@ DECLARE_WW8IMPORT_TEST(testFloatingTableSectionMargins, "floating-table-section- CPPUNIT_ASSERT( abs(( pageLeft + pageWidth / 2 ) - ( tableLeft + tableWidth / 2 )) < 20 ); } -DECLARE_WW8IMPORT_TEST(testTscp, "tscp.doc") -{ - uno::Reference<uno::XComponentContext> xComponentContext(comphelper::getProcessComponentContext()); - uno::Reference<rdf::XURI> xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); - uno::Reference<rdf::XDocumentMetadataAccess> xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); - uno::Sequence< uno::Reference<rdf::XURI> > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); - // This failed, no graphs had the urn:tscp:names:baf:1.1 type. - CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), aGraphNames.getLength()); - uno::Reference<rdf::XURI> xGraphName = aGraphNames[0]; - uno::Reference<rdf::XNamedGraph> xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); - - // No RDF statement on the first paragraph. - uno::Reference<rdf::XResource> xParagraph(getParagraph(1), uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); - CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(xStatements->hasMoreElements())); - - // 3 RDF statements on the second paragraph. - xParagraph.set(getParagraph(2), uno::UNO_QUERY); - std::map<OUString, OUString> aExpectedStatements = { - {"urn:tscp:names:baf:1.1#BusinessAuthorization", "urn:example:tscp:1"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationCategory", "urn:example:tscp:1:confidential"}, - {"urn:tscp:names:baf:1.1#BusinessAuthorizationDate", "2015-11-27T11:45:00"} - }; - std::map<OUString, OUString> aActualStatements; - xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); - while (xStatements->hasMoreElements()) - { - rdf::Statement aStatement = xStatements->nextElement().get<rdf::Statement>(); - aActualStatements[aStatement.Predicate->getNamespace() + aStatement.Predicate->getLocalName()] = aStatement.Object->getStringValue(); - } - CPPUNIT_ASSERT(aExpectedStatements == aActualStatements); - - // No RDF statement on the third paragraph. - xParagraph.set(getParagraph(3), uno::UNO_QUERY); - xStatements = xGraph->getStatements(xParagraph, uno::Reference<rdf::XURI>(), uno::Reference<rdf::XURI>()); - CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(xStatements->hasMoreElements())); -} - - DECLARE_WW8IMPORT_TEST(testN757910, "n757910.doc") { // The internal margin was larger than 0.28cm diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx index 7386ee8fa0a5..3dda138a172b 100644 --- a/sw/source/filter/ww8/ww8scan.cxx +++ b/sw/source/filter/ww8/ww8scan.cxx @@ -44,7 +44,6 @@ #include <vcl/settings.hxx> #include <vcl/svapp.hxx> -#include <svtools/miscopt.hxx> #ifdef DEBUGSPRMREADER #include <stdio.h> @@ -5855,15 +5854,11 @@ WW8Fib::WW8Fib(SvStream& rSt, sal_uInt8 nWantedVersion, sal_uInt32 nOffset) rSt.Seek(0x432); rSt.ReadInt32(fcPlcfBkfFactoid); rSt.ReadUInt32(lcbPlcfBkfFactoid); - } - if (cfclcb > 136) - { + rSt.Seek(0x442); rSt.ReadInt32(fcPlcfBklFactoid); rSt.ReadUInt32(lcbPlcfBklFactoid); - } - if (cfclcb > 137) - { + rSt.Seek(0x44a); rSt.ReadInt32(fcFactoidData); rSt.ReadUInt32(lcbFactoidData); @@ -6241,28 +6236,23 @@ bool WW8Fib::Write(SvStream& rStrm) Set_UInt32( pData, fcAtrdExtra ); Set_UInt32( pData, lcbAtrdExtra ); - SvtMiscOptions aMiscOptions; - if (aMiscOptions.IsExperimentalMode()) - { - pData += 0x42a - 0x422; - Set_UInt32(pData, fcSttbfBkmkFactoid); - Set_UInt32(pData, lcbSttbfBkmkFactoid); - Set_UInt32(pData, fcPlcfBkfFactoid); - Set_UInt32(pData, lcbPlcfBkfFactoid); - - pData += 0x442 - 0x43A; - Set_UInt32(pData, fcPlcfBklFactoid); - Set_UInt32(pData, lcbPlcfBklFactoid); - Set_UInt32(pData, fcFactoidData); - Set_UInt32(pData, lcbFactoidData); - - pData += 0x4BA - 0x452; - Set_UInt32(pData, fcPlcffactoid); - Set_UInt32(pData, lcbPlcffactoid); - } - else - pData += 0x4DA - 0x422; + pData += 0x42a - 0x422; + Set_UInt32(pData, fcSttbfBkmkFactoid); + Set_UInt32(pData, lcbSttbfBkmkFactoid); + Set_UInt32(pData, fcPlcfBkfFactoid); + Set_UInt32(pData, lcbPlcfBkfFactoid); + + pData += 0x442 - 0x43A; + Set_UInt32(pData, fcPlcfBklFactoid); + Set_UInt32(pData, lcbPlcfBklFactoid); + Set_UInt32(pData, fcFactoidData); + Set_UInt32(pData, lcbFactoidData); + + pData += 0x4BA - 0x452; + Set_UInt32(pData, fcPlcffactoid); + Set_UInt32(pData, lcbPlcffactoid); + pData += 0x4DA - 0x4c2; Set_UInt32( pData, fcHplxsdr ); Set_UInt32( pData, 0); } |