include/test/a11y/AccessibilityTools.hxx |    2 +
 test/source/a11y/AccessibilityTools.cxx  |   53 +++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+)

New commits:
commit 1791b26d75bd50971fe58627c6554f1711890817
Author:     Colomban Wendling <cwendl...@hypra.fr>
AuthorDate: Thu Nov 3 15:17:46 2022 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Fri Mar 3 10:56:31 2023 +0000

    test: Add debug print support for XAccessibleAction
    
    Change-Id: Ic511f2abc62703ead40a585989c54345cf3c17ae
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142261
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/include/test/a11y/AccessibilityTools.hxx 
b/include/test/a11y/AccessibilityTools.hxx
index 749be0635198..38a76ce407f1 100644
--- a/include/test/a11y/AccessibilityTools.hxx
+++ b/include/test/a11y/AccessibilityTools.hxx
@@ -28,6 +28,7 @@
 
 #include <com/sun/star/accessibility/AccessibleEventObject.hpp>
 #include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
 
 class OOO_DLLPUBLIC_TEST AccessibilityTools
@@ -256,6 +257,7 @@ private:
     static OUString debugName(css::accessibility::XAccessibleContext* xctx);
     static OUString debugName(css::accessibility::XAccessible* xacc);
     static OUString debugName(const css::accessibility::AccessibleEventObject* 
evobj);
+    static OUString debugName(css::accessibility::XAccessibleAction* xAct);
 };
 
 CPPUNIT_NS_BEGIN
diff --git a/test/source/a11y/AccessibilityTools.cxx 
b/test/source/a11y/AccessibilityTools.cxx
index 137b1bdc3a97..b754f46d2f69 100644
--- a/test/source/a11y/AccessibilityTools.cxx
+++ b/test/source/a11y/AccessibilityTools.cxx
@@ -24,8 +24,11 @@
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
 #include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
 
+#include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
 #include <toolkit/awt/vclxaccessiblecomponent.hxx>
 #include <vcl/scheduler.hxx>
@@ -647,6 +650,56 @@ OUString 
AccessibilityTools::debugName(accessibility::XAccessible* acc)
     return debugName(acc->getAccessibleContext().get());
 }
 
+OUString AccessibilityTools::debugName(accessibility::XAccessibleAction* xAct)
+{
+    OUStringBuffer r = "actions=[";
+
+    const sal_Int32 nActions = xAct->getAccessibleActionCount();
+    for (sal_Int32 i = 0; i < nActions; i++)
+    {
+        if (i > 0)
+            r.append(", ");
+
+        r.append("description=\"");
+        r.append(xAct->getAccessibleActionDescription(i));
+        r.append('"');
+
+        const auto& xKeyBinding = xAct->getAccessibleActionKeyBinding(i);
+        if (xKeyBinding)
+        {
+            r.append(" keybindings=[");
+            const sal_Int32 nKeyBindings = 
xKeyBinding->getAccessibleKeyBindingCount();
+            for (sal_Int32 j = 0; j < nKeyBindings; j++)
+            {
+                if (j > 0)
+                    r.append(", ");
+
+                int k = 0;
+                for (const auto& keyStroke : 
xKeyBinding->getAccessibleKeyBinding(j))
+                {
+                    if (k++ > 0)
+                        r.append(", ");
+
+                    r.append('"');
+                    if (keyStroke.Modifiers & awt::KeyModifier::MOD1)
+                        r.append("<Mod1>");
+                    if (keyStroke.Modifiers & awt::KeyModifier::MOD2)
+                        r.append("<Mod2>");
+                    if (keyStroke.Modifiers & awt::KeyModifier::MOD3)
+                        r.append("<Mod3>");
+                    if (keyStroke.Modifiers & awt::KeyModifier::SHIFT)
+                        r.append("<Shift>");
+                    r.append(keyStroke.KeyChar);
+                    r.append('"');
+                }
+            }
+            r.append("]");
+        }
+    }
+    r.append("]");
+    return r.makeStringAndClear();
+}
+
 OUString AccessibilityTools::debugName(const 
accessibility::AccessibleEventObject* evobj)
 {
     return "(AccessibleEventObject) { id=" + getEventIdName(evobj->EventId)

Reply via email to