| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Next MinVersion: 16 |
| |
| module arc.mojom; |
| |
| import "components/arc/common/gfx.mojom"; |
| |
| // For future maintainers, each of the below enums were hand picked |
| // from their equivalents in the Android source. Keep them in the |
| // order given below and add as needed. The initial order matches the |
| // order they appear in source files. |
| // |
| // If not explicitly called out, the structs and enums below come from: |
| // https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html |
| |
| // AccessibilityEventType lists the possible accessibility events on Android. |
| // https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html |
| [Extensible] |
| enum AccessibilityEventType { |
| VIEW_FOCUSED, |
| VIEW_CLICKED, |
| VIEW_LONG_CLICKED, |
| VIEW_SELECTED, |
| VIEW_TEXT_CHANGED, |
| WINDOW_STATE_CHANGED, |
| NOTIFICATION_STATE_CHANGED, |
| VIEW_HOVER_ENTER, |
| VIEW_HOVER_EXIT, |
| TOUCH_EXPLORATION_GESTURE_START, |
| TOUCH_EXPLORATION_GESTURE_END, |
| WINDOW_CONTENT_CHANGED, |
| VIEW_SCROLLED, |
| VIEW_TEXT_SELECTION_CHANGED, |
| ANNOUNCEMENT, |
| VIEW_ACCESSIBILITY_FOCUSED, |
| VIEW_ACCESSIBILITY_FOCUS_CLEARED, |
| VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY, |
| GESTURE_DETECTION_START, |
| GESTURE_DETECTION_END, |
| TOUCH_INTERACTION_START, |
| TOUCH_INTERACTION_END, |
| WINDOWS_CHANGED, |
| VIEW_CONTEXT_CLICKED, |
| ASSIST_READING_CONTEXT, |
| }; |
| |
| // Possible actions that can be performed on an AccessibilityNodeInfo. |
| [Extensible] |
| enum AccessibilityActionType { |
| FOCUS, |
| CLEAR_FOCUS, |
| SELECT, |
| CLEAR_SELECTION, |
| CLICK, |
| LONG_CLICK, |
| ACCESSIBILITY_FOCUS, |
| CLEAR_ACCESSIBILITY_FOCUS, |
| NEXT_AT_MOVEMENT_GRANULARITY, // unused |
| PREVIOUS_AT_MOVEMENT_GRANULARITY, // unused |
| NEXT_HTML_ELEMENT, // unused |
| PREVIOUS_HTML_ELEMENT, // unused |
| SCROLL_FORWARD, |
| SCROLL_BACKWARD, |
| COPY, |
| PASTE, |
| CUT, |
| SET_SELECTION, |
| EXPAND, |
| COLLAPSE, |
| DISMISS, |
| SET_TEXT, |
| CONTEXT_CLICK, |
| SCROLL_DOWN, |
| SCROLL_LEFT, |
| SCROLL_RIGHT, |
| SCROLL_TO_POSITION, |
| SCROLL_UP, |
| SET_PROGRESS, |
| SHOW_ON_SCREEN, |
| CUSTOM_ACTION, // Not a standard action. |
| GET_TEXT_LOCATION, // Not a standard action. |
| }; |
| |
| // Possible boolean properties set on an AccessibilityNodeInfo. |
| // The enum values appear in the same order as they do within |
| // AccessibilityNodeInfo.java. |
| [Extensible] |
| enum AccessibilityBooleanProperty { |
| CHECKABLE, |
| CHECKED, |
| FOCUSABLE, |
| FOCUSED, |
| SELECTED, |
| CLICKABLE, |
| LONG_CLICKABLE, |
| ENABLED, |
| PASSWORD, |
| SCROLLABLE, |
| ACCESSIBILITY_FOCUSED, |
| VISIBLE_TO_USER, |
| EDITABLE, |
| OPENS_POPUP, |
| DISMISSABLE, |
| MULTI_LINE, |
| CONTENT_INVALID, |
| CONTEXT_CLICKABLE, |
| IMPORTANCE, |
| SCREEN_READER_FOCUSABLE, |
| SHOWING_HINT_TEXT, |
| HEADING, |
| SUPPORTS_TEXT_LOCATION, |
| }; |
| |
| // These fields are taken from string instance members of |
| // AccessibilityNodeInfo. |
| [Extensible] |
| enum AccessibilityStringProperty { |
| PACKAGE_NAME, |
| CLASS_NAME, |
| TEXT, |
| CONTENT_DESCRIPTION, |
| VIEW_ID_RESOURCE_NAME, |
| CHROME_ROLE, // Chrome only |
| ROLE_DESCRIPTION, // Chrome only |
| TOOLTIP, |
| PANE_TITLE, |
| HINT_TEXT |
| }; |
| |
| // These fields are taken from int instance members of |
| // AccessibilityNodeInfo. |
| [Extensible] |
| enum AccessibilityIntProperty { |
| LABEL_FOR, |
| LABELED_BY, |
| TRAVERSAL_BEFORE, |
| TRAVERSAL_AFTER, |
| MAX_TEXT_LENGTH, |
| TEXT_SELECTION_START, |
| TEXT_SELECTION_END, |
| INPUT_TYPE, |
| LIVE_REGION |
| }; |
| |
| // These fields are taken from List<int> instance members of |
| // AccessibilityNodeInfo. |
| [Extensible] |
| enum AccessibilityIntListProperty { |
| CHILD_NODE_IDS, |
| CUSTOM_ACTION_IDS, |
| STANDARD_ACTION_IDS |
| }; |
| |
| // These fields are taken from List<String> instance members of |
| // AccessibilityNodeInfo. |
| [Extensible] |
| enum AccessibilityStringListProperty { |
| CUSTOM_ACTION_DESCRIPTIONS |
| }; |
| |
| // These fields are taken from boolean properties of |
| // AccessibilityWindowInfo. |
| [Extensible] |
| enum AccessibilityWindowBooleanProperty { |
| ACCESSIBILITY_FOCUSED, |
| FOCUSED, |
| IN_PICTURE_IN_PICTURE_MODE, |
| WINDOW_ACTIVE, |
| }; |
| |
| // These fields are taken from int attributes of |
| // AccessibilityWindowInfo. |
| [Extensible] |
| enum AccessibilityWindowIntProperty { |
| ANCHOR_NODE_ID, |
| LAYER_ORDER, |
| PARENT_WINDOW_ID, |
| }; |
| |
| // These fields are taken from String attributes of |
| // AccessibilityWindowInfo. |
| [Extensible] |
| enum AccessibilityWindowStringProperty { |
| TITLE, |
| }; |
| |
| // These fields are taken from List<Integer> instance members of |
| // AccessibilityWindowInfo. |
| [Extensible] |
| enum AccessibilityWindowIntListProperty { |
| CHILD_WINDOW_IDS, |
| }; |
| |
| // This type is a subset of spans available under android.text.style. |
| [Extensible] |
| enum SpanType { |
| URL, |
| CLICKABLE |
| }; |
| |
| // Groups data about a Spannable. |
| struct SpanEntry { |
| int32 start; |
| int32 end; |
| SpanType span_type; |
| }; |
| |
| // These fields are taken from AccessibilityNodeInfo.CollectionItemInfo. |
| [Extensible] |
| enum AccessibilitySelectionMode { |
| NONE, |
| SINGLE, |
| MULTIPLE |
| }; |
| |
| // These fields are taken from AccessibilityNodeInfo.CollectionInfo. |
| struct AccessibilityCollectionInfoData { |
| int32 row_count; |
| int32 column_count; |
| bool is_hierarchical; |
| AccessibilitySelectionMode selection_mode; |
| }; |
| |
| // These fields are taken from AccessibilityNodeInfo.CollectionItemInfo. |
| struct AccessibilityCollectionItemInfoData { |
| int32 row_index; |
| int32 column_index; |
| int32 row_span; |
| int32 column_span; |
| bool is_heading; |
| bool is_selected; |
| }; |
| |
| // These fields are taken from AccessibilityNodeInfo.RangeInfo. |
| [Extensible] |
| enum AccessibilityRangeType { |
| INT, |
| FLOAT, |
| PERCENT |
| }; |
| |
| // These fields are taken from AccessibilityNodeInfo.RangeInfo. |
| struct AccessibilityRangeInfoData { |
| AccessibilityRangeType range_type; |
| float min; |
| float max; |
| float current; |
| }; |
| |
| // These fields are taken from AccessibilityWindowInfo's window types. |
| [Extensible] |
| enum AccessibilityWindowType { |
| TYPE_ACCESSIBILITY_OVERLAY, |
| TYPE_APPLICATION, |
| TYPE_INPUT_METHOD, |
| TYPE_SPLIT_SCREEN_DIVIDER, |
| TYPE_SYSTEM, |
| }; |
| |
| // AccessibilityNodeInfoData is a struct to contain info of |
| // AccessibilityNodeInfo in Android. |
| struct AccessibilityNodeInfoData { |
| Rect bounds_in_screen; |
| [MinVersion=1] int32 id; |
| [MinVersion=1] map<AccessibilityBooleanProperty, bool>? boolean_properties; |
| [MinVersion=1] map<AccessibilityStringProperty, string>? string_properties; |
| [MinVersion=1] map<AccessibilityIntProperty, int32>? int_properties; |
| [MinVersion=1] |
| map<AccessibilityIntListProperty, array<int32>>? int_list_properties; |
| [MinVersion=3] map<AccessibilityStringListProperty, array<string>>? |
| string_list_properties; |
| [MinVersion=5] map<AccessibilityStringProperty, array<SpanEntry>>? |
| spannable_string_properties; |
| [MinVersion=5] AccessibilityCollectionInfoData? collection_info; |
| [MinVersion=5] AccessibilityCollectionItemInfoData? collection_item_info; |
| [MinVersion=5] AccessibilityRangeInfoData? range_info; |
| [MinVersion=12] int32 window_id; |
| }; |
| |
| // AccessibilityWindowInfoData is a struct to contain info about |
| // AccessibilityWindowInfo in Android. |
| struct AccessibilityWindowInfoData { |
| int32 window_id; |
| int32 root_node_id; |
| Rect bounds_in_screen; |
| AccessibilityWindowType window_type; |
| map<AccessibilityWindowBooleanProperty, bool>? boolean_properties; |
| map<AccessibilityWindowStringProperty, string>? string_properties; |
| map<AccessibilityWindowIntProperty, int32>? int_properties; |
| map<AccessibilityWindowIntListProperty, array<int32>>? int_list_properties; |
| }; |
| |
| // Filters the event type (and implicitly the data) sent by the ARC |
| // accessibility service. |
| [Extensible] |
| enum AccessibilityFilterType { |
| // No events will be sent. |
| OFF, |
| |
| // Only send focus events along with the source focus node. |
| FOCUS, |
| |
| // Send a complete tree from the event source's root for every event. |
| ALL, |
| |
| // Send complete subtrees for root nodes with whitelisted package names. |
| [MinVersion=2] WHITELISTED_PACKAGE_NAME_DEPRECATED |
| }; |
| |
| [Extensible] |
| enum AccessibilityNotificationStateType { |
| // Surface for a notification is created. OnNotificationStateChanged of |
| // SURFACE_CREATED for a notification must be called before |
| // OnAccessibilityEvent of WINDOW_STATE_CHANGED for it is called. |
| SURFACE_CREATED, |
| |
| // Surface for a notification is removed. |
| SURFACE_REMOVED, |
| }; |
| |
| // AccessibilityEventData is a struct to contain info of |
| // AccessibilityEvent in Android. |
| // https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html |
| struct AccessibilityEventData { |
| AccessibilityEventType event_type; |
| int32 source_id; |
| array<AccessibilityNodeInfoData> node_data; |
| |
| // notification_key is set only for an event on an Android notification. |
| [MinVersion=6] string? notification_key; |
| |
| // window_id where this event is dispatched for. This does not match |
| // AccessibilityWindowInfo window ids, instead it is a mapping to from |
| // unique IDs in an Android task to nodes in Chrome. |
| [MinVersion=6] int32 window_id; |
| |
| // Task associated with this event (usually the front task when this event |
| // gets dispatched). |
| [MinVersion=8] int32 task_id; |
| |
| // The window data for the tree. This may not be populated if |
| // only one node needs to be returned, for example if the event |
| // filter type is AccessibilityFilterType.FOCUS. |
| [MinVersion=12] array<AccessibilityWindowInfoData>? window_data; |
| |
| // True if this event has happened on |
| // AccessibilityWindowInfo.TYPE_INPUT_METHOD. |
| [MinVersion=14] bool is_input_method_window; |
| |
| // Retrieved from AccessibilityRecord.getText(). |
| [MinVersion=15] array<string>? eventText; |
| }; |
| |
| // AccessibilityActionData is a struct to contain info of AccessibilityAction in |
| // Android. |
| // https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction.html |
| struct AccessibilityActionData { |
| int32 node_id; |
| |
| AccessibilityActionType action_type; |
| |
| // custom_action_id must be set if action_type is CUSTOM_ACTION. |
| int32 custom_action_id; |
| |
| // window_id where the action is performed on. |
| [MinVersion=6] int32 window_id; |
| |
| // Parameters specifying indicies to get text location of node |
| // in Android. |
| [MinVersion=13] int32 start_index; |
| [MinVersion=13] int32 end_index; |
| }; |
| |
| // Interface for Android communicating to Chrome. |
| // Deprecated method IDs: 0 |
| // Next method ID: 3 |
| interface AccessibilityHelperHost { |
| // OnAccessibilityEvent is called when a converted Android accessibility event |
| // is sent from Android. |
| OnAccessibilityEvent@1(AccessibilityEventData event_data); |
| |
| // OnNotificationStateChanged is called when state of a notification is |
| // changed, e.g. surface for a notification is created. |
| [MinVersion=10] OnNotificationStateChanged@2( |
| string notification_key, AccessibilityNotificationStateType state); |
| }; |
| |
| // Interface for communicating to Android. |
| // Deprecated method IDs: 0, 1, 3, 5 |
| // Next method ID: 10 |
| interface AccessibilityHelperInstance { |
| // Establishes full-duplex communication with the host. |
| [MinVersion=9] Init@7(AccessibilityHelperHost host) => (); |
| |
| // Set a filter on the event types received. |
| SetFilter@2(AccessibilityFilterType filter_type); |
| |
| // Perform an action on a node requested by a Chrome client. |
| [MinVersion=4] PerformAction@4(AccessibilityActionData action_data) |
| => (bool result); |
| |
| // Sets the focused window's package to use ChromeVox (true) or TalkBack |
| // (false). |
| [MinVersion=8] SetNativeChromeVoxArcSupportForFocusedWindow@6( |
| bool enabled) => (bool processed); |
| |
| // Requests the service to enable or disable Explore By Touch. |
| [MinVersion=11] SetExploreByTouchEnabled@8(bool enabled); |
| |
| // Refresh the current node with extra data. |
| // Returns Rect specifying location, or null if textLocation is not available. |
| [MinVersion=13] RefreshWithExtraData@9(AccessibilityActionData refresh_data) |
| => (Rect? text_location); |
| }; |