package/inc/ZipPackage.hxx | 3 +++ package/source/zippackage/ZipPackage.cxx | 12 ++++++++++++ vcl/workben/fftester.cxx | 10 ++++++++++ 3 files changed, 25 insertions(+)
New commits: commit d41b436058def4497240c54afc38b319ce388430 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Apr 25 14:45:27 2023 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Apr 25 17:03:40 2023 +0200 expose recovering zips for testing Change-Id: I4709a2fb0bbb0fcc4c7d57dad53c899e7ba79cb4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150971 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/package/inc/ZipPackage.hxx b/package/inc/ZipPackage.hxx index e07a8d9c1c9e..e83958241247 100644 --- a/package/inc/ZipPackage.hxx +++ b/package/inc/ZipPackage.hxx @@ -37,6 +37,7 @@ #include <vector> #include <optional> +class SvStream; class ZipOutputStream; class ZipPackageFolder; class ZipFile; @@ -158,4 +159,6 @@ public: }; #endif +extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportZip(SvStream& rStream); + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx index e03a17e8016a..eb7346236bb1 100644 --- a/package/source/zippackage/ZipPackage.cxx +++ b/package/source/zippackage/ZipPackage.cxx @@ -42,6 +42,7 @@ #include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <com/sun/star/container/XNameContainer.hpp> #include <comphelper/fileurl.hxx> +#include <comphelper/processfactory.hxx> #include <ucbhelper/content.hxx> #include <cppuhelper/exc_hlp.hxx> #include <com/sun/star/ucb/ContentCreationException.hpp> @@ -61,6 +62,7 @@ #include <o3tl/string_view.hxx> #include <osl/diagnose.h> #include <sal/log.hxx> +#include <unotools/streamwrap.hxx> #include <unotools/tempfile.hxx> #include <com/sun/star/io/XAsyncOutputMonitor.hpp> @@ -1821,4 +1823,14 @@ package_ZipPackage_get_implementation( return cppu::acquire(new ZipPackage(context)); } +extern "C" bool TestImportZip(SvStream& rStream) +{ + // explicitly tests the "RepairPackage" recovery mode + rtl::Reference<ZipPackage> xPackage(new ZipPackage(comphelper::getProcessComponentContext())); + css::uno::Reference<css::io::XInputStream> xStream(new utl::OInputStreamWrapper(rStream)); + css::uno::Sequence<Any> aArgs{ Any(xStream), Any(NamedValue("RepairPackage", Any(true))) }; + xPackage->initialize(aArgs); + return true; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/workben/fftester.cxx b/vcl/workben/fftester.cxx index 2d624b8e4c43..bc4a692b4f81 100644 --- a/vcl/workben/fftester.cxx +++ b/vcl/workben/fftester.cxx @@ -532,6 +532,16 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) SvFileStream aFileStream(out, StreamMode::READ); ret = static_cast<int>((*pfnImport)(aFileStream)); } + else if (strcmp(argv[2], "zip") == 0) + { + static FFilterCall pfnImport(nullptr); + if (!pfnImport) + { + pfnImport = load(u"libpackage2.so", "TestImportZip"); + } + SvFileStream aFileStream(out, StreamMode::READ); + ret = static_cast<int>((*pfnImport)(aFileStream)); + } #endif } catch (...)