toolkit/source/helper/accessibilityclient.cxx | 137 +------------------------- 1 file changed, 8 insertions(+), 129 deletions(-)
New commits: commit ce6f91863fb7ad1c1f129a23202aefeba3378dbc Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Fri Feb 23 18:39:42 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Feb 24 07:41:26 2024 +0100 remove dummy accessibility factory because when the dynamic symbol lookup fails, the dummy factory returns nullptrs to code expecting valid pointers, and end up with a much harder bug to diagnose, instead of failing at the actual problem site. Change-Id: I8e4885dc192b7089e1b1716567b41420309e8984 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163853 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/toolkit/source/helper/accessibilityclient.cxx b/toolkit/source/helper/accessibilityclient.cxx index cad81b3a915e..c8bbf2cfb523 100644 --- a/toolkit/source/helper/accessibilityclient.cxx +++ b/toolkit/source/helper/accessibilityclient.cxx @@ -50,112 +50,6 @@ namespace toolkit } - //= AccessibleDummyFactory - - namespace { - - class AccessibleDummyFactory: - public IAccessibleFactory - { - public: - AccessibleDummyFactory(); - AccessibleDummyFactory(const AccessibleDummyFactory&) = delete; - AccessibleDummyFactory& operator=(const AccessibleDummyFactory&) = delete; - - protected: - virtual ~AccessibleDummyFactory() override; - - public: - // IAccessibleFactory - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXButton* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXCheckBox* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXRadioButton* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXListBox* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXFixedHyperlink* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXFixedText* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXScrollBar* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXEdit* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXMultiLineEdit* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXComboBox* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXToolBox* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXHeaderBar* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( SVTXNumericField* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessibleContext > - createAccessibleContext( VCLXWindow* /*_pXWindow*/ ) override - { - return nullptr; - } - css::uno::Reference< css::accessibility::XAccessible > - createAccessible( Menu* /*_pMenu*/, bool /*_bIsMenuBar*/ ) override - { - return nullptr; - } - }; - - } - - AccessibleDummyFactory::AccessibleDummyFactory() - { - } - - - AccessibleDummyFactory::~AccessibleDummyFactory() - { - } - - //= AccessibilityClient @@ -188,37 +82,22 @@ namespace toolkit { #ifndef DISABLE_DYNLOADING s_hAccessibleImplementationModule = osl_loadModuleRelative( &thisModule, u"" SVLIBRARY( "acc" ) ""_ustr.pData, 0 ); - if ( s_hAccessibleImplementationModule != nullptr ) - { - s_pAccessibleFactoryFunc = reinterpret_cast<GetStandardAccComponentFactory>( - osl_getFunctionSymbol( s_hAccessibleImplementationModule, u"getStandardAccessibleFactory"_ustr.pData )); - - } - OSL_ENSURE( s_pAccessibleFactoryFunc, "AccessibilityClient::ensureInitialized: could not load the library, or not retrieve the needed symbol!" ); + assert(s_hAccessibleImplementationModule); + s_pAccessibleFactoryFunc = reinterpret_cast<GetStandardAccComponentFactory>( + osl_getFunctionSymbol( s_hAccessibleImplementationModule, u"getStandardAccessibleFactory"_ustr.pData )); #else s_pAccessibleFactoryFunc = getStandardAccessibleFactory; #endif // DISABLE_DYNLOADING - // get a factory instance - if ( s_pAccessibleFactoryFunc ) - { - IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() ); - OSL_ENSURE( pFactory, "AccessibilityClient::ensureInitialized: no factory provided by the A11Y lib!" ); - if ( pFactory ) - { - s_pFactory = pFactory; - pFactory->release(); - } - } + assert(s_pAccessibleFactoryFunc); + IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() ); + assert(pFactory); + s_pFactory = pFactory; + pFactory->release(); } #endif // HAVE_FEATURE_DESKTOP #endif // ENABLE_WASM_STRIP_ACCESSIBILITY - if (!s_pFactory) - // the attempt to load the lib, or to create the factory, failed - // -> fall back to a dummy factory - s_pFactory = new AccessibleDummyFactory; - m_bInitialized = true; }