Kaydet (Commit) d737f822 authored tarafından Miklos Vajna's avatar Miklos Vajna

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
üst e9ac45cd
......@@ -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.
......
......@@ -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
......
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment