syntax = "proto3";

package ash.eche_app.proto;

option optimize_for = LITE_RUNTIME;

// AccessibilityActionInHost is an object to send information of
// available AccessibilityAction in Android to Chrome.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction.html
// Next ID: 3
message AccessibilityActionInHost {
  int32 id = 1;
  string label = 2;
}

// Next ID: 2
message ListOfInt {
  repeated int32 values = 1;
}

// Next ID: 2
message ListOfString {
  repeated string values = 1;
}

// Next ID: 2
message ListOfSpanEntry {
  repeated SpanEntry values = 1;
}

// Rect from chromeos/ash/experiences/arc/mojom/gfx.mojom
// Next ID: 5
message Rect {
  int32 left = 1;
  int32 top = 2;
  int32 right = 3;
  int32 bottom = 4;
}

// 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 messages 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
//
// Converted to protos from mojom format defined in accessibility_helper.mojom
// http://cs/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom
// For more context, see: go/exo-a11y-service, go/exo-a11y-infrastructure,
// go/eche-a11y-design

// Next ID: 26
enum AccessibilityEventType {
  reserved 6;
  TYPE_VIEW_FOCUSED = 0;
  TYPE_VIEW_CLICKED = 1;
  TYPE_VIEW_LONG_CLICKED = 2;
  TYPE_VIEW_SELECTED = 3;
  TYPE_VIEW_TEXT_CHANGED = 4;
  TYPE_WINDOW_STATE_CHANGED = 5;
  TYPE_VIEW_HOVER_ENTER = 7;
  TYPE_VIEW_HOVER_EXIT = 8;
  TYPE_TOUCH_EXPLORATION_GESTURE_START = 9;
  TYPE_TOUCH_EXPLORATION_GESTURE_END = 10;
  TYPE_WINDOW_CONTENT_CHANGED = 11;
  TYPE_VIEW_SCROLLED = 12;
  TYPE_VIEW_TEXT_SELECTION_CHANGED = 13;
  TYPE_ANNOUNCEMENT = 14;
  TYPE_VIEW_ACCESSIBILITY_FOCUSED = 15;
  TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 16;
  TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 17;
  TYPE_GESTURE_DETECTION_START = 18;
  TYPE_GESTURE_DETECTION_END = 19;
  TYPE_TOUCH_INTERACTION_START = 20;
  TYPE_TOUCH_INTERACTION_END = 21;
  TYPE_WINDOWS_CHANGED = 22;
  TYPE_VIEW_CONTEXT_CLICKED = 23;
  TYPE_ASSIST_READING_CONTEXT = 24;
  TYPE_EVENT_TYPE_UNKNOWN = 25;  // not expected; used only in switch statements
}

// ContentChangeType lists the possible sub types of WINDOW_STATE_CHANGED and
// WINDOW_CONTENT_CHANGED events on Android ordered as same as developer guide
// of return value of getContentChangeTypes.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent?hl=en#getContentChangeTypes()
// Next ID: 8
enum ContentChangeType {
  TYPE_CONTENT_CHANGE_CONTENT_DESCRIPTION = 0;
  TYPE_CONTENT_CHANGE_STATE_DESCRIPTION = 1;
  TYPE_SUBTREE = 2;
  TYPE_CONTENT_CHANGE_TEXT = 3;
  TYPE_CONTENT_CHANGE_PANE_TITLE = 4;
  TYPE_UNDEFINED = 5;
  TYPE_PANE_APPEARED = 6;
  TYPE_PANE_DISAPPEARED = 7;
}

// Possible actions that can be performed on an AccessibilityNodeInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.AccessibilityAction
// Next ID: 34
enum AccessibilityActionType {
  ACTION_ACCESSIBILITY_ACTION_FOCUS = 0;
  ACTION_CLEAR_FOCUS = 1;
  ACTION_SELECT = 2;
  ACTION_CLEAR_SELECTION = 3;
  ACTION_CLICK = 4;
  ACTION_LONG_CLICK = 5;
  ACTION_ACCESSIBILITY_FOCUS = 6;
  ACTION_CLEAR_ACCESSIBILITY_FOCUS = 7;
  ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 8;      // unused
  ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 9;  // unused
  ACTION_NEXT_HTML_ELEMENT = 10;                // unused
  ACTION_PREVIOUS_HTML_ELEMENT = 11;            // unused
  ACTION_SCROLL_FORWARD = 12;
  ACTION_SCROLL_BACKWARD = 13;
  ACTION_COPY = 14;
  ACTION_PASTE = 15;
  ACTION_CUT = 16;
  ACTION_SET_SELECTION = 17;
  ACTION_EXPAND = 18;
  ACTION_COLLAPSE = 19;
  ACTION_DISMISS = 20;
  ACTION_SET_TEXT = 21;
  ACTION_CONTEXT_CLICK = 22;
  ACTION_SCROLL_DOWN = 23;
  ACTION_SCROLL_LEFT = 24;
  ACTION_SCROLL_RIGHT = 25;
  ACTION_SCROLL_TO_POSITION = 26;
  ACTION_SCROLL_UP = 27;
  ACTION_SET_PROGRESS = 28;
  ACTION_SHOW_ON_SCREEN = 29;
  ACTION_CUSTOM_ACTION = 30;      // Not a standard action.
  ACTION_GET_TEXT_LOCATION = 31;  // Not a standard action.
  ACTION_SHOW_TOOLTIP = 32;
  ACTION_HIDE_TOOLTIP = 33;
}

// Possible boolean properties set on an AccessibilityNodeInfo.
// The enum values appear in the same order as they do within
// AccessibilityNodeInfo.java.
// https://source.corp.google.com/android-internal/frameworks/base/core/java/android/view/accessibility/AccessibilityNodeInfo.java;l=785
// Next ID: 23
enum AccessibilityBooleanProperty {
  PROPERTY_CHECKABLE = 0;
  PROPERTY_CHECKED = 1;
  PROPERTY_FOCUSABLE = 2;
  PROPERTY_ACCESSIBILITY_BOOLEAN_PROPERTY_FOCUSED = 3;  // FOCUSED
  PROPERTY_SELECTED = 4;
  PROPERTY_ACCESSIBILITY_BOOLEAN_CLICKABLE = 5;
  PROPERTY_LONG_CLICKABLE = 6;
  PROPERTY_ENABLED = 7;
  PROPERTY_PASSWORD = 8;
  PROPERTY_SCROLLABLE = 9;
  PROPERTY_ACCESSIBILITY_BOOLEAN_FOCUSED = 10;
  PROPERTY_VISIBLE_TO_USER = 11;
  PROPERTY_EDITABLE = 12;
  PROPERTY_OPENS_POPUP = 13;
  PROPERTY_DISMISSABLE = 14;
  PROPERTY_MULTI_LINE = 15;
  PROPERTY_CONTENT_INVALID = 16;
  PROPERTY_CONTEXT_CLICKABLE = 17;
  PROPERTY_IMPORTANCE = 18;
  PROPERTY_SCREEN_READER_FOCUSABLE = 19;
  PROPERTY_SHOWING_HINT_TEXT = 20;
  PROPERTY_HEADING = 21;
  PROPERTY_SUPPORTS_TEXT_LOCATION = 22;
}

// Next ID: 3
message AccessibilityBooleanPropertyKeyPair {
  AccessibilityBooleanProperty key = 1;
  bool value = 2;
}

// These fields are taken from string instance members of
// AccessibilityNodeInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=138
// Next ID: 11
enum AccessibilityStringProperty {
  PROPERTY_ACCESSIBILITY_PACKAGE_NAME = 0;
  PROPERTY_ACCESSIBILITY_CLASS_NAME = 1;
  PROPERTY_ACCESSIBILITY_TEXT = 2;
  PROPERTY_ACCESSIBILITY_CONTENT_DESCRIPTION = 3;
  PROPERTY_VIEW_ID_RESOURCE_NAME = 4;
  PROPERTY_CHROME_ROLE = 5;       // Chrome only
  PROPERTY_ROLE_DESCRIPTION = 6;  // Chrome only
  PROPERTY_TOOLTIP = 7;
  PROPERTY_ACCESSIBILITY_PANE_TITLE = 8;
  PROPERTY_HINT_TEXT = 9;
  PROPERTY_ACCESSIBILITY_STATE_DESCRIPTION = 10;
}

// Next ID: 3
message AccessibilityStringPropertyKeyPair {
  AccessibilityStringProperty key = 1;
  string value = 2;
}

// Next ID: 3
message AccessibilityStringPropertySpanEntryKeyPair {
  AccessibilityStringProperty key = 1;
  ListOfSpanEntry value = 2;
}

// These fields are taken from int instance members of
// AccessibilityNodeInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=155
// Next ID: 9
enum AccessibilityIntProperty {
  PROPERTY_LABEL_FOR = 0;
  PROPERTY_LABELED_BY = 1;
  PROPERTY_TRAVERSAL_BEFORE = 2;
  PROPERTY_TRAVERSAL_AFTER = 3;
  PROPERTY_MAX_TEXT_LENGTH = 4;
  PROPERTY_TEXT_SELECTION_START = 5;
  PROPERTY_TEXT_SELECTION_END = 6;
  PROPERTY_INPUT_TYPE = 7;
  PROPERTY_LIVE_REGION = 8;
}

// Next ID: 3
message AccessibilityIntPropertyKeyPair {
  AccessibilityIntProperty key = 1;
  int32 value = 2;
}

// Next ID: 4
// These fields are taken from List<int> instance members of
// AccessibilityNodeInfo.
enum AccessibilityIntListProperty {
  PROPERTY_CHILD_NODE_IDS = 0;
}

// Next ID: 3
message AccessibilityIntListPropertyKeyPair {
  AccessibilityIntListProperty key = 1;
  ListOfInt value = 2;
}

// These fields are taken from boolean properties of
// AccessibilityWindowInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=187
// Next ID: 4
enum AccessibilityWindowBooleanProperty {
  PROPERTY_ACCESSIBILITY_FOCUSED = 0;  // FOCUSED
  PROPERTY_FOCUSED = 1;
  PROPERTY_IN_PICTURE_IN_PICTURE_MODE = 2;
  PROPERTY_WINDOW_ACTIVE = 3;
}

// Next ID: 3
message AccessibilityWindowBooleanPropertyKeyPair {
  AccessibilityWindowBooleanProperty key = 1;
  bool value = 2;
}

// These fields are taken from int attributes of
// AccessibilityWindowInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=197
// Next ID: 3
enum AccessibilityWindowIntProperty {
  PROPERTY_ANCHOR_NODE_ID = 0;
  PROPERTY_LAYER_ORDER = 1;
  PROPERTY_PARENT_WINDOW_ID = 2;
}

// Next ID: 3
message AccessibilityWindowIntPropertyKeyPair {
  AccessibilityWindowIntProperty key = 1;
  int32 value = 2;
}

// These fields are taken from String attributes of
// AccessibilityWindowInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=206
// Next ID: 1
enum AccessibilityWindowStringProperty {
  PROPERTY_TITLE = 0;
}

// Next ID: 3
message AccessibilityWindowStringPropertyKeyPair {
  AccessibilityWindowStringProperty key = 1;
  string value = 2;
}

// These fields are taken from List<Integer> instance members of
// AccessibilityWindowInfo.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=213
// Next ID: 1
enum AccessibilityWindowIntListProperty {
  PROPERTY_CHILD_WINDOW_IDS = 0;
}

// Next ID: 3
message AccessibilityWindowIntListPropertyKeyPair {
  AccessibilityWindowIntListProperty key = 1;
  ListOfInt value = 2;
}

// This type is a subset of spans available under android.text.style.
// Next ID: 2
enum SpanType {
  TYPE_URL = 0;
  TYPE_SPAN_TYPE_CLICKABLE = 1;
}

// Groups data about a Spannable.
// Next ID: 4
message SpanEntry {
  int32 start = 1;
  int32 end = 2;
  SpanType span_type = 3;
}

// These fields are taken from AccessibilityNodeInfo.CollectionItemInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.CollectionInfo
// Next ID: 3
enum AccessibilitySelectionMode {
  MODE_ACCESSIBILITY_SELECTION_MODE_NONE = 0;
  MODE_SINGLE = 1;
  MODE_MULTIPLE = 2;
}

// These fields are taken from AccessibilityNodeInfo.CollectionInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.CollectionInfo
// Next ID: 5
message AccessibilityCollectionInfoData {
  int32 row_count = 1;
  int32 column_count = 2;
  bool is_hierarchical = 3;
  AccessibilitySelectionMode selection_mode = 4;
}

// These fields are taken from AccessibilityNodeInfo.CollectionItemInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.CollectionInfo
// Next ID: 7
message AccessibilityCollectionItemInfoData {
  int32 row_index = 1;
  int32 column_index = 2;
  int32 row_span = 3;
  int32 column_span = 4;
  bool is_heading = 5;
  bool is_selected = 6;
}

// These fields are taken from AccessibilityNodeInfo.RangeInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.RangeInfo
// Next ID: 3
enum AccessibilityRangeType {
  TYPE_INT = 0;
  TYPE_FLOAT = 1;
  TYPE_PERCENT = 2;
}

// These fields are taken from AccessibilityNodeInfo.RangeInfo.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.RangeInfo
// Next ID: 5
message AccessibilityRangeInfoData {
  AccessibilityRangeType range_type = 1;
  float min = 2;
  float max = 3;
  float current = 4;
}

// These fields are taken from View.ACCESSIBILITY_LIVE_REGION_*.
// https://developer.android.com/reference/android/view/View#summary
// Next ID: 3
enum AccessibilityLiveRegionType {
  TYPE_ACCESSIBILITY_LIVE_REGION_NONE = 0;
  TYPE_POLITE = 1;
  TYPE_ASSERTIVE = 2;
}

// These fields are taken from AccessibilityWindowInfo's window types.
// https://developer.android.com/reference/android/view/View#summary
// Next ID: 6
enum AccessibilityWindowType {
  reserved 2;
  TYPE_ACCESSIBILITY_OVERLAY = 0;
  TYPE_APPLICATION = 1;
  TYPE_SPLIT_SCREEN_DIVIDER = 3;
  TYPE_SYSTEM = 4;
  TYPE_WINDOW_TYPE_UNKNOWN = 5;  // not expected; used only in switch statements
}

// AccessibilityNodeInfoData is an object to contain info of
// AccessibilityNodeInfo in Android.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo
// Next ID: 15
message AccessibilityNodeInfoData {
  Rect bounds_in_screen = 1;
  int32 id = 2;
  repeated AccessibilityBooleanPropertyKeyPair boolean_properties = 3;
  repeated AccessibilityStringPropertyKeyPair string_properties = 4;
  repeated AccessibilityIntPropertyKeyPair int_properties = 5;

  repeated AccessibilityIntListPropertyKeyPair int_list_properties = 6;
  repeated AccessibilityStringPropertySpanEntryKeyPair
      spannable_string_properties = 7;
  AccessibilityCollectionInfoData collection_info = 8;
  AccessibilityCollectionItemInfoData collection_item_info = 9;
  AccessibilityRangeInfoData range_info = 10;
  int32 window_id = 11;
  bool is_virtual_node = 12;
  repeated AccessibilityActionInHost standard_actions = 13;
  repeated AccessibilityActionInHost custom_actions = 14;
}

// AccessibilityWindowInfoData is an object to contain info about
// AccessibilityWindowInfo in Android.
// http://cs/android-internal/frameworks/base/core/java/android/view/accessibility/AccessibilityWindowInfo.java
// Next ID: 9
message AccessibilityWindowInfoData {
  int32 window_id = 1;
  int32 root_node_id = 2;
  Rect bounds_in_screen = 3;
  AccessibilityWindowType window_type = 4;
  repeated AccessibilityWindowBooleanPropertyKeyPair boolean_properties = 5;
  repeated AccessibilityWindowStringPropertyKeyPair string_properties = 6;
  repeated AccessibilityWindowIntPropertyKeyPair int_properties = 7;
  repeated AccessibilityWindowIntListPropertyKeyPair int_list_properties = 8;
}

// Filters the event type (and implicitly the data) sent by the Exo
// accessibility service.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=338
// Next ID: 3
enum AccessibilityFilterType {
  // No events will be sent.
  TYPE_OFF = 0;

  // Only send focus events along with the source focus node.
  TYPE_ACCESSIBILITY_FILTER_FOCUS = 1;

  // Send a complete tree from the event source's root for every event.
  TYPE_ALL = 2;
}

// These fields are taken from int attributes of
// AccessibilityEvent and AccessibilityRecord.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=363
// Next ID: 11
enum AccessibilityEventIntProperty {
  PROPERTY_ACTION = 0;
  PROPERTY_FROM_INDEX = 1;
  PROPERTY_TO_INDEX = 2;
  PROPERTY_ITEM_COUNT = 3;
  PROPERTY_CURRENT_ITEM_INDEX = 4;
  PROPERTY_SCROLL_X = 5;
  PROPERTY_SCROLL_Y = 6;
  PROPERTY_MAX_SCROLL_X = 7;
  PROPERTY_MAX_SCROLL_Y = 8;
  PROPERTY_SCROLL_DELTA_X = 9;
  PROPERTY_SCROLL_DELTA_Y = 10;
}

// Next ID: 3
message AccessibilityEventIntPropertyKeyPair {
  AccessibilityEventIntProperty key = 1;
  int32 value = 2;
}

// These fields are taken from string attributes of
// AccessibilityEvent and AccessibilityRecord.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=380
// Next ID: 3
enum AccessibilityEventStringProperty {
  PROPERTY_ACCESSIBILITY_EVENT_CLASS_NAME = 0;
  PROPERTY_ACCESSIBILITY_EVENT_PACKAGE_NAME = 1;
  PROPERTY_ACCESSIBILITY_EVENT_CONTENT_DESCRIPTION = 2;
}

// Next ID: 3
message AccessibilityEventStringPropertyKeyPair {
  AccessibilityEventStringProperty key = 1;
  string value = 2;
}

// These fields are taken from List<Integer> like instance members of
// AccessibilityEvent and AccessibilityRecord.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=389
// Next ID: 1
enum AccessibilityEventIntListProperty {
  PROPERTY_CONTENT_CHANGE_TYPES = 0;
}

// Next ID: 3
message AccessibilityEventIntListPropertyKeyPair {
  AccessibilityEventIntListProperty key = 1;
  ListOfInt value = 2;
}

// AccessibilityEventData is an object to contain info of
// AccessibilityEvent in Android.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent.html
// Next ID: 12
message AccessibilityEventData {
  AccessibilityEventType event_type = 1;
  int32 source_id = 2;
  repeated AccessibilityNodeInfoData node_data = 3;

  // 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.
  int32 window_id = 4;

  // 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.
  repeated AccessibilityWindowInfoData window_data = 5;

  // Retrieved from AccessibilityRecord.getText().
  repeated string event_text = 7;

  repeated AccessibilityEventIntPropertyKeyPair int_properties = 8;

  repeated AccessibilityEventStringPropertyKeyPair string_properties = 9;

  repeated AccessibilityEventIntListPropertyKeyPair int_list_properties = 10;

  // Bounds for the display on the Android device
  Rect display_info = 11;
}

// This enum is used to represent the argument
// string constants for accessibility action float parameters.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#constants_1
// Next ID: 1
enum ActionFloatArgumentType {
  TYPE_PROGRESS_VALUE = 0;
}

// Next ID: 3
message ActionFloatArgumentTypeKeyPair {
  ActionFloatArgumentType key = 1;
  float value = 2;
}

// This enum is used to represent the argument
// string constants for accessibility action integer parameters.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#constants_1
// Next ID: 8
enum ActionIntArgumentType {
  TYPE_MOVEMENT_GRANULARITY_INT = 0;
  TYPE_SELECTION_START_INT = 1;
  TYPE_SELECTION_END_INT = 2;
  TYPE_ROW_INT = 3;
  TYPE_COLUMN_INT = 4;
  TYPE_MOVE_WINDOW_X = 5;
  TYPE_MOVE_WINDOW_Y = 6;
  TYPE_PRESS_AND_HOLD_DURATION_MILLIS_INT = 7;
}

// Next ID: 3
message ActionIntArgumentTypeKeyPair {
  ActionIntArgumentType key = 1;
  int32 value = 2;
}

// This enum is used to represent the argument
// string constants for accessibility action string parameters.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#constants_1
// Next ID: 2
enum ActionStringArgumentType {
  TYPE_HTML_ELEMENT_STRING = 0;
  TYPE_SET_TEXT_CHARSEQUENCE = 1;
}

// Next ID: 3
message ActionStringArgumentTypeKeyPair {
  ActionStringArgumentType key = 1;
  string value = 2;
}

// This enum is used to represent the argument string constants
// for accessibility action parameters that have complex types.
// https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#constants_1
// Next ID: 1
enum ActionComplexArgumentType {
  TYPE_ACCESSIBLE_CLICKABLE_SPAN = 0;
}

// AccessibilityActionData is an object to send action information when Chrome
// invokes an action.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=470
// Next ID: 10
message AccessibilityActionData {
  int32 node_id = 1;

  AccessibilityActionType action_type = 2;

  // custom_action_id must be set if action_type is CUSTOM_ACTION.
  int32 custom_action_id = 3;

  // window_id where the action is performed on.
  int32 window_id = 4;

  // Parameters specifying indices to get text location of node
  // in Android.
  int32 start_index = 5;
  int32 end_index = 6;

  // Parameters for action functions.
  // Ex: SCROLL_TO_POSITION would have a row and column int parameter.
  repeated ActionIntArgumentTypeKeyPair int_parameters = 7;
  repeated ActionStringArgumentTypeKeyPair string_parameters = 8;
  repeated ActionFloatArgumentTypeKeyPair float_parameters = 9;
}

// Information used to identify AccessibilityWindow.
// In P or before, task_id was used. In Q or later, window_id is used.
// https://source.corp.google.com/android-internal/vendor/google_arc/libs/org.chromium.arc.mojom/components/arc/mojom/accessibility_helper.mojom;l=525
// Next ID: 2
message AccessibilityWindowKey {
  uint32 window_id = 1;
}
