summaryrefslogtreecommitdiffstats
path: root/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp
diff options
context:
space:
mode:
authorHarald Sitter <sitter@kde.org>2022-08-10 13:20:33 +0200
committerHarald Sitter <sitter@kde.org>2022-10-25 15:19:41 +0200
commit75e8754875350d53fa62b2c5964c0e0ea8cd69f6 (patch)
treed401d803613ed70b743dfd56e82f233ad2d7dd59 /tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp
parentc938752bd10411e5e4cc82a88ab9366bcda0d9ad (diff)
a11y: support GetAccessibleId for at-spi
This introduces a new helper function accessibleIdForAccessible (inspired by Windows' automationIdForAccessible) to synthesize an id out of the objectNames of the accessible parent chain. The id is then exposed via the GetAccessibleId D-Bus function for consumption in a11y tools. Change-Id: If72b86c5864c43f4ca842aa11423dd8aea0dde4a Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Diffstat (limited to 'tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp')
-rw-r--r--tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp b/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp
index beb0a0805a..d07258417f 100644
--- a/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp
+++ b/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp
@@ -154,6 +154,7 @@ void tst_QAccessibilityLinux::initTestCase()
QVERIFY(!address.isEmpty());
m_window = new AccessibleTestWindow();
+ m_window->setObjectName("mainWindow"_L1);
m_window->show();
QVERIFY(QTest::qWaitForWindowExposed(m_window));
@@ -211,8 +212,11 @@ bool hasState(QDBusInterface *interface, AtspiStateType state)
void tst_QAccessibilityLinux::testLabel()
{
QLabel *l = new QLabel(m_window);
+ l->setObjectName("theObjectName"_L1);
l->setText("Hello A11y");
m_window->addWidget(l);
+ auto a11yEmpty = new QLabel(m_window);
+ m_window->addWidget(l);
// Application
QCOMPARE(getParent(mainWindow), QLatin1String(ATSPI_DBUS_PATH_ROOT));
@@ -224,6 +228,8 @@ void tst_QAccessibilityLinux::testLabel()
QCOMPARE(getChildren(labelInterface).count(), 0);
QCOMPARE(labelInterface->call(QDBus::Block, "GetRoleName").arguments().first().toString(), QLatin1String("label"));
QCOMPARE(labelInterface->call(QDBus::Block, "GetRole").arguments().first().toUInt(), 29u);
+ QCOMPARE(labelInterface->call(QDBus::Block, "GetAccessibleId").arguments().first().toString(),
+ "mainWindow.theObjectName"_L1);
QCOMPARE(getParent(labelInterface), mainWindow->path());
QVERIFY(!hasState(labelInterface, ATSPI_STATE_EDITABLE));
QVERIFY(hasState(labelInterface, ATSPI_STATE_READ_ONLY));
@@ -231,7 +237,12 @@ void tst_QAccessibilityLinux::testLabel()
l->setText("New text");
QCOMPARE(labelInterface->property("Name").toString(), l->text());
+ auto *a11yEmptyInterface = getInterface(children.at(1), "org.a11y.atspi.Accessible");
+ QCOMPARE(a11yEmptyInterface->call(QDBus::Block, "GetAccessibleId").arguments().first().toString(),
+ "mainWindow.QLabel"_L1);
+
m_window->clearChildren();
+ delete a11yEmptyInterface;
delete labelInterface;
}