summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/androidjniaccessibility.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-05-07 12:56:13 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-05-13 22:10:21 +0200
commit06e27c2a52a4bd98bc102de0875df9918166d130 (patch)
treeda65606514c68986a3661cfecc7b6b5262ea7ff6 /src/plugins/platforms/android/androidjniaccessibility.cpp
parentc8de2a8b5f5d0b9b3bc1d8ed8d3027ac40b00ee3 (diff)
Accessibility Android: Fix crash for invalid interfaces
When asked for an accessibility interface with invalid ID we still return an AccessibilityNodeInfo. But instead of setting that interfaces' ID to the invalid ID, rather return one with no ID set so it will simply fall back to the view. Task-number: QTBUG-38829 Change-Id: If66f5b1b42ba46949d94a547050c7a2cfc7ee9b7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/plugins/platforms/android/androidjniaccessibility.cpp')
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp
index a38741cc91..2c1701db83 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.cpp
+++ b/src/plugins/platforms/android/androidjniaccessibility.cpp
@@ -170,7 +170,7 @@ if (!clazz) { \
jmethodID method = env->GetMethodID(clazz, METHOD_NAME, METHOD_SIGNATURE); \
if (!method) { \
__android_log_print(ANDROID_LOG_WARN, m_qtTag, m_methodErrorMsg, METHOD_NAME, METHOD_SIGNATURE); \
- return; \
+ return false; \
} \
env->CallVoidMethod(OBJECT, method, __VA_ARGS__); \
}
@@ -190,12 +190,12 @@ if (!clazz) { \
return jdesc;
}
- static void populateNode(JNIEnv *env, jobject /*thiz*/, jint objectId, jobject node)
+ static bool populateNode(JNIEnv *env, jobject /*thiz*/, jint objectId, jobject node)
{
QAccessibleInterface *iface = interfaceFromId(objectId);
if (!iface || !iface->isValid()) {
__android_log_print(ANDROID_LOG_WARN, m_qtTag, "Accessibility: populateNode for Invalid ID");
- return;
+ return false;
}
QAccessible::State state = iface->state();
@@ -235,6 +235,8 @@ if (!clazz) { \
jstring jdesc = env->NewString((jchar*) desc.constData(), (jsize) desc.size());
//CALL_METHOD(node, "setText", "(Ljava/lang/CharSequence;)V", jdesc)
CALL_METHOD(node, "setContentDescription", "(Ljava/lang/CharSequence;)V", jdesc)
+
+ return true;
}
static JNINativeMethod methods[] = {
@@ -244,7 +246,7 @@ if (!clazz) { \
{"descriptionForAccessibleObject", "(I)Ljava/lang/String;", (jstring)descriptionForAccessibleObject},
{"screenRect", "(I)Landroid/graphics/Rect;", (jobject)screenRect},
{"hitTest", "(FF)I", (void*)hitTest},
- {"populateNode", "(ILandroid/view/accessibility/AccessibilityNodeInfo;)V", (void*)populateNode},
+ {"populateNode", "(ILandroid/view/accessibility/AccessibilityNodeInfo;)Z", (void*)populateNode},
{"clickAction", "(I)Z", (void*)clickAction},
};