summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2025-03-15 20:23:02 -0700
committerMichael Weghorn <m.weghorn@posteo.de>2025-03-16 08:28:56 +0100
commit132f22d9f6d58b4e3541ef3e8efe8ef7e3136a23 (patch)
tree572b0275e410ff1ad610e8ca2d2de985e21fca40 /vcl
parent2041fbab92f8d4e789bda625d7f98f486bb791a6 (diff)
tdf#157003 a11y: Replace AccessibleDropDownListBox Java with C++ test
Remove the existing Java AccessibleDropDownListBox tests and introduce a new C++/cppunit test that takes a bit of a different approach: Other than commit d2a5b4bc0b8c8d1dd82133719a3ef5cc01b0cbbe Date: Tue Apr 26 16:56:56 2022 +0200 toolkit: convert AccessibleStatusBar test to C++ Just translate the test and add required or handy CppUnit helpers. which basically translated the existing AccessibleStatusBar test as is to C++/cppunit, don't do the same here, but: 1) Move the test from toolkit to vcl, where the a11y implementations for vcl widgets are located since commit 9283da858506fe3b4383e4cfe0506e470a4356f6 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Tue Dec 17 12:04:04 2024 +0100 a11y: Merge accessibility module into vcl 2) Instead of starting Writer and then searching for the accessible object of the dropdown listbox in the a11y tree, only create a simple dialog that contains a dropdown listbox (VCL ListBox with WB_DROPDOWN set). This minimizes the complexity/a11y tree to the object of interest. Apart from that, the general logic of what aspects are tested is mostly unchanged, now using the C++ helpers introduced in the above-mentioned d2a5b4bc0b8c8d1dd82133719a3ef5cc01b0cbbe (and later commits) to test the various XAccessible* interfaces. The XAccessibleEventBroadcaster interface is no more explicitly tested, since the XAccessibleEventBroadcasterTester would require an XWindow again. However, the logic is implemented in the VCLXAccessibleComponent subclass used by almost all widgets (vcl::Window subclasses), so not explicitly testing it here shouldn't be a problem. Change-Id: I61bfff515c5e9f7e2d18b9279861c09ceede403e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182986 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/CppunitTest_vcl_a11y.mk37
-rw-r--r--vcl/Module_vcl.mk1
-rw-r--r--vcl/qa/cppunit/a11y/widgetaccessibilitytest.cxx81
3 files changed, 119 insertions, 0 deletions
diff --git a/vcl/CppunitTest_vcl_a11y.mk b/vcl/CppunitTest_vcl_a11y.mk
new file mode 100644
index 000000000000..84a86eeef637
--- /dev/null
+++ b/vcl/CppunitTest_vcl_a11y.mk
@@ -0,0 +1,37 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,vcl_a11y))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,vcl_a11y, \
+ vcl/qa/cppunit/a11y/widgetaccessibilitytest \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,vcl_a11y, \
+ sal \
+ cppu \
+ subsequenttest \
+ test \
+ vcl \
+))
+
+$(eval $(call gb_CppunitTest_use_api,vcl_a11y,\
+ offapi \
+ udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,vcl_a11y))
+$(eval $(call gb_CppunitTest_use_rdb,vcl_a11y,services))
+$(eval $(call gb_CppunitTest_use_ure,vcl_a11y))
+$(eval $(call gb_CppunitTest_use_vcl,vcl_a11y))
+
+$(eval $(call gb_CppunitTest_use_instdir_configuration,vcl_a11y))
+$(eval $(call gb_CppunitTest_use_common_configuration,vcl_a11y))
+
+# vim: set noet sw=4 ts=4:
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 91cf27c98267..cc22693cf512 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -85,6 +85,7 @@ $(eval $(call gb_Module_add_targets,vcl,\
ifneq ($(ENABLE_ATSPI_TESTS),)
$(eval $(call gb_Module_add_check_targets,vcl,\
+ CppunitTest_vcl_a11y \
CppunitTest_vcl_gtk3_a11y \
))
endif
diff --git a/vcl/qa/cppunit/a11y/widgetaccessibilitytest.cxx b/vcl/qa/cppunit/a11y/widgetaccessibilitytest.cxx
new file mode 100644
index 000000000000..41fcf5b46f25
--- /dev/null
+++ b/vcl/qa/cppunit/a11y/widgetaccessibilitytest.cxx
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#define VCL_INTERNALS
+
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleExtendedAttributes.hpp>
+#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp>
+#include <test/a11y/AccessibilityTools.hxx>
+#include <test/a11y/accessibletestbase.hxx>
+#include <test/a11y/XAccessibleActionTester.hxx>
+#include <test/a11y/XAccessibleComponentTester.hxx>
+#include <test/a11y/XAccessibleContextTester.hxx>
+#include <test/a11y/XAccessibleExtendedComponentTester.hxx>
+#include <vcl/toolkit/dialog.hxx>
+#include <vcl/toolkit/lstbox.hxx>
+
+CPPUNIT_TEST_FIXTURE(test::AccessibleTestBase, AccessibleDropDownListBox)
+{
+ // create and show dialog that contains a dropdown listbox
+ ScopedVclPtr<::Dialog> pDialog = VclPtr<::Dialog>::Create(nullptr, WB_MOVEABLE | WB_CLOSEABLE,
+ ::Dialog::InitFlag::NoParent);
+ VclPtr<ListBox> pListBox = VclPtr<ListBox>::Create(pDialog, WB_DROPDOWN);
+ pListBox->InsertEntry(u"First Entry"_ustr);
+ pListBox->InsertEntry(u"Second Entry"_ustr);
+ pListBox->SetSizePixel(pListBox->get_preferred_size());
+ pListBox->Show();
+ pDialog->Show();
+
+ // perform various a11y checks on the dropdown listbox
+ css::uno::Reference<css::accessibility::XAccessible> xListBoxAcc = pListBox->GetAccessible();
+ CPPUNIT_ASSERT(xListBoxAcc.is());
+ css::uno::Reference<css::accessibility::XAccessibleContext> xContext
+ = xListBoxAcc->getAccessibleContext();
+ CPPUNIT_ASSERT(xContext.is());
+
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Drop down listbox has incorrect role",
+ css::accessibility::AccessibleRole::COMBO_BOX,
+ xContext->getAccessibleRole());
+
+ XAccessibleContextTester aContextTester(xContext);
+ aContextTester.testAll();
+
+ css::uno::Reference<css::accessibility::XAccessibleComponent> xAccessibleComponent(
+ xContext, css::uno::UNO_QUERY_THROW);
+ XAccessibleComponentTester aComponentTester(xAccessibleComponent);
+ aComponentTester.testAll();
+
+ css::uno::Reference<css::accessibility::XAccessibleExtendedComponent>
+ xAccessibleExtendedComponent(xContext, css::uno::UNO_QUERY_THROW);
+ XAccessibleExtendedComponentTester aExtendedComponentTester(xAccessibleExtendedComponent);
+ aExtendedComponentTester.testAll();
+
+ css::uno::Reference<css::accessibility::XAccessibleAction> xAccessibleAction(
+ xContext, css::uno::UNO_QUERY_THROW);
+ CPPUNIT_ASSERT_MESSAGE("No accessible action provided",
+ xAccessibleAction->getAccessibleActionCount() > 0);
+ XAccessibleActionTester aActionTester(xAccessibleAction);
+ aActionTester.testAll();
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */