// 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 _kActionById = { _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]; } }