From d737f8220f97f3060b87c05cca3ecaf3e80f9878 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 14 Dec 2015 15:43:08 +0100 Subject: 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 --- sw/qa/extras/ww8export/data/tscp.doc | Bin 0 -> 23040 bytes sw/qa/extras/ww8export/ww8export.cxx | 40 ++++++++++++++++++++++++++++++ sw/qa/extras/ww8import/data/tscp.doc | Bin 23040 -> 0 bytes sw/qa/extras/ww8import/ww8import.cxx | 41 ------------------------------- sw/source/filter/ww8/ww8scan.cxx | 46 ++++++++++++++--------------------- 5 files changed, 58 insertions(+), 69 deletions(-) create mode 100644 sw/qa/extras/ww8export/data/tscp.doc delete mode 100644 sw/qa/extras/ww8import/data/tscp.doc (limited to 'sw') diff --git a/sw/qa/extras/ww8export/data/tscp.doc b/sw/qa/extras/ww8export/data/tscp.doc new file mode 100644 index 000000000000..7b710fcab770 Binary files /dev/null and b/sw/qa/extras/ww8export/data/tscp.doc differ 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 #include #include +#include +#include #include #include @@ -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 xComponentContext(comphelper::getProcessComponentContext()); + uno::Reference xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); + uno::Reference xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); + uno::Sequence< uno::Reference > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); + // This failed, no graphs had the urn:tscp:names:baf:1.1 type. + CPPUNIT_ASSERT_EQUAL(static_cast(1), aGraphNames.getLength()); + uno::Reference xGraphName = aGraphNames[0]; + uno::Reference xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); + + // No RDF statement on the first paragraph. + uno::Reference xParagraph(getParagraph(1), uno::UNO_QUERY); + uno::Reference xStatements = xGraph->getStatements(xParagraph, uno::Reference(), uno::Reference()); + CPPUNIT_ASSERT_EQUAL(false, static_cast(xStatements->hasMoreElements())); + + // 3 RDF statements on the second paragraph. + xParagraph.set(getParagraph(2), uno::UNO_QUERY); + std::map 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 aActualStatements; + xStatements = xGraph->getStatements(xParagraph, uno::Reference(), uno::Reference()); + while (xStatements->hasMoreElements()) + { + rdf::Statement aStatement = xStatements->nextElement().get(); + 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(), uno::Reference()); + CPPUNIT_ASSERT_EQUAL(false, static_cast(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/data/tscp.doc b/sw/qa/extras/ww8import/data/tscp.doc deleted file mode 100644 index 7b710fcab770..000000000000 Binary files a/sw/qa/extras/ww8import/data/tscp.doc and /dev/null differ 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 #include #include -#include -#include #include @@ -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 xComponentContext(comphelper::getProcessComponentContext()); - uno::Reference xType = rdf::URI::create(xComponentContext, "urn:tscp:names:baf:1.1"); - uno::Reference xDocumentMetadataAccess(mxComponent, uno::UNO_QUERY); - uno::Sequence< uno::Reference > aGraphNames = xDocumentMetadataAccess->getMetadataGraphsWithType(xType); - // This failed, no graphs had the urn:tscp:names:baf:1.1 type. - CPPUNIT_ASSERT_EQUAL(static_cast(1), aGraphNames.getLength()); - uno::Reference xGraphName = aGraphNames[0]; - uno::Reference xGraph = xDocumentMetadataAccess->getRDFRepository()->getGraph(xGraphName); - - // No RDF statement on the first paragraph. - uno::Reference xParagraph(getParagraph(1), uno::UNO_QUERY); - uno::Reference xStatements = xGraph->getStatements(xParagraph, uno::Reference(), uno::Reference()); - CPPUNIT_ASSERT_EQUAL(false, static_cast(xStatements->hasMoreElements())); - - // 3 RDF statements on the second paragraph. - xParagraph.set(getParagraph(2), uno::UNO_QUERY); - std::map 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 aActualStatements; - xStatements = xGraph->getStatements(xParagraph, uno::Reference(), uno::Reference()); - while (xStatements->hasMoreElements()) - { - rdf::Statement aStatement = xStatements->nextElement().get(); - 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(), uno::Reference()); - CPPUNIT_ASSERT_EQUAL(false, static_cast(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 #include -#include #ifdef DEBUGSPRMREADER #include @@ -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); } -- cgit v1.2.3