From 8cfa97609c4e94c413e6b6e8caaa38ead9234adb Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 25 Aug 2017 16:12:50 -0700 Subject: [PATCH] Only expose available semantic scroll actions (#4010) * Only expose available scroll actions * formatting * more formatting --- .../io/flutter/view/AccessibilityBridge.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 80c442b9d..0f9780f96 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -111,18 +111,24 @@ class AccessibilityBridge extends AccessibilityNodeProvider { result.setLongClickable(true); } if ((object.actions & SEMANTICS_ACTION_SCROLLABLE) != 0) { - // TODO(ianh): Once we're on SDK v23+, call addAction to - // expose AccessibilityAction.ACTION_SCROLL_LEFT, _RIGHT, - // _UP, and _DOWN when appropriate. - // TODO(ianh): Only include the actions if you can actually scroll that way. - result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); - result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); result.setScrollable(true); // This tells Android's a11y to send scroll events when reaching the end of // the visible viewport of a scrollable. result.setClassName("android.widget.ScrollView"); + // TODO(ianh): Once we're on SDK v23+, call addAction to + // expose AccessibilityAction.ACTION_SCROLL_LEFT, _RIGHT, + // _UP, and _DOWN when appropriate. + if ((object.actions & SEMANTICS_ACTION_SCROLL_RIGHT) != 0 + || (object.actions & SEMANTICS_ACTION_SCROLL_UP) != 0) { + result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); + } + if ((object.actions & SEMANTICS_ACTION_SCROLL_LEFT) != 0 + || (object.actions & SEMANTICS_ACTION_SCROLL_DOWN) != 0) { + result.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); + } } - if ((object.actions & SEMANTICS_ACTION_INCREASE) != 0 || (object.actions & SEMANTICS_ACTION_DECREASE) != 0 ) { + if ((object.actions & SEMANTICS_ACTION_INCREASE) != 0 + || (object.actions & SEMANTICS_ACTION_DECREASE) != 0 ) { result.setFocusable(true); result.setClassName("android.widget.SeekBar"); if ((object.actions & SEMANTICS_ACTION_INCREASE) != 0) { -- GitLab