Improve debugging in the windows accessibility bridge.
set QT_DEBUG_ACCESSIBILITY=(1|0) to turn logging on or off Change-Id: Ibd5b77699decf0cf02bc6b6cc656fa237de29124 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
This commit is contained in:
parent
db1aa6dd99
commit
c531fcc92e
@ -1198,11 +1198,23 @@ Q_GUI_EXPORT QDebug operator<<(QDebug d, const QAccessibleInterface *iface)
|
|||||||
if (iface->object()) {
|
if (iface->object()) {
|
||||||
d << "obj=" << iface->object();
|
d << "obj=" << iface->object();
|
||||||
}
|
}
|
||||||
if (iface->state().invisible) {
|
QStringList stateStrings;
|
||||||
d << "invisible";
|
QAccessible::State st = iface->state();
|
||||||
} else {
|
if (st.focusable)
|
||||||
|
stateStrings << QLatin1String("focusable");
|
||||||
|
if (st.focused)
|
||||||
|
stateStrings << QLatin1String("focused");
|
||||||
|
if (st.selected)
|
||||||
|
stateStrings << QLatin1String("selected");
|
||||||
|
if (st.invisible)
|
||||||
|
stateStrings << QLatin1String("invisible");
|
||||||
|
|
||||||
|
if (!stateStrings.isEmpty())
|
||||||
|
d << stateStrings.join(QLatin1String("|"));
|
||||||
|
|
||||||
|
if (!st.invisible)
|
||||||
d << "rect=" << iface->rect();
|
d << "rect=" << iface->rect();
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
d << " invalid";
|
d << " invalid";
|
||||||
}
|
}
|
||||||
|
@ -88,23 +88,37 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
//#define DEBUG_SHOW_ATCLIENT_COMMANDS
|
#ifndef QT_NO_DEBUG
|
||||||
#ifdef DEBUG_SHOW_ATCLIENT_COMMANDS
|
|
||||||
QT_BEGIN_INCLUDE_NAMESPACE
|
QT_BEGIN_INCLUDE_NAMESPACE
|
||||||
#include <qdebug.h>
|
# include <qdebug.h>
|
||||||
QT_END_INCLUDE_NAMESPACE
|
QT_END_INCLUDE_NAMESPACE
|
||||||
|
static inline bool debug_accessibility()
|
||||||
void showDebug(const char* funcName, const QAccessibleInterface *iface)
|
|
||||||
{
|
{
|
||||||
qDebug() << "Role:" << qAccessibleRoleString(iface->role(0))
|
static signed int debugging = -1;
|
||||||
<< "Name:" << iface->text(QAccessible::Name, 0)
|
if (debugging == -1)
|
||||||
<< "State:" << QString::number(int(iface->state(0)), 16)
|
debugging = qgetenv("QT_DEBUG_ACCESSIBILITY").toInt();
|
||||||
<< QLatin1String(funcName);
|
return !!debugging;
|
||||||
}
|
}
|
||||||
|
# define accessibleDebug !debug_accessibility() ? (void)0 : qDebug
|
||||||
#else
|
#else
|
||||||
# define showDebug(f, iface)
|
# define accessibleDebug()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//#define DEBUG_SHOW_ATCLIENT_COMMANDS
|
||||||
|
#if defined(DEBUG_SHOW_ATCLIENT_COMMANDS)
|
||||||
|
void accessibleDebugClientCalls_helper(const char* funcName, const QAccessibleInterface *iface)
|
||||||
|
{
|
||||||
|
QString str;
|
||||||
|
QDebug dbg(&str);
|
||||||
|
dbg << iface << QLatin1String(funcName);
|
||||||
|
accessibleDebug("%s", qPrintable(str));
|
||||||
|
}
|
||||||
|
# define accessibleDebugClientCalls(iface) accessibleDebugClientCalls_helper(Q_FUNC_INFO, iface)
|
||||||
|
#else
|
||||||
|
# define accessibleDebugClientCalls(iface)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
typedef QSharedPointer<QAccessibleInterface> QAIPointer;
|
typedef QSharedPointer<QAccessibleInterface> QAIPointer;
|
||||||
|
|
||||||
// This stuff is used for widgets/items with no window handle:
|
// This stuff is used for widgets/items with no window handle:
|
||||||
@ -595,7 +609,7 @@ IAccessible::accHitTest documents the value returned in pvarID like this:
|
|||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accHitTest(long xLeft, long yTop, VARIANT *pvarID)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accHitTest(long xLeft, long yTop, VARIANT *pvarID)
|
||||||
{
|
{
|
||||||
|
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -635,7 +649,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accHitTest(long xLeft, long yTop,
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth, long *pcyHeight, VARIANT varID)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth, long *pcyHeight, VARIANT varID)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -659,7 +673,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *py
|
|||||||
// moz: [important, but no need to implement up/down/left/right]
|
// moz: [important, but no need to implement up/down/left/right]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEnd)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEnd)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -799,7 +813,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT v
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChild(VARIANT varChildID, IDispatch** ppdispChild)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChild(VARIANT varChildID, IDispatch** ppdispChild)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -853,7 +867,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChild(VARIANT varChildID, I
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChildCount(long* pcountChildren)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChildCount(long* pcountChildren)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -864,7 +878,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChildCount(long* pcountChil
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accParent(IDispatch** ppdispParent)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accParent(IDispatch** ppdispParent)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -887,7 +901,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accParent(IDispatch** ppdispPa
|
|||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accDoDefaultAction(VARIANT varID)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::accDoDefaultAction(VARIANT varID)
|
||||||
{
|
{
|
||||||
Q_UNUSED(varID);
|
Q_UNUSED(varID);
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -904,7 +918,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accDoDefaultAction(VARIANT varID)
|
|||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID, BSTR* pszDefaultAction)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID, BSTR* pszDefaultAction)
|
||||||
{
|
{
|
||||||
Q_UNUSED(varID);
|
Q_UNUSED(varID);
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -919,7 +933,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID, BSTR* pszDescription)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID, BSTR* pszDescription)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -944,7 +958,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID,
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelp(VARIANT varID, BSTR *pszHelp)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelp(VARIANT varID, BSTR *pszHelp)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -974,7 +988,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelpTopic(BSTR *, VARIANT,
|
|||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accKeyboardShortcut(VARIANT varID, BSTR *pszKeyboardShortcut)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accKeyboardShortcut(VARIANT varID, BSTR *pszKeyboardShortcut)
|
||||||
{
|
{
|
||||||
Q_UNUSED(varID);
|
Q_UNUSED(varID);
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1004,7 +1018,7 @@ static QAccessibleInterface *relatedInterface(QAccessibleInterface *iface, QAcce
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* pszName)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* pszName)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1040,14 +1054,14 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* p
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accName(VARIANT, BSTR)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accName(VARIANT, BSTR)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
return DISP_E_MEMBERNOTFOUND;
|
return DISP_E_MEMBERNOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT *pvarRole)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT *pvarRole)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1075,7 +1089,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIANT *pvarState)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIANT *pvarState)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1151,7 +1165,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIAN
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR* pszValue)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR* pszValue)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid() || varID.lVal)
|
if (!accessible->isValid() || varID.lVal)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1172,7 +1186,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR*
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accValue(VARIANT, BSTR)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::put_accValue(VARIANT, BSTR)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
return DISP_E_MEMBERNOTFOUND;
|
return DISP_E_MEMBERNOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1181,7 +1195,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accSelect(long flagsSelect, VARIAN
|
|||||||
{
|
{
|
||||||
Q_UNUSED(flagsSelect);
|
Q_UNUSED(flagsSelect);
|
||||||
Q_UNUSED(varID);
|
Q_UNUSED(varID);
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1210,7 +1224,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accSelect(long flagsSelect, VARIAN
|
|||||||
// moz: [important]
|
// moz: [important]
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accFocus(VARIANT *pvarID)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accFocus(VARIANT *pvarID)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
@ -1232,7 +1246,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accFocus(VARIANT *pvarID)
|
|||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accSelection(VARIANT *pvarChildren)
|
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accSelection(VARIANT *pvarChildren)
|
||||||
{
|
{
|
||||||
showDebug(__FUNCTION__, accessible);
|
accessibleDebugClientCalls(accessible);
|
||||||
if (!accessible->isValid())
|
if (!accessible->isValid())
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user