summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--embeddedobj/CppunitTest_embeddedobj_msole.mk4
-rw-r--r--embeddedobj/qa/cppunit/msole.cxx21
2 files changed, 25 insertions, 0 deletions
diff --git a/embeddedobj/CppunitTest_embeddedobj_msole.mk b/embeddedobj/CppunitTest_embeddedobj_msole.mk
index 522c2372446b..bdeda1ef98dd 100644
--- a/embeddedobj/CppunitTest_embeddedobj_msole.mk
+++ b/embeddedobj/CppunitTest_embeddedobj_msole.mk
@@ -33,6 +33,10 @@ $(eval $(call gb_CppunitTest_use_libraries,embeddedobj_msole, \
tl \
))
+$(eval $(call gb_CppunitTest_use_system_win32_libs,embeddedobj_msole,\
+ ole32 \
+))
+
$(eval $(call gb_CppunitTest_use_sdk_api,embeddedobj_msole))
$(eval $(call gb_CppunitTest_use_ure,embeddedobj_msole))
diff --git a/embeddedobj/qa/cppunit/msole.cxx b/embeddedobj/qa/cppunit/msole.cxx
index 493b5c6a2ca6..6bd849584a4a 100644
--- a/embeddedobj/qa/cppunit/msole.cxx
+++ b/embeddedobj/qa/cppunit/msole.cxx
@@ -26,6 +26,10 @@
#include <unotools/ucbstreamhelper.hxx>
#include <vcl/outdev.hxx>
+#ifdef _WIN32
+#include <systools/win32/comtools.hxx>
+#endif
+
using namespace ::com::sun::star;
namespace
@@ -39,6 +43,20 @@ public:
{
}
};
+
+bool IsPaintClassNotRegistered()
+{
+#ifdef _WIN32
+ sal::systools::CoInitializeGuard g(0);
+ // Check if MS Paint's {0003000A-0000-0000-C000-000000000046} is registered
+ CLSID clsidPaint{ 0x0003000A, 0000, 0000, { 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } };
+ LPOLESTR pProgId = nullptr;
+ if (ProgIDFromCLSID(clsidPaint, &pProgId) == REGDB_E_CLASSNOTREG)
+ return true;
+ CoTaskMemFree(pProgId);
+#endif
+ return false;
+}
}
namespace
@@ -78,6 +96,9 @@ CPPUNIT_TEST_FIXTURE(Test, testSaveOnThread)
return;
}
+ if (IsPaintClassNotRegistered())
+ return;
+
DBG_TESTSOLARMUTEX();
OUString aURL = createFileURL(u"reqif-ole2.xhtml");
uno::Sequence<beans::PropertyValue> aLoadProperties = {