Kaydet (Commit) c2913591 authored tarafından Caolán McNamara's avatar Caolán McNamara

rework filters test to squeeze through extra flags

that are needed to load .odt, .sxw etc files, and
add a regression test for CVE-2012-4233

Change-Id: Ie178725ded3d76942030d12f23074de519cf62de
üst 2ffd82c3
...@@ -34,7 +34,9 @@ class PictFilterTest ...@@ -34,7 +34,9 @@ class PictFilterTest
public: public:
PictFilterTest() : BootstrapFixture(true, false) {} PictFilterTest() : BootstrapFixture(true, false) {}
virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &); virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
/** /**
* Ensure CVEs remain unbroken * Ensure CVEs remain unbroken
...@@ -47,7 +49,8 @@ public: ...@@ -47,7 +49,8 @@ public:
}; };
bool PictFilterTest::load(const rtl::OUString &, bool PictFilterTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
SvFileStream aFileStream(rURL, STREAM_READ); SvFileStream aFileStream(rURL, STREAM_READ);
Graphic aGraphic; Graphic aGraphic;
......
...@@ -54,7 +54,9 @@ class TgaFilterTest ...@@ -54,7 +54,9 @@ class TgaFilterTest
public: public:
TgaFilterTest() : BootstrapFixture(true, false) {} TgaFilterTest() : BootstrapFixture(true, false) {}
virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &); virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
/** /**
* Ensure CVEs remain unbroken * Ensure CVEs remain unbroken
...@@ -67,7 +69,8 @@ public: ...@@ -67,7 +69,8 @@ public:
}; };
bool TgaFilterTest::load(const rtl::OUString &, bool TgaFilterTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
SvFileStream aFileStream(rURL, STREAM_READ); SvFileStream aFileStream(rURL, STREAM_READ);
Graphic aGraphic; Graphic aGraphic;
......
...@@ -54,7 +54,9 @@ class TiffFilterTest ...@@ -54,7 +54,9 @@ class TiffFilterTest
public: public:
TiffFilterTest() : BootstrapFixture(true, false) {} TiffFilterTest() : BootstrapFixture(true, false) {}
virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &); virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
/** /**
* Ensure CVEs remain unbroken * Ensure CVEs remain unbroken
...@@ -67,7 +69,8 @@ public: ...@@ -67,7 +69,8 @@ public:
}; };
bool TiffFilterTest::load(const rtl::OUString &, bool TiffFilterTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
SvFileStream aFileStream(rURL, STREAM_READ); SvFileStream aFileStream(rURL, STREAM_READ);
Graphic aGraphic; Graphic aGraphic;
......
...@@ -45,7 +45,11 @@ namespace ...@@ -45,7 +45,11 @@ namespace
{ {
public: public:
virtual void setUp(); virtual void setUp();
virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &);
virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
void test(); void test();
CPPUNIT_TEST_SUITE(HwpFilterTest); CPPUNIT_TEST_SUITE(HwpFilterTest);
...@@ -66,7 +70,8 @@ namespace ...@@ -66,7 +70,8 @@ namespace
} }
bool HwpFilterTest::load(const rtl::OUString &, bool HwpFilterTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
uno::Sequence< beans::PropertyValue > aDescriptor(1); uno::Sequence< beans::PropertyValue > aDescriptor(1);
aDescriptor[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL")); aDescriptor[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL"));
......
...@@ -48,7 +48,8 @@ namespace ...@@ -48,7 +48,8 @@ namespace
virtual void setUp(); virtual void setUp();
virtual bool load(const rtl::OUString &, virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &); const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
void test(); void test();
...@@ -70,7 +71,8 @@ namespace ...@@ -70,7 +71,8 @@ namespace
} }
bool LotusWordProTest::load(const rtl::OUString &, bool LotusWordProTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
uno::Sequence< beans::PropertyValue > aDescriptor(1); uno::Sequence< beans::PropertyValue > aDescriptor(1);
aDescriptor[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL")); aDescriptor[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL"));
......
...@@ -68,7 +68,7 @@ using namespace ::com::sun::star::uno; ...@@ -68,7 +68,7 @@ using namespace ::com::sun::star::uno;
namespace { namespace {
struct FileFormat { struct FileFormat {
const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType; const char* pName; const char* pFilterName; const char* pTypeName; unsigned int nFormatType;
}; };
FileFormat aFileFormats[] = { FileFormat aFileFormats[] = {
...@@ -89,9 +89,13 @@ class ScFiltersTest ...@@ -89,9 +89,13 @@ class ScFiltersTest
public: public:
ScFiltersTest(); ScFiltersTest();
virtual bool load(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData); virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion);
ScDocShellRef load(const rtl::OUString &rFilter, const rtl::OUString &rURL, ScDocShellRef load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType=0); const rtl::OUString &rUserData, const rtl::OUString& rTypeName,
unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion);
void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath); void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath);
void createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rFilePath); void createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rFilePath);
...@@ -142,20 +146,18 @@ private: ...@@ -142,20 +146,18 @@ private:
}; };
ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType) const rtl::OUString &rUserData, const rtl::OUString& rTypeName,
unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
sal_uInt32 nFormat = 0; SfxFilter* pFilter = new SfxFilter(
if (nFormatType)
nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS;
SfxFilter* aFilter = new SfxFilter(
rFilter, rFilter,
rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(), rtl::OUString(), nFilterFlags, nClipboardID, rTypeName, 0, rtl::OUString(),
rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); rUserData, rtl::OUString("private:factory/scalc*") );
aFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); pFilter->SetVersion(nFilterVersion);
ScDocShellRef xDocShRef = new ScDocShell; ScDocShellRef xDocShRef = new ScDocShell;
SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ);
pSrcMed->SetFilter(aFilter); pSrcMed->SetFilter(pFilter);
if (!xDocShRef->DoLoad(pSrcMed)) if (!xDocShRef->DoLoad(pSrcMed))
{ {
xDocShRef->DoClose(); xDocShRef->DoClose();
...@@ -167,9 +169,11 @@ ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUStr ...@@ -167,9 +169,11 @@ ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUStr
} }
bool ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, bool ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData) const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
ScDocShellRef xDocShRef = load(rFilter, rURL, rUserData, rtl::OUString()); ScDocShellRef xDocShRef = load(rFilter, rURL, rUserData,
rtl::OUString(), nFilterFlags, nClipboardID, nFilterVersion);
bool bLoaded = xDocShRef.Is(); bool bLoaded = xDocShRef.Is();
//reference counting of ScDocShellRef is very confused. //reference counting of ScDocShellRef is very confused.
if (bLoaded) if (bLoaded)
...@@ -227,7 +231,11 @@ void ScFiltersTest::testDir(osl::Directory& rDir, sal_uInt32 nType) ...@@ -227,7 +231,11 @@ void ScFiltersTest::testDir(osl::Directory& rDir, sal_uInt32 nType)
std::cout << "File: " << rtl::OUStringToOString(sURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl; std::cout << "File: " << rtl::OUStringToOString(sURL, RTL_TEXTENCODING_UTF8).getStr() << std::endl;
//rtl::OStringBuffer aMessage("Failed loading: "); //rtl::OStringBuffer aMessage("Failed loading: ");
//aMessage.append(rtl::OUStringToOString(sURL, RTL_TEXTENCODING_UTF8)); //aMessage.append(rtl::OUStringToOString(sURL, RTL_TEXTENCODING_UTF8));
ScDocShellRef xDocSh = load( aFilterName,sURL, rtl::OUString(),aFilterType, aFileFormats[nType].nFormatType);
unsigned int nFormatType = aFileFormats[nType].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, sURL, rtl::OUString(),
aFilterType, nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
// use this only if you're sure that all files can be loaded // use this only if you're sure that all files can be loaded
// pay attention to lock files // pay attention to lock files
//CPPUNIT_ASSERT_MESSAGE(aMessage.getStr(), xDocSh.Is()); //CPPUNIT_ASSERT_MESSAGE(aMessage.getStr(), xDocSh.Is());
...@@ -300,7 +308,10 @@ ScDocShellRef ScFiltersTest::loadDoc(const rtl::OUString& rName, sal_Int32 nForm ...@@ -300,7 +308,10 @@ ScDocShellRef ScFiltersTest::loadDoc(const rtl::OUString& rName, sal_Int32 nForm
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL( rName, aFileExtension, aFileName ); createFileURL( rName, aFileExtension, aFileName );
rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[nFormat].nFormatType); unsigned int nFormatType = aFileFormats[nFormat].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT(xDocSh.Is()); CPPUNIT_ASSERT(xDocSh.Is());
return xDocSh; return xDocSh;
} }
......
...@@ -51,7 +51,7 @@ using namespace ::com::sun::star::uno; ...@@ -51,7 +51,7 @@ using namespace ::com::sun::star::uno;
namespace { namespace {
struct FileFormat { struct FileFormat {
const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType; const char* pName; const char* pFilterName; const char* pTypeName; unsigned int nFormatType;
}; };
FileFormat aFileFormats[] = { FileFormat aFileFormats[] = {
......
...@@ -83,7 +83,7 @@ using namespace ::com::sun::star::uno; ...@@ -83,7 +83,7 @@ using namespace ::com::sun::star::uno;
namespace { namespace {
struct FileFormat { struct FileFormat {
const char* pName; const char* pFilterName; const char* pTypeName; sal_uLong nFormatType; const char* pName; const char* pFilterName; const char* pTypeName; unsigned int nFormatType;
}; };
FileFormat aFileFormats[] = { FileFormat aFileFormats[] = {
...@@ -105,9 +105,13 @@ class ScFiltersTest ...@@ -105,9 +105,13 @@ class ScFiltersTest
public: public:
ScFiltersTest(); ScFiltersTest();
virtual bool load(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData); virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion);
ScDocShellRef load(const rtl::OUString &rFilter, const rtl::OUString &rURL, ScDocShellRef load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType=0); const rtl::OUString &rUserData, const rtl::OUString& rTypeName,
unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion);
void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath); void createFileURL(const rtl::OUString& aFileBase, const rtl::OUString& aFileExtension, rtl::OUString& rFilePath);
void createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rFilePath); void createCSVPath(const rtl::OUString& aFileBase, rtl::OUString& rFilePath);
...@@ -230,20 +234,18 @@ private: ...@@ -230,20 +234,18 @@ private:
}; };
ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, const rtl::OUString& rTypeName, sal_uLong nFormatType) const rtl::OUString &rUserData, const rtl::OUString& rTypeName,
unsigned int nFilterFlags, unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
sal_uInt32 nFormat = 0; SfxFilter* pFilter = new SfxFilter(
if (nFormatType)
nFormat = SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS;
SfxFilter* aFilter = new SfxFilter(
rFilter, rFilter,
rtl::OUString(), nFormatType, nFormat, rTypeName, 0, rtl::OUString(), rtl::OUString(), nFilterFlags, nClipboardID, rTypeName, 0, rtl::OUString(),
rUserData, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:factory/scalc*")) ); rUserData, rtl::OUString("private:factory/scalc*") );
aFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT); pFilter->SetVersion(nFilterVersion);
ScDocShellRef xDocShRef = new ScDocShell; ScDocShellRef xDocShRef = new ScDocShell;
SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ);
pSrcMed->SetFilter(aFilter); pSrcMed->SetFilter(pFilter);
if (!xDocShRef->DoLoad(pSrcMed)) if (!xDocShRef->DoLoad(pSrcMed))
{ {
xDocShRef->DoClose(); xDocShRef->DoClose();
...@@ -255,9 +257,11 @@ ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUStr ...@@ -255,9 +257,11 @@ ScDocShellRef ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUStr
} }
bool ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, bool ScFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData) const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
ScDocShellRef xDocShRef = load(rFilter, rURL, rUserData, rtl::OUString()); ScDocShellRef xDocShRef = load(rFilter, rURL, rUserData,
rtl::OUString(), nFilterFlags, nClipboardID, nFilterVersion);
bool bLoaded = xDocShRef.Is(); bool bLoaded = xDocShRef.Is();
//reference counting of ScDocShellRef is very confused. //reference counting of ScDocShellRef is very confused.
if (bLoaded) if (bLoaded)
...@@ -272,7 +276,10 @@ ScDocShellRef ScFiltersTest::loadDoc(const rtl::OUString& rName, sal_Int32 nForm ...@@ -272,7 +276,10 @@ ScDocShellRef ScFiltersTest::loadDoc(const rtl::OUString& rName, sal_Int32 nForm
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL( rName, aFileExtension, aFileName ); createFileURL( rName, aFileExtension, aFileName );
rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[nFormat].nFormatType); unsigned int nFormatType = aFileFormats[nFormat].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT(xDocSh.Is()); CPPUNIT_ASSERT(xDocSh.Is());
return xDocSh; return xDocSh;
} }
...@@ -933,7 +940,10 @@ void ScFiltersTest::testBugFixesODS() ...@@ -933,7 +940,10 @@ void ScFiltersTest::testBugFixesODS()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[0].pTypeName, strlen(aFileFormats[0].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[0].pName << " Test" << std::endl; std::cout << aFileFormats[0].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[0].nFormatType); unsigned int nFormatType = aFileFormats[0].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
xDocSh->DoHardRecalc(true); xDocSh->DoHardRecalc(true);
CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.ods", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.ods", xDocSh.Is());
...@@ -969,7 +979,10 @@ void ScFiltersTest::testBugFixesXLS() ...@@ -969,7 +979,10 @@ void ScFiltersTest::testBugFixesXLS()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[1].pTypeName, strlen(aFileFormats[1].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[1].pName << " Test" << std::endl; std::cout << aFileFormats[1].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[1].nFormatType); unsigned int nFormatType = aFileFormats[1].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
xDocSh->DoHardRecalc(true); xDocSh->DoHardRecalc(true);
CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xls", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xls", xDocSh.Is());
...@@ -987,7 +1000,10 @@ void ScFiltersTest::testBugFixesXLSX() ...@@ -987,7 +1000,10 @@ void ScFiltersTest::testBugFixesXLSX()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[2].pTypeName, strlen(aFileFormats[2].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[2].pTypeName, strlen(aFileFormats[2].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[2].pName << " Test" << std::endl; std::cout << aFileFormats[2].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[2].nFormatType); unsigned int nFormatType = aFileFormats[2].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
xDocSh->DoHardRecalc(true); xDocSh->DoHardRecalc(true);
CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xlsx", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load bugFixes.xlsx", xDocSh.Is());
...@@ -1211,7 +1227,11 @@ void ScFiltersTest::testBrokenQuotesCSV() ...@@ -1211,7 +1227,11 @@ void ScFiltersTest::testBrokenQuotesCSV()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[CSV].pTypeName, strlen(aFileFormats[CSV].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[CSV].pTypeName, strlen(aFileFormats[CSV].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[CSV].pName << " Test" << std::endl; std::cout << aFileFormats[CSV].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[CSV].nFormatType);
unsigned int nFormatType = aFileFormats[CSV].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load fdo48621_broken_quotes.csv", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load fdo48621_broken_quotes.csv", xDocSh.Is());
ScDocument* pDoc = xDocSh->GetDocument(); ScDocument* pDoc = xDocSh->GetDocument();
...@@ -1235,7 +1255,12 @@ void ScFiltersTest::testSharedFormulaXLSX() ...@@ -1235,7 +1255,12 @@ void ScFiltersTest::testSharedFormulaXLSX()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[XLSX].pName << " Test" << std::endl; std::cout << aFileFormats[XLSX].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[XLSX].nFormatType);
unsigned int nFormatType = aFileFormats[XLSX].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
xDocSh->DoHardRecalc(true); xDocSh->DoHardRecalc(true);
CPPUNIT_ASSERT_MESSAGE("Failed to load shared-formula.xlsx", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load shared-formula.xlsx", xDocSh.Is());
...@@ -1265,7 +1290,11 @@ void ScFiltersTest::testCellValueXLSX() ...@@ -1265,7 +1290,11 @@ void ScFiltersTest::testCellValueXLSX()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[XLSX].pName << " Test" << std::endl; std::cout << aFileFormats[XLSX].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[XLSX].nFormatType);
unsigned int nFormatType = aFileFormats[XLSX].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load cell-value.xlsx", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load cell-value.xlsx", xDocSh.Is());
ScDocument* pDoc = xDocSh->GetDocument(); ScDocument* pDoc = xDocSh->GetDocument();
...@@ -1335,7 +1364,11 @@ void ScFiltersTest::testControlImport() ...@@ -1335,7 +1364,11 @@ void ScFiltersTest::testControlImport()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[XLSX].pName << " Test" << std::endl; std::cout << aFileFormats[XLSX].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[XLSX].nFormatType);
unsigned int nFormatType = aFileFormats[XLSX].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load cell-value.xlsx", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load cell-value.xlsx", xDocSh.Is());
...@@ -1359,7 +1392,12 @@ void ScFiltersTest::testNumberFormatHTML() ...@@ -1359,7 +1392,12 @@ void ScFiltersTest::testNumberFormatHTML()
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL(aFileNameBase, aFileExt, aFileName); createFileURL(aFileNameBase, aFileExt, aFileName);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[HTML].nFormatType);
unsigned int nFormatType = aFileFormats[HTML].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load numberformat.html", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load numberformat.html", xDocSh.Is());
ScDocument* pDoc = xDocSh->GetDocument(); ScDocument* pDoc = xDocSh->GetDocument();
...@@ -1386,7 +1424,12 @@ void ScFiltersTest::testNumberFormatCSV() ...@@ -1386,7 +1424,12 @@ void ScFiltersTest::testNumberFormatCSV()
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL(aFileNameBase, aFileExt, aFileName); createFileURL(aFileNameBase, aFileExt, aFileName);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[CSV].nFormatType);
unsigned int nFormatType = aFileFormats[CSV].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load numberformat.html", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load numberformat.html", xDocSh.Is());
ScDocument* pDoc = xDocSh->GetDocument(); ScDocument* pDoc = xDocSh->GetDocument();
...@@ -1413,7 +1456,12 @@ void ScFiltersTest::testCellAnchoredShapesODS() ...@@ -1413,7 +1456,12 @@ void ScFiltersTest::testCellAnchoredShapesODS()
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL(aFileNameBase, aFileExt, aFileName); createFileURL(aFileNameBase, aFileExt, aFileName);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[ODS].nFormatType);
unsigned int nFormatType = aFileFormats[ODS].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load cell-anchored-shapes.ods", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load cell-anchored-shapes.ods", xDocSh.Is());
// There are two cell-anchored objects on the first sheet. // There are two cell-anchored objects on the first sheet.
...@@ -1468,7 +1516,12 @@ void ScFiltersTest::testPivotTableBasicODS() ...@@ -1468,7 +1516,12 @@ void ScFiltersTest::testPivotTableBasicODS()
rtl::OUString aFileName; rtl::OUString aFileName;
createFileURL(aFileNameBase, aFileExt, aFileName); createFileURL(aFileNameBase, aFileExt, aFileName);
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[ODS].nFormatType);
unsigned int nFormatType = aFileFormats[ODS].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load pivot-table-basic.ods", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load pivot-table-basic.ods", xDocSh.Is());
ScDocument* pDoc = xDocSh->GetDocument(); ScDocument* pDoc = xDocSh->GetDocument();
...@@ -1570,7 +1623,11 @@ void ScFiltersTest::testColorScaleODS() ...@@ -1570,7 +1623,11 @@ void ScFiltersTest::testColorScaleODS()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[ODS].pTypeName, strlen(aFileFormats[ODS].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[ODS].pTypeName, strlen(aFileFormats[ODS].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[ODS].pName << " Test" << std::endl; std::cout << aFileFormats[ODS].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[ODS].nFormatType);
unsigned int nFormatType = aFileFormats[ODS].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load colorScale.ods", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load colorScale.ods", xDocSh.Is());
...@@ -1590,7 +1647,11 @@ void ScFiltersTest::testColorScaleXLSX() ...@@ -1590,7 +1647,11 @@ void ScFiltersTest::testColorScaleXLSX()
createFileURL(aFileNameBase, aFileExtension, aFileName); createFileURL(aFileNameBase, aFileExtension, aFileName);
rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8); rtl::OUString aFilterType(aFileFormats[XLSX].pTypeName, strlen(aFileFormats[XLSX].pTypeName), RTL_TEXTENCODING_UTF8);
std::cout << aFileFormats[XLSX].pName << " Test" << std::endl; std::cout << aFileFormats[XLSX].pName << " Test" << std::endl;
ScDocShellRef xDocSh = load (aFilterName, aFileName, rtl::OUString(), aFilterType, aFileFormats[XLSX].nFormatType);
unsigned int nFormatType = aFileFormats[XLSX].nFormatType;
unsigned int nClipboardId = nFormatType ? SFX_FILTER_IMPORT | SFX_FILTER_USESOPTIONS : 0;
ScDocShellRef xDocSh = load(aFilterName, aFileName, rtl::OUString(), aFilterType,
nFormatType, nClipboardId, SOFFICE_FILEFORMAT_CURRENT);
CPPUNIT_ASSERT_MESSAGE("Failed to load colorScale.xlsx", xDocSh.Is()); CPPUNIT_ASSERT_MESSAGE("Failed to load colorScale.xlsx", xDocSh.Is());
......
...@@ -62,7 +62,10 @@ public: ...@@ -62,7 +62,10 @@ public:
SdFiltersTest(); SdFiltersTest();
::sd::DrawDocShellRef loadURL( const rtl::OUString &rURL ); ::sd::DrawDocShellRef loadURL( const rtl::OUString &rURL );
virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData); virtual bool load( const rtl::OUString &rFilter,
const rtl::OUString &rURL, const rtl::OUString &rUserData,
unsigned int nFilterFlags, unsigned int nClipboardID,
unsigned int nFilterVersion);
virtual void setUp(); virtual void setUp();
virtual void tearDown(); virtual void tearDown();
...@@ -179,12 +182,14 @@ void SdFiltersTest::testN778859() ...@@ -179,12 +182,14 @@ void SdFiltersTest::testN778859()
} }
bool SdFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, bool SdFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData) const rtl::OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID,
unsigned int nFilterVersion)
{ {
SfxFilter aFilter( SfxFilter aFilter(
rFilter, rFilter,
rtl::OUString(), 0, 0, rtl::OUString(), 0, rtl::OUString(), rtl::OUString(), nFilterFlags, nClipboardID, rtl::OUString(), 0, rtl::OUString(),
rUserData, rtl::OUString() ); rUserData, rtl::OUString() );
aFilter.SetVersion(nFilterVersion);
::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell(); ::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell();
SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ);
......
...@@ -76,7 +76,10 @@ public: ...@@ -76,7 +76,10 @@ public:
SdFiltersTest(); SdFiltersTest();
::sd::DrawDocShellRef loadURL( const rtl::OUString &rURL ); ::sd::DrawDocShellRef loadURL( const rtl::OUString &rURL );
virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData); virtual bool load( const rtl::OUString &rFilter,
const rtl::OUString &rURL, const rtl::OUString &rUserData,
unsigned int nFilterFlags, unsigned int nClipboardID,
unsigned int nFilterVersion);
virtual void setUp(); virtual void setUp();
virtual void tearDown(); virtual void tearDown();
...@@ -246,12 +249,14 @@ void SdFiltersTest::testStuff(::sd::DrawDocShellRef xDocShRef, const rtl::OStrin ...@@ -246,12 +249,14 @@ void SdFiltersTest::testStuff(::sd::DrawDocShellRef xDocShRef, const rtl::OStrin
} }
bool SdFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, bool SdFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData) const rtl::OUString &rUserData, unsigned int nFilterFlags, unsigned int nClipboardID,
unsigned int nFilterVersion)
{ {
SfxFilter aFilter( SfxFilter aFilter(
rFilter, rFilter,
rtl::OUString(), 0, 0, rtl::OUString(), 0, rtl::OUString(), rtl::OUString(), nFilterFlags, nClipboardID, rtl::OUString(), 0, rtl::OUString(),
rUserData, rtl::OUString() ); rUserData, rtl::OUString() );
aFilter.SetVersion(nFilterVersion);
::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell(); ::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell();
SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ);
......
...@@ -52,7 +52,8 @@ namespace ...@@ -52,7 +52,8 @@ namespace
bool checkStorage( const SotStorageRef &xObjStor ); bool checkStorage( const SotStorageRef &xObjStor );
virtual bool load(const rtl::OUString &, virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &); const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
void test(); void test();
...@@ -107,9 +108,6 @@ namespace ...@@ -107,9 +108,6 @@ namespace
for( SvStorageInfoList::iterator aIt = aInfoList.begin(); for( SvStorageInfoList::iterator aIt = aInfoList.begin();
aIt != aInfoList.end(); ++aIt ) aIt != aInfoList.end(); ++aIt )
{ {
// fprintf( stderr, "Stream '%s' size %ld\n",
// rtl::OUStringToOString( aIt->GetName(), RTL_TEXTENCODING_UTF8 ).getStr(),
// (long)aIt->GetSize() );
if( aIt->IsStorage() ) if( aIt->IsStorage() )
{ {
SotStorageRef xChild( xObjStor->OpenSotStorage( aIt->GetName() ) ); SotStorageRef xChild( xObjStor->OpenSotStorage( aIt->GetName() ) );
...@@ -123,7 +121,8 @@ namespace ...@@ -123,7 +121,8 @@ namespace
} }
bool SotTest::load(const rtl::OUString &, bool SotTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
SvFileStream aStream(rURL, STREAM_READ); SvFileStream aStream(rURL, STREAM_READ);
SotStorageRef xObjStor = new SotStorage(aStream); SotStorageRef xObjStor = new SotStorage(aStream);
......
...@@ -46,7 +46,9 @@ class SvtoolsFiltersTest ...@@ -46,7 +46,9 @@ class SvtoolsFiltersTest
public: public:
SvtoolsFiltersTest() : BootstrapFixture(true, false) {} SvtoolsFiltersTest() : BootstrapFixture(true, false) {}
virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &); virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
/** /**
* Ensure CVEs remain unbroken * Ensure CVEs remain unbroken
...@@ -59,7 +61,8 @@ public: ...@@ -59,7 +61,8 @@ public:
}; };
bool SvtoolsFiltersTest::load(const rtl::OUString &, bool SvtoolsFiltersTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &) const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
GraphicFilter aGraphicFilter(false); GraphicFilter aGraphicFilter(false);
SvFileStream aFileStream(rURL, STREAM_READ); SvFileStream aFileStream(rURL, STREAM_READ);
......
...@@ -80,6 +80,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_filters_test,\ ...@@ -80,6 +80,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_filters_test,\
forms/util/frm \ forms/util/frm \
framework/util/fwk \ framework/util/fwk \
i18npool/util/i18npool \ i18npool/util/i18npool \
package/source/xstor/xstor \
package/util/package2 \ package/util/package2 \
sax/source/expatwrap/expwrap \ sax/source/expatwrap/expwrap \
sfx2/util/sfx \ sfx2/util/sfx \
...@@ -91,6 +92,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_filters_test,\ ...@@ -91,6 +92,7 @@ $(eval $(call gb_CppunitTest_use_components,sw_filters_test,\
ucb/source/ucp/file/ucpfile1 \ ucb/source/ucp/file/ucpfile1 \
unoxml/source/service/unoxml \ unoxml/source/service/unoxml \
$(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \ $(if $(filter DESKTOP,$(BUILD_TYPE)),xmlhelp/util/ucpchelp1) \
xmloff/source/transform/xof \
)) ))
$(eval $(call gb_CppunitTest_use_configuration,sw_filters_test)) $(eval $(call gb_CppunitTest_use_configuration,sw_filters_test))
......
...@@ -62,7 +62,9 @@ class SwFiltersTest ...@@ -62,7 +62,9 @@ class SwFiltersTest
, public test::BootstrapFixture , public test::BootstrapFixture
{ {
public: public:
bool load(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData); virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion);
virtual void setUp(); virtual void setUp();
// Ensure CVEs remain unbroken // Ensure CVEs remain unbroken
...@@ -77,12 +79,14 @@ private: ...@@ -77,12 +79,14 @@ private:
}; };
bool SwFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL, bool SwFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData) const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
SfxFilter* pFilter = new SfxFilter( SfxFilter* pFilter = new SfxFilter(
rFilter, rFilter, rtl::OUString(), nFilterFlags,
rtl::OUString(), 0, 0, rtl::OUString(), 0, rtl::OUString(), nClipboardID, rtl::OUString(), 0, rtl::OUString(),
rUserData, rtl::OUString() ); rUserData, rtl::OUString());
pFilter->SetVersion(nFilterVersion);
SwDocShellRef xDocShRef = new SwDocShell; SwDocShellRef xDocShRef = new SwDocShell;
SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ); SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ);
...@@ -104,7 +108,15 @@ void SwFiltersTest::testCVEs() ...@@ -104,7 +108,15 @@ void SwFiltersTest::testCVEs()
{ {
testDir(rtl::OUString("Staroffice XML (Writer)"), testDir(rtl::OUString("Staroffice XML (Writer)"),
getURLFromSrc("/sw/qa/core/data/xml/"), getURLFromSrc("/sw/qa/core/data/xml/"),
rtl::OUString(FILTER_XML)); rtl::OUString(FILTER_XML),
SFX_FILTER_IMPORT | SFX_FILTER_OWN | SFX_FILTER_DEFAULT,
-1, SOFFICE_FILEFORMAT_CURRENT);
testDir(rtl::OUString("writer8"),
getURLFromSrc("/sw/qa/core/data/odt/"),
rtl::OUString(FILTER_XML),
SFX_FILTER_IMPORT | SFX_FILTER_OWN | SFX_FILTER_DEFAULT,
-1, SOFFICE_FILEFORMAT_CURRENT);
testDir(rtl::OUString("MS Word 97"), testDir(rtl::OUString("MS Word 97"),
getURLFromSrc("/sw/qa/core/data/ww8/"), getURLFromSrc("/sw/qa/core/data/ww8/"),
......
...@@ -162,11 +162,11 @@ sal_Int32 ReadThroughComponent( ...@@ -162,11 +162,11 @@ sal_Int32 ReadThroughComponent(
RTL_LOGFILE_CONTEXT_TRACE( aLog, "parser created" ); RTL_LOGFILE_CONTEXT_TRACE( aLog, "parser created" );
// get filter // get filter
OUString aFilterName(OUString::createFromAscii(pFilterName));
uno::Reference< xml::sax::XDocumentHandler > xFilter( uno::Reference< xml::sax::XDocumentHandler > xFilter(
rFactory->createInstanceWithArguments( rFactory->createInstanceWithArguments(aFilterName, rFilterArguments),
OUString::createFromAscii(pFilterName), rFilterArguments), UNO_QUERY);
UNO_QUERY ); SAL_WARN_IF(!xFilter.is(), "sw", "Can't instantiate filter component: " << aFilterName);
OSL_ENSURE( xFilter.is(), "Can't instantiate filter component." );
if( !xFilter.is() ) if( !xFilter.is() )
return ERR_SWG_READ_ERROR; return ERR_SWG_READ_ERROR;
RTL_LOGFILE_CONTEXT_TRACE1( aLog, "%s created", pFilterName ); RTL_LOGFILE_CONTEXT_TRACE1( aLog, "%s created", pFilterName );
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
* instead of those above. * instead of those above.
*/ */
#include <comphelper/documentconstants.hxx>
#include <rtl/ustring.hxx> #include <rtl/ustring.hxx>
#include "unotest/detail/unotestdllapi.hxx" #include "unotest/detail/unotestdllapi.hxx"
...@@ -56,21 +57,33 @@ public: ...@@ -56,21 +57,33 @@ public:
//root dir of test files, must contain pass, fail, indeterminate //root dir of test files, must contain pass, fail, indeterminate
const rtl::OUString &rURL, const rtl::OUString &rURL,
//additional filter data for SfxFilter //additional filter data for SfxFilter
const rtl::OUString &rUserData); const rtl::OUString &rUserData = rtl::OUString(),
//SfxFilterFlags for SfxFilter
unsigned int nFilterFlags = SFX_FILTER_IMPORT,
//Clipboard id for SfxFilter
unsigned int nClipboardID = 0,
//additional filter version for SfxFilter
unsigned int nFilterVersion = 0);
virtual bool load( virtual bool load(
const rtl::OUString &rFilter, const rtl::OUString &rFilter,
const rtl::OUString &rURL, const rtl::OUString &rURL,
const rtl::OUString &rUserData) = 0; const rtl::OUString &rUserData,
unsigned int nFilterFlags,
unsigned int nClipboardID,
unsigned int nFilterVersion) = 0;
protected: protected:
~FiltersTest() {} ~FiltersTest() {}
void recursiveScan( void recursiveScan(
filterStatus nExpected,
const rtl::OUString &rFilter, const rtl::OUString &rFilter,
const rtl::OUString &rURL, const rtl::OUString &rURL,
const rtl::OUString &rUserData, const rtl::OUString &rUserData,
filterStatus nExpected); unsigned int nFilterFlags,
unsigned int nClipboardID,
unsigned int nFilterVersion);
}; };
} }
......
...@@ -70,8 +70,10 @@ void decode(const rtl::OUString& rIn, const rtl::OUString &rOut) ...@@ -70,8 +70,10 @@ void decode(const rtl::OUString& rIn, const rtl::OUString &rOut)
rtl_cipher_destroy(cipher); rtl_cipher_destroy(cipher);
} }
void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData, void FiltersTest::recursiveScan(filterStatus nExpected,
filterStatus nExpected) const rtl::OUString &rFilter, const rtl::OUString &rURL,
const rtl::OUString &rUserData, unsigned int nFilterFlags,
unsigned int nClipboardID, unsigned int nFilterVersion)
{ {
osl::Directory aDir(rURL); osl::Directory aDir(rURL);
...@@ -83,7 +85,10 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin ...@@ -83,7 +85,10 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin
aItem.getFileStatus(aFileStatus); aItem.getFileStatus(aFileStatus);
rtl::OUString sURL = aFileStatus.getFileURL(); rtl::OUString sURL = aFileStatus.getFileURL();
if (aFileStatus.getFileType() == osl::FileStatus::Directory) if (aFileStatus.getFileType() == osl::FileStatus::Directory)
recursiveScan(rFilter, sURL, rUserData, nExpected); {
recursiveScan(nExpected, rFilter, sURL, rUserData,
nFilterFlags, nClipboardID, nFilterVersion);
}
else else
{ {
rtl::OUString sTmpFile; rtl::OUString sTmpFile;
...@@ -121,7 +126,8 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin ...@@ -121,7 +126,8 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin
//the hanging input file is visible //the hanging input file is visible
fprintf(stderr, "%s,", aRes.getStr()); fprintf(stderr, "%s,", aRes.getStr());
sal_uInt32 nStartTime = osl_getGlobalTimer(); sal_uInt32 nStartTime = osl_getGlobalTimer();
bool bRes = load(rFilter, sURL, rUserData); bool bRes = load(rFilter, sURL, rUserData, nFilterFlags,
nClipboardID, nFilterVersion);
sal_uInt32 nEndTime = osl_getGlobalTimer(); sal_uInt32 nEndTime = osl_getGlobalTimer();
if (bEncrypted) if (bEncrypted)
...@@ -137,15 +143,21 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin ...@@ -137,15 +143,21 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin
CPPUNIT_ASSERT(osl::FileBase::E_None == aDir.close()); CPPUNIT_ASSERT(osl::FileBase::E_None == aDir.close());
} }
void FiltersTest::testDir(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData) void FiltersTest::testDir(const rtl::OUString &rFilter,
const rtl::OUString &rURL, const rtl::OUString &rUserData,
unsigned int nFilterFlags, unsigned int nClipboardID,
unsigned int nFilterVersion)
{ {
fprintf(stderr, "File tested,Test Result,Execution Time (ms)\n"); fprintf(stderr, "File tested,Test Result,Execution Time (ms)\n");
recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pass")), recursiveScan(test::pass, rFilter,
rUserData, test::pass); rURL + rtl::OUString("pass"),
recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("fail")), rUserData, nFilterFlags, nClipboardID, nFilterVersion);
rUserData, test::fail); recursiveScan(test::fail, rFilter,
recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("indeterminate")), rURL + rtl::OUString("fail"),
rUserData, test::indeterminate); rUserData, nFilterFlags, nClipboardID, nFilterVersion);
recursiveScan(test::indeterminate, rFilter,
rURL + rtl::OUString("indeterminate"),
rUserData, nFilterFlags, nClipboardID, nFilterVersion);
} }
} }
......
...@@ -45,7 +45,10 @@ public: ...@@ -45,7 +45,10 @@ public:
virtual void setUp(); virtual void setUp();
virtual bool load(const OUString &, const OUString &rURL, const OUString &); virtual bool load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int);
void test(); void test();
CPPUNIT_TEST_SUITE(RtfTest); CPPUNIT_TEST_SUITE(RtfTest);
...@@ -62,7 +65,9 @@ void RtfTest::setUp() ...@@ -62,7 +65,9 @@ void RtfTest::setUp()
m_xFilter = uno::Reference< document::XFilter >(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), uno::UNO_QUERY_THROW); m_xFilter = uno::Reference< document::XFilter >(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), uno::UNO_QUERY_THROW);
} }
bool RtfTest::load(const OUString &, const OUString &rURL, const OUString &) bool RtfTest::load(const rtl::OUString &,
const rtl::OUString &rURL, const rtl::OUString &,
unsigned int, unsigned int, unsigned int)
{ {
uno::Sequence< beans::PropertyValue > aDescriptor(1); uno::Sequence< beans::PropertyValue > aDescriptor(1);
aDescriptor[0].Name = "URL"; aDescriptor[0].Name = "URL";
......
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