20#include <config_feature_desktop.h>
21#include <config_wasm_strip.h>
26#include <osl/module.h>
27#include <osl/diagnose.h>
28#include <osl/mutex.hxx>
41#ifndef DISABLE_DYNLOADING
42 oslModule s_hAccessibleImplementationModule =
nullptr;
44#if HAVE_FEATURE_DESKTOP
45#if !ENABLE_WASM_STRIP_ACCESSIBILITY
57 class AccessibleDummyFactory:
58 public IAccessibleFactory
61 AccessibleDummyFactory();
62 AccessibleDummyFactory(
const AccessibleDummyFactory&) =
delete;
63 AccessibleDummyFactory& operator=(
const AccessibleDummyFactory&) =
delete;
66 virtual ~AccessibleDummyFactory()
override;
70 css::uno::Reference< css::accessibility::XAccessibleContext >
71 createAccessibleContext(
VCLXButton* )
override
75 css::uno::Reference< css::accessibility::XAccessibleContext >
80 css::uno::Reference< css::accessibility::XAccessibleContext >
85 css::uno::Reference< css::accessibility::XAccessibleContext >
90 css::uno::Reference< css::accessibility::XAccessibleContext >
95 css::uno::Reference< css::accessibility::XAccessibleContext >
100 css::uno::Reference< css::accessibility::XAccessibleContext >
105 css::uno::Reference< css::accessibility::XAccessibleContext >
106 createAccessibleContext(
VCLXEdit* )
override
110 css::uno::Reference< css::accessibility::XAccessibleContext >
115 css::uno::Reference< css::accessibility::XAccessibleContext >
120 css::uno::Reference< css::accessibility::XAccessibleContext >
125 css::uno::Reference< css::accessibility::XAccessibleContext >
130 css::uno::Reference< css::accessibility::XAccessibleContext >
131 createAccessibleContext(
VCLXWindow* )
override
135 css::uno::Reference< css::accessibility::XAccessible >
136 createAccessible(
Menu* ,
bool )
override
144 AccessibleDummyFactory::AccessibleDummyFactory()
149 AccessibleDummyFactory::~AccessibleDummyFactory()
158 :m_bInitialized( false )
162#if !ENABLE_WASM_STRIP_ACCESSIBILITY
163#if HAVE_FEATURE_DESKTOP
164#ifndef DISABLE_DYNLOADING
165 extern "C" {
static void thisModule() {} }
167 extern "C" void *getStandardAccessibleFactory();
177 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
179#if !ENABLE_WASM_STRIP_ACCESSIBILITY
180#if HAVE_FEATURE_DESKTOP
184#ifndef DISABLE_DYNLOADING
185 const OUString sModuleName(
SVLIBRARY(
"acc" ) );
186 s_hAccessibleImplementationModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
187 if ( s_hAccessibleImplementationModule !=
nullptr )
189 const OUString sFactoryCreationFunc(
"getStandardAccessibleFactory");
191 osl_getFunctionSymbol( s_hAccessibleImplementationModule, sFactoryCreationFunc.pData ));
194 OSL_ENSURE( s_pAccessibleFactoryFunc,
"AccessibilityClient::ensureInitialized: could not load the library, or not retrieve the needed symbol!" );
196 s_pAccessibleFactoryFunc = getStandardAccessibleFactory;
200 if ( s_pAccessibleFactoryFunc )
203 OSL_ENSURE( pFactory,
"AccessibilityClient::ensureInitialized: no factory provided by the A11Y lib!" );
206 s_pFactory = pFactory;
217 s_pFactory =
new AccessibleDummyFactory;
225 OSL_ENSURE( s_pFactory.is(),
"AccessibilityClient::getFactory: at least a dummy factory should have been created!" );