From f7c6178bec1a702d80f42a75f78e9d5e4af7a639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20V=C3=A1gner?= Date: Fri, 27 Nov 2020 08:11:07 +0100 Subject: [PATCH] A11Y: Add some null checks to avoid crashes when running with accessibility turned on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peter Vágner --- .../accessibility/KeyboardAccessibilityDelegate.kt | 12 ++++++------ .../KeyboardAccessibilityNodeProvider.kt | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt b/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt index 556662c8f..abf9338a9 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityDelegate.kt @@ -112,7 +112,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb * @param event The hover event. * @return key The key that the `event` is on. */ - protected fun getHoverKeyOf(event: MotionEvent): Key { + protected fun getHoverKeyOf(event: MotionEvent): Key? { val actionIndex = event.actionIndex val x = event.getX(actionIndex).toInt() val y = event.getY(actionIndex).toInt() @@ -145,7 +145,7 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb if (DEBUG_HOVER) { Log.d(TAG, "onHoverEnter: key=$key") } - key.let { onHoverEnterTo(it) } + key?.let { onHoverEnterTo(it) } mLastHoverKey = key } @@ -159,9 +159,9 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb val key = getHoverKeyOf(event) if (key !== lastKey) { lastKey?.let { onHoverExitFrom(it) } - key.let { onHoverEnterTo(it) } + key?.let { onHoverEnterTo(it) } } - key.let { onHoverMoveWithin(it) } + key?.let { onHoverMoveWithin(it) } mLastHoverKey = key } @@ -179,8 +179,8 @@ open class KeyboardAccessibilityDelegate(protected val mKeyb val key = getHoverKeyOf(event) // Make sure we're not getting an EXIT event because the user slid // off the keyboard area, then force a key press. - performClickOn(key) - onHoverExitFrom(key) + key?.let { performClickOn(it) + onHoverExitFrom(it) } mLastHoverKey = null } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt b/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt index 8aaca4101..9154e3d3c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.kt @@ -209,7 +209,7 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, } override fun performAction(virtualViewId: Int, action: Int, - arguments: Bundle): Boolean { + arguments: Bundle?): Boolean { val key = getKeyOf(virtualViewId) ?: return false return performActionForKey(key, action) } @@ -300,4 +300,4 @@ class KeyboardAccessibilityNodeProvider(keyboardView: KV, // call to setKeyboard() and therefore need to call it now. setKeyboard(keyboardView!!.keyboard) } -} \ No newline at end of file +}