| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /// Class name constants which correspond to the class names used by the |
| /// Android accessibility bridge. |
| class AndroidClassName { |
| /// The class name used for checkboxes. |
| static const String checkBox = 'android.widget.CheckBox'; |
| |
| /// The default className if none is provided by flutter. |
| static const String view = 'android.view.View'; |
| |
| /// The class name used for radio buttons. |
| static const String radio = 'android.widget.RadioButton'; |
| |
| /// The class name used for editable text fields. |
| static const String editText = 'android.widget.EditText'; |
| |
| /// The class name used for read only text fields. |
| static const String textView = 'android.widget.TextView'; |
| |
| /// The class name used for toggle switches. |
| static const String toggleSwitch = 'android.widget.Switch'; |
| |
| /// The default className for buttons. |
| static const String button = 'android.widget.Button'; |
| } |
| |
| /// Action constants which correspond to `AccessibilityAction` in Android. |
| enum AndroidSemanticsAction { |
| |
| /// Matches `AccessibilityAction.ACTION_FOCUS`. |
| focus(_kFocusIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_CLEAR_FOCUS`. |
| clearFocus(_kClearFocusIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_SELECT`. |
| select(_kSelectIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_CLEAR_SELECTION`. |
| clearSelection(_kClearSelectionIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_CLICK`. |
| click(_kClickIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_LONG_CLICK`. |
| longClick(_kLongClickIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS`. |
| accessibilityFocus(_kAccessibilityFocusIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_CLEAR_ACCESSIBILITY_FOCUS`. |
| clearAccessibilityFocus(_kClearAccessibilityFocusIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_NEXT_AT_MOVEMENT_GRANULARITY`. |
| nextAtMovementGranularity(_kNextAtMovementGranularityIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY`. |
| previousAtMovementGranularity(_kPreviousAtMovementGranularityIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_NEXT_HTML_ELEMENT`. |
| nextHtmlElement(_kNextHtmlElementIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_PREVIOUS_HTML_ELEMENT`. |
| previousHtmlElement(_kPreviousHtmlElementIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_SCROLL_FORWARD`. |
| scrollForward(_kScrollForwardIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_SCROLL_BACKWARD`. |
| scrollBackward(_kScrollBackwardIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_CUT`. |
| cut(_kCutIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_COPY`. |
| copy(_kCopyIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_PASTE`. |
| paste(_kPasteIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_SET_SELECTION`. |
| setSelection(_kSetSelectionIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_EXPAND`. |
| expand(_kExpandIndex), |
| |
| /// Matches `AccessibilityAction.ACTION_COLLAPSE`. |
| collapse(_kCollapseIndex), |
| |
| /// Matches `AccessibilityAction.SET_TEXT`. |
| setText(_kSetText); |
| |
| const AndroidSemanticsAction(this.id); |
| |
| /// The Android id of the action. |
| final int id; |
| |
| // These indices need to be in sync with android_semantics_testing/android/app/src/main/java/com/yourcompany/platforminteraction/MainActivity.java |
| static const int _kFocusIndex = 1 << 0; |
| static const int _kClearFocusIndex = 1 << 1; |
| static const int _kSelectIndex = 1 << 2; |
| static const int _kClearSelectionIndex = 1 << 3; |
| static const int _kClickIndex = 1 << 4; |
| static const int _kLongClickIndex = 1 << 5; |
| static const int _kAccessibilityFocusIndex = 1 << 6; |
| static const int _kClearAccessibilityFocusIndex = 1 << 7; |
| static const int _kNextAtMovementGranularityIndex = 1 << 8; |
| static const int _kPreviousAtMovementGranularityIndex = 1 << 9; |
| static const int _kNextHtmlElementIndex = 1 << 10; |
| static const int _kPreviousHtmlElementIndex = 1 << 11; |
| static const int _kScrollForwardIndex = 1 << 12; |
| static const int _kScrollBackwardIndex = 1 << 13; |
| static const int _kCutIndex = 1 << 14; |
| static const int _kCopyIndex = 1 << 15; |
| static const int _kPasteIndex = 1 << 16; |
| static const int _kSetSelectionIndex = 1 << 17; |
| static const int _kExpandIndex = 1 << 18; |
| static const int _kCollapseIndex = 1 << 19; |
| static const int _kSetText = 1 << 21; |
| |
| static const Map<int, AndroidSemanticsAction> _kActionById = <int, AndroidSemanticsAction>{ |
| _kFocusIndex: focus, |
| _kClearFocusIndex: clearFocus, |
| _kSelectIndex: select, |
| _kClearSelectionIndex: clearSelection, |
| _kClickIndex: click, |
| _kLongClickIndex: longClick, |
| _kAccessibilityFocusIndex: accessibilityFocus, |
| _kClearAccessibilityFocusIndex: clearAccessibilityFocus, |
| _kNextAtMovementGranularityIndex: nextAtMovementGranularity, |
| _kPreviousAtMovementGranularityIndex: previousAtMovementGranularity, |
| _kNextHtmlElementIndex: nextHtmlElement, |
| _kPreviousHtmlElementIndex: previousHtmlElement, |
| _kScrollForwardIndex: scrollForward, |
| _kScrollBackwardIndex: scrollBackward, |
| _kCutIndex: cut, |
| _kCopyIndex: copy, |
| _kPasteIndex: paste, |
| _kSetSelectionIndex: setSelection, |
| _kExpandIndex: expand, |
| _kCollapseIndex: collapse, |
| _kSetText: setText, |
| }; |
| |
| /// Creates a new [AndroidSemanticsAction] from an integer `value`. |
| /// |
| /// Returns `null` if the id is not a known Android accessibility action. |
| static AndroidSemanticsAction? deserialize(int value) { |
| return _kActionById[value]; |
| } |
| } |