diff options
-rw-r--r-- | embeddedobj/CppunitTest_embeddedobj_msole.mk | 4 | ||||
-rw-r--r-- | embeddedobj/qa/cppunit/msole.cxx | 21 |
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 = { |