From d3262b72f69311b282fbdbe3c38de743e76bdda9 Mon Sep 17 00:00:00 2001 From: Michael Weghorn Date: Mon, 26 May 2025 09:23:29 +0200 Subject: [PATCH] a11y tests: Don't rely on XWindow being window's XAccessible See commit ed03c63f00dee22112a8632df45e5e044541960d Author: Michael Weghorn Date: Thu May 22 09:45:02 2025 +0100 wina11y: Don't rely on win accessible being VCLXWindow for more background. Change-Id: I19a01f9715536918dd9463f18a72c22878d0cd7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185836 Tested-by: Jenkins Reviewed-by: Michael Weghorn --- test/source/a11y/accessibletestbase.cxx | 13 ++++++++++--- test/source/a11y/eventposter.cxx | 13 +++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/test/source/a11y/accessibletestbase.cxx b/test/source/a11y/accessibletestbase.cxx index 1e2f3f615190..d1c2ecbdadd7 100644 --- a/test/source/a11y/accessibletestbase.cxx +++ b/test/source/a11y/accessibletestbase.cxx @@ -111,8 +111,12 @@ uno::Reference test::AccessibleTestBase::getDocumentAccessibleContext() { uno::Reference xModel(mxDocument, uno::UNO_QUERY_THROW); - uno::Reference xAccessible( - xModel->getCurrentController()->getFrame()->getComponentWindow(), uno::UNO_QUERY_THROW); + uno::Reference xComponentWin + = xModel->getCurrentController()->getFrame()->getComponentWindow(); + assert(xComponentWin.is()); + uno::Reference xAccessible + = VCLUnoHelper::GetWindow(xComponentWin)->GetAccessible(); + assert(xAccessible.is()); return AccessibilityTools::getAccessibleObjectForPredicate( xAccessible->getAccessibleContext(), @@ -480,7 +484,10 @@ test::AccessibleTestBase::Dialog::Dialog(const uno::Reference& xD { CPPUNIT_ASSERT(xDialog2.is()); - mxAccessible.set(xDialog2, uno::UNO_QUERY); + uno::Reference xWindow(xDialog2, uno::UNO_QUERY_THROW); + vcl::Window* pWindow = VCLUnoHelper::GetWindow(xWindow); + assert(pWindow); + mxAccessible = pWindow->GetAccessible(); if (mxAccessible) setWindow(mxAccessible); else diff --git a/test/source/a11y/eventposter.cxx b/test/source/a11y/eventposter.cxx index 39e178e22756..bc5814369b5d 100644 --- a/test/source/a11y/eventposter.cxx +++ b/test/source/a11y/eventposter.cxx @@ -15,7 +15,7 @@ #include #include -#include +#include void test::EventPosterHelper::postKeyEventAsync(int nType, int nCharCode, int nKeyCode) const { @@ -32,15 +32,20 @@ void test::AccessibleEventPosterHelper::setWindow( { while (auto xParent = xAcc->getAccessibleContext()->getAccessibleParent()) xAcc = xParent; - auto vclXWindow = dynamic_cast(xAcc.get()); - if (!vclXWindow) + assert(xAcc); + css::uno::Reference xAccContext + = xAcc->getAccessibleContext(); + assert(xAccContext.is()); + rtl::Reference pVCLAccComponent + = dynamic_cast(xAccContext.get()); + if (!pVCLAccComponent) { std::cerr << "WARNING: AccessibleEventPosterHelper::setWindow() called on " "unsupported object " << AccessibilityTools::debugString(xAcc) << ". Event delivery will not work." << std::endl; } - mxWindow = vclXWindow ? vclXWindow->GetWindow() : nullptr; + mxWindow = pVCLAccComponent ? pVCLAccComponent->GetWindow() : nullptr; } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */