Google is committed to advancing racial equity for Black communities. See how.

fuchsia.accessibility.semantics

PROTOCOLS

SemanticListener

Defined in fuchsia.accessibility.semantics/semantics_manager.fidl

A semantic provider is the client-side interface that the manager can use to enable or disable semantic updates, and to ask clients to perform accessibility actions.

HitTest

Asks the semantics provider to perform hit testing and return the result.

Request

NameType
local_point fuchsia.math/PointF

Response

NameType
result Hit

OnAccessibilityActionRequested

Asks the semantics provider to perform an accessibility action on the node with node id in the front-end.

Request

NameType
node_id uint32
action Action

Response

NameType
handled bool

OnSemanticsModeChanged

Callback telling the client whether or not to send updates to the semantic tree. The semantics manager will clear all state when this is called with updates_enabled = false. When called with updates_enabled = true, the client should sent the full state of the current semantic tree.

Request

NameType
updates_enabled bool

Response

NameType

SemanticTree

Defined in fuchsia.accessibility.semantics/semantics_manager.fidl

Interface to update the semantic tree for a particular view. Nodes can be added, updated or deleted. Because the size of an update may exceed FIDL transfer limits, clients are responsible for breaking up changes into multiple update and delete calls that conform to these limits. The commit function must always be called at the end of a full update push to signal the end of an update.

The client may make several calls to UpdateSemanticNodes(...) or DeleteSemanticNodes(...) before calling CommitUpdates(), and must wait for the semantics manager to reply to the CommitUpdates() method to know whether an update has been processed. This allows the client to break up a set of changes (e.g. a re-computed semantic tree) to the semantic tree into FIDL-compatible chunks, but commit them all at once.

If the semantics manager ever receives inconsistent state from the client, such as an invalid tree or unrecognized parent node id, the server will close the channel. The client is responsible for reconnecting and re-sending its state from scratch.

CommitUpdates

Commits pending changes to node tree associated with the view using UpdateSemanticNodes and DeleteSemanticNodes. Updates are processed in the order in which they are received. If the committed updates result in an ill-formed tree (for example a missing root node or a cycle) the semantic manager will close the channel.

Request

NameType

Response

NameType

DeleteSemanticNodes

Tells the root to remove nodes with node_ids from the semantic tree on the next commit.

Request

NameType
node_ids vector<uint32>[2048]

SendSemanticEvent

Sends a Semantic Event related to this tree. This applies immediately and does not wait for CommitUpdates(). It is the caller's responsibility to fire events on nodes that have been already commited. The return callback is invoked to acknowledge that the event was received.

Request

NameType
semantic_event SemanticEvent

Response

NameType

UpdateSemanticNodes

Sends new/updated nodes to the root to add to the cache on the next commit.

Request

NameType
nodes vector<Node>[2048]

SemanticsManager

Defined in fuchsia.accessibility.semantics/semantics_manager.fidl

An interface to manage connections with views for the purposes of gathering semantic information about their current UI state.

The manager allows clients to register as a semantic provider for their view(s). In return the semantics manager supplies an interface to update, commit and delete information from the semantic tree for that view. If the semantic manager encounters an error, it will close the channel, delete any associated data and rely on the client to re-register.

RegisterViewForSemantics

Request

NameType
view_ref fuchsia.ui.views/ViewRef
listener SemanticListener
semantic_tree_request request<SemanticTree>

STRUCTS

ENUMS

Action

Type: uint32

Defined in fuchsia.accessibility.semantics/node.fidl

Represents actions that can be applied to Nodes.

NameValueDescription
DEFAULT 1

The default action associated with the element.

SECONDARY 2

The secondary action associated with the element. This may correspond to a long press (touchscreens) or right click (mouse).

SET_FOCUS 3

Set (input/non-accessibility) focus on this element.

SET_VALUE 4

Set the element's value.

SHOW_ON_SCREEN 5

Scroll node to make it visible.

DECREMENT 6

Decrement a slider by one step value. The step size is defined by the owner of the semantic node that executes this action. For example, a volume slider may want to make steps 1, 2, 3, while a time slider may want to skip 30 seconds each step change.

INCREMENT 7

Increment a slider by one step value. The step size is defined by the owner of the semantic node that executes this action. For example, a volume slider may want to make steps 1, 2, 3, while a time slider may want to skip 30 seconds each step change.

CheckedState

Type: uint32

Defined in fuchsia.accessibility.semantics/node.fidl

Represents the state of a UI checkbox.

NameValueDescription
NONE 1

Used when no data is entered or the element is not a check box.

CHECKED 2

Checked

UNCHECKED 3

Unchecked

MIXED 4

Indeterminate state

LabelOrigin

Type: uint32

Defined in fuchsia.accessibility.semantics/node.fidl

The possible origins of a label.

NameValueDescription
UNITIALIZED 1

The node does not have a label yet.

ATTRIBUTE 2

An attribute of this element in the runtime UI explicitly sets its label. For example, an element with aria-label.

ATTRIBUTE_EMPTY 3

An attribute of this element in the runtime UI explicitly sets its label to be empty.

CAPTION 4

This label serves as the caption for a table-like element. Because some assistive technology have special modes to deal with tables, a runtime should mark its label with this type of origin so that users know what the table is about when they navigate in the table mode. For example, a

html tag sets the label.

CONTENTS 5

This node receives its label from the contents present in the application. For example, text from a web page becomes the label of this node.

PLACEHOLDER 6

An element that can receive user entered value and has a suggested input. For example, the placeholder attribute on an html input field.

RELATED_ELEMENT 7

Another element provides the label for this element. For example, via aria-labeledby.

TITLE 8

This element's label is represented by a visual tooltip. For example, as if from a html tag.</p> </td> </tr><tr id="LabelOrigin.VALUE"> <td><code translate="no" dir="ltr">VALUE</code></td> <td><code translate="no" dir="ltr">9</code></td> <td><p>The label comes from an user-entered value.</p> </td> </tr></table> <h3 id="Role" transformation="converted" data-text="Role">Role</h3> <p>Type: <code translate="no" dir="ltr">uint32</code></p> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=38">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>Represents a role of an element on a UI.</p> <table> <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="Role.UNKNOWN"> <td><code translate="no" dir="ltr">UNKNOWN</code></td> <td><code translate="no" dir="ltr">1</code></td> <td><p>Role used to represent elements which role is not currently supported.</p> </td> </tr><tr id="Role.BUTTON"> <td><code translate="no" dir="ltr">BUTTON</code></td> <td><code translate="no" dir="ltr">2</code></td> <td><p>Something on screen that can be clicked/activated, that has a single function.</p> </td> </tr><tr id="Role.HEADER"> <td><code translate="no" dir="ltr">HEADER</code></td> <td><code translate="no" dir="ltr">3</code></td> <td><p>Header text, e.g. something tagged <h1> in HTML.</p> </td> </tr><tr id="Role.IMAGE"> <td><code translate="no" dir="ltr">IMAGE</code></td> <td><code translate="no" dir="ltr">4</code></td> <td><p>An image or graphic.</p> </td> </tr><tr id="Role.TEXT_FIELD"> <td><code translate="no" dir="ltr">TEXT_FIELD</code></td> <td><code translate="no" dir="ltr">5</code></td> <td><p>A field containing text that is not a header.</p> </td> </tr><tr id="Role.SLIDER"> <td><code translate="no" dir="ltr">SLIDER</code></td> <td><code translate="no" dir="ltr">6</code></td> <td><p>A slider, e.g. a volume slider or a time slider of a video.</p> </td> </tr><tr id="Role.LINK"> <td><code translate="no" dir="ltr">LINK</code></td> <td><code translate="no" dir="ltr">7</code></td> <td><p>A link, e.g. a link on a webpage.</p> </td> </tr><tr id="Role.CHECK_BOX"> <td><code translate="no" dir="ltr">CHECK_BOX</code></td> <td><code translate="no" dir="ltr">8</code></td> <td><p>A check box that can be toggled.</p> </td> </tr><tr id="Role.RADIO_BUTTON"> <td><code translate="no" dir="ltr">RADIO_BUTTON</code></td> <td><code translate="no" dir="ltr">9</code></td> <td><p>A radio button that selects an option among a group of options.</p> </td> </tr><tr id="Role.LIST"> <td><code translate="no" dir="ltr">LIST</code></td> <td><code translate="no" dir="ltr">10</code></td> <td><p>Role used to represent lists.</p> </td> </tr><tr id="Role.LIST_ELEMENT_MARKER"> <td><code translate="no" dir="ltr">LIST_ELEMENT_MARKER</code></td> <td><code translate="no" dir="ltr">12</code></td> <td><p>Role used to represent a list marker (e.g. a bullet point, number, roman numeral, etc.).</p> </td> </tr><tr id="Role.STATIC_TEXT"> <td><code translate="no" dir="ltr">STATIC_TEXT</code></td> <td><code translate="no" dir="ltr">13</code></td> <td><p>Role used to represent immutable text.</p> </td> </tr><tr id="Role.TOGGLE_SWITCH"> <td><code translate="no" dir="ltr">TOGGLE_SWITCH</code></td> <td><code translate="no" dir="ltr">14</code></td> <td><p>Role used to represent toggle switch.</p> </td> </tr><tr id="Role.TABLE"> <td><code translate="no" dir="ltr">TABLE</code></td> <td><code translate="no" dir="ltr">15</code></td> <td><p>Role used to represent a table of elements.</p> </td> </tr><tr id="Role.GRID"> <td><code translate="no" dir="ltr">GRID</code></td> <td><code translate="no" dir="ltr">16</code></td> <td><p>Role used to represent a grid. For example, an element with the aria-grid role.</p> </td> </tr><tr id="Role.TABLE_ROW"> <td><code translate="no" dir="ltr">TABLE_ROW</code></td> <td><code translate="no" dir="ltr">17</code></td> <td><p>Role used to represent the row of a table.</p> </td> </tr><tr id="Role.CELL"> <td><code translate="no" dir="ltr">CELL</code></td> <td><code translate="no" dir="ltr">18</code></td> <td><p>Role used to represent the cell of a table or grid.</p> </td> </tr><tr id="Role.COLUMN_HEADER"> <td><code translate="no" dir="ltr">COLUMN_HEADER</code></td> <td><code translate="no" dir="ltr">19</code></td> <td><p>Role used to represent a column header. For example, an element with the html tag <th>.</p> </td> </tr><tr id="Role.ROW_GROUP"> <td><code translate="no" dir="ltr">ROW_GROUP</code></td> <td><code translate="no" dir="ltr">20</code></td> <td><p>Role used to represent an aria-rowgroup-like element.</p> </td> </tr><tr id="Role.PARAGRAPH"> <td><code translate="no" dir="ltr">PARAGRAPH</code></td> <td><code translate="no" dir="ltr">21</code></td> <td><p>Role used to represent a paragraph of text.</p> </td> </tr></table> <h3 id="ToggledState" transformation="converted" data-text="ToggledState">ToggledState</h3> <p>Type: <code translate="no" dir="ltr">uint32</code></p> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=218">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>Represents the state of a UI toggle switch.</p> <table> <tr><th>Name</th><th>Value</th><th>Description</th></tr><tr id="ToggledState.ON"> <td><code translate="no" dir="ltr">ON</code></td> <td><code translate="no" dir="ltr">1</code></td> <td><p>Toggle switch is on.</p> </td> </tr><tr id="ToggledState.OFF"> <td><code translate="no" dir="ltr">OFF</code></td> <td><code translate="no" dir="ltr">2</code></td> <td><p>Toggle switch is off.</p> </td> </tr><tr id="ToggledState.INDETERMINATE"> <td><code translate="no" dir="ltr">INDETERMINATE</code></td> <td><code translate="no" dir="ltr">3</code></td> <td><p>Toggle switch is in Indeterminate state.</p> </td> </tr></table> <h2 id="tables" data-text="TABLES"><strong>TABLES</strong></h2> <h3 id="AnnounceEvent" transformation="converted" data-text="AnnounceEvent">AnnounceEvent</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=51">fuchsia.accessibility.semantics/semantics_manager.fidl</a></em></p> <p>An announce event is one where a message is sent to a Semantic Tree, informing a change of some global state in the application. Because this announcement can be disruptive to assistive technology, it should be used sparingly.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="AnnounceEvent.message"> <td>1</td> <td><code translate="no" dir="ltr">message</code></td> <td> <code translate="no" dir="ltr">string[16384]</code> </td> <td><p>A message describing the change in the application. This message is expected to be localized in the language that the application is in.</p> </td> </tr></table> <h3 id="Attributes" transformation="converted" data-text="Attributes">Attributes</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=163">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>An attribute is an essential property to describe an element. Unlike states, attributes do not change over the life of an element. Example: A button with a label attribute 'ok' should never change to 'cancel', as this is not the same element.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="Attributes.label"> <td>1</td> <td><code translate="no" dir="ltr">label</code></td> <td> <code translate="no" dir="ltr">string[16384]</code> </td> <td><p>The primary label for an element. If longer than MAX_LABEL_SIZE the client is responsible for truncating the label.</p> </td> </tr><tr id="Attributes.secondary_label"> <td>2</td> <td><code translate="no" dir="ltr">secondary_label</code></td> <td> <code translate="no" dir="ltr">string[16384]</code> </td> <td><p>The secondary label for an element. If longer than MAX_LABEL_SIZE the client is responsible for truncating the label.</p> </td> </tr><tr id="Attributes.secondary_action_description"> <td>3</td> <td><code translate="no" dir="ltr">secondary_action_description</code></td> <td> <code translate="no" dir="ltr">string[16384]</code> </td> <td><p>A description of what the secondary action on a node (equivalent to long press or right click) should do.</p> </td> </tr><tr id="Attributes.range"> <td>4</td> <td><code translate="no" dir="ltr">range</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#RangeAttributes">RangeAttributes</a></code> </td> <td><p>The range attributes are filled if the element is a slider / a range control.</p> </td> </tr><tr id="Attributes.set"> <td>5</td> <td><code translate="no" dir="ltr">set</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#SetAttributes">SetAttributes</a></code> </td> <td><p>Set attributes are filled if the element is part of some type of set. For example, radio buttons that are related are part of the same set.</p> </td> </tr><tr id="Attributes.list_attributes"> <td>6</td> <td><code translate="no" dir="ltr">list_attributes</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#SetAttributes">SetAttributes</a></code> </td> <td><p>The list attributes are filled iff the node is a list. Note that only the size and set_element_ids may be filled for a list node.</p> </td> </tr><tr id="Attributes.list_element_attributes"> <td>7</td> <td><code translate="no" dir="ltr">list_element_attributes</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#SetAttributes">SetAttributes</a></code> </td> <td><p>The list element attributes are filled iff the node is a child of a list node.</p> </td> </tr><tr id="Attributes.hierarchical_level"> <td>8</td> <td><code translate="no" dir="ltr">hierarchical_level</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>The hierarchical level of an element. For example, a header can be of level 1 to 6 in html or markdown.</p> </td> </tr><tr id="Attributes.table_attributes"> <td>9</td> <td><code translate="no" dir="ltr">table_attributes</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#TableAttributes">TableAttributes</a></code> </td> <td><p>The table attributes are filled when the element is a cell.</p> </td> </tr><tr id="Attributes.label_origin"> <td>10</td> <td><code translate="no" dir="ltr">label_origin</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#LabelOrigin">LabelOrigin</a></code> </td> <td><p>The origin of the label of this element.</p> </td> </tr><tr id="Attributes.is_keyboard_key"> <td>11</td> <td><code translate="no" dir="ltr">is_keyboard_key</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>Whether the element is part of a virtual keyboard. For example, a key on an onscreen keyboard.</p> </td> </tr></table> <h3 id="Hit" transformation="converted" data-text="Hit">Hit</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=95">fuchsia.accessibility.semantics/semantics_manager.fidl</a></em></p> <p>Results of hit testing on a view's semantic tree which is implemented by Runtimes(like Flutter/Chrome) and sent to Accessibility.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="Hit.node_id"> <td>1</td> <td><code translate="no" dir="ltr">node_id</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>Unique ID that represents a node in a particular UI. Zero is assumed to be the root node and the only entry point to the tree. node_id will not be filled when there is no hit.</p> </td> </tr><tr id="Hit.path_from_root"> <td>2</td> <td><code translate="no" dir="ltr">path_from_root</code></td> <td> <code translate="no" dir="ltr">vector<uint32>[256]</code> </td> <td><p>The ordered list of node ids which represent path from root node to the hit node.</p> </td> </tr></table> <h3 id="Node" transformation="converted" data-text="Node">Node</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=278">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>The Node represents a semantic element on an interface. This may be a button, a text field, a checkbox or any element that has a relevant semantic meaning so that assistive technology can understand the current UI.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="Node.node_id"> <td>1</td> <td><code translate="no" dir="ltr">node_id</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>Unique ID that represents a node in a particular UI. Zero is assumed to be the root node and the only entry point to the tree. No forest is allowed.</p> </td> </tr><tr id="Node.role"> <td>2</td> <td><code translate="no" dir="ltr">role</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#Role">Role</a></code> </td> <td><p>Role of this element, e.g. button, checkbox, etc.</p> </td> </tr><tr id="Node.states"> <td>3</td> <td><code translate="no" dir="ltr">states</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#States">States</a></code> </td> <td><p>A table of states of this object, e.g. checked, editable, etc.</p> </td> </tr><tr id="Node.attributes"> <td>4</td> <td><code translate="no" dir="ltr">attributes</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#Attributes">Attributes</a></code> </td> <td><p>A table of attributes of this node.</p> </td> </tr><tr id="Node.actions"> <td>5</td> <td><code translate="no" dir="ltr">actions</code></td> <td> <code translate="no" dir="ltr">vector<<a class='link' href="#Action">Action</a>>[100]</code> </td> <td><p>A list of actions that can be performed on this node.</p> </td> </tr><tr id="Node.child_ids"> <td>6</td> <td><code translate="no" dir="ltr">child_ids</code></td> <td> <code translate="no" dir="ltr">vector<uint32>[20000]</code> </td> <td><p>The list of child IDs of this node, in traversal order. Runtimes supplying semantic tree information are responsible for ensuring the tree does not contain cycles. Each node may have only one parent.</p> </td> </tr><tr id="Node.location"> <td>7</td> <td><code translate="no" dir="ltr">location</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/">fuchsia.ui.gfx</a>/<a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/#BoundingBox">BoundingBox</a></code> </td> <td><p>Local bounding box of this element.</p> </td> </tr><tr id="Node.transform"> <td>8</td> <td><code translate="no" dir="ltr">transform</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/">fuchsia.ui.gfx</a>/<a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/#mat4">mat4</a></code> </td> <td><p>Transform from this node's coordinate space to its container's space. 4x4 for compatibility with scenic. This matrix is required to have the form</p> <p>[ Sx 0 0 Tx ] [ 0 Sy 0 Ty ] [ 0 0 Sz Tz ] [ 0 0 0 1 ]</p> <p>where Sx, Sy, and Sz are scale factors and Tx, Ty, Tz are the translation factors for the x, y, and z components</p> </td> </tr><tr id="Node.container_id"> <td>9</td> <td><code translate="no" dir="ltr">container_id</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>Node ID of the ancestor of this node that is used as the target of |transform|. If not present, this is interpreted as this node's parent.</p> </td> </tr></table> <h3 id="RangeAttributes" transformation="converted" data-text="RangeAttributes">RangeAttributes</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=129">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>Slider / range control attributes.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="RangeAttributes.min_value"> <td>1</td> <td><code translate="no" dir="ltr">min_value</code></td> <td> <code translate="no" dir="ltr">float32</code> </td> <td><p>The minimum value a range control element can take.</p> </td> </tr><tr id="RangeAttributes.max_value"> <td>2</td> <td><code translate="no" dir="ltr">max_value</code></td> <td> <code translate="no" dir="ltr">float32</code> </td> <td><p>The maximum value a range control element can take.</p> </td> </tr><tr id="RangeAttributes.step_delta"> <td>3</td> <td><code translate="no" dir="ltr">step_delta</code></td> <td> <code translate="no" dir="ltr">float32</code> </td> <td><p>The step delta the element applies when the action DECREMENT or INCREMENT are invoked.</p> </td> </tr></table> <h3 id="SetAttributes" transformation="converted" data-text="SetAttributes">SetAttributes</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=142">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>Set attributes that control how an element is connected to others in the same set. For example, a group of radio buttons in html containing the same name attribute are part of the same set.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="SetAttributes.size"> <td>1</td> <td><code translate="no" dir="ltr">size</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>Size of the set.</p> </td> </tr><tr id="SetAttributes.index"> <td>2</td> <td><code translate="no" dir="ltr">index</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>Element index in the set, starting from one.</p> </td> </tr><tr id="SetAttributes.set_element_ids"> <td>3</td> <td><code translate="no" dir="ltr">set_element_ids</code></td> <td> <code translate="no" dir="ltr">vector<uint32>[100]</code> </td> <td><p>Node ids of other elements in this set.</p> </td> </tr></table> <h3 id="States" transformation="converted" data-text="States">States</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=230">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>A state is a dynamic property of an element that may change in response to user action or automated processes. Thus, they are different from attributes in an important point, which is frequency of change.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="States.checked"> <td>1</td> <td><code translate="no" dir="ltr">checked</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>DEPRECATED</p> </td> </tr><tr id="States.checked_state"> <td>2</td> <td><code translate="no" dir="ltr">checked_state</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#CheckedState">CheckedState</a></code> </td> <td><p>State of a checkbox. This field is mutually exclusive with ToggledState.</p> </td> </tr><tr id="States.selected"> <td>3</td> <td><code translate="no" dir="ltr">selected</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>Whether the element is currently selected.</p> </td> </tr><tr id="States.hidden"> <td>4</td> <td><code translate="no" dir="ltr">hidden</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>Whether the element is currently hidden or marked invisible by the framework.</p> </td> </tr><tr id="States.value"> <td>5</td> <td><code translate="no" dir="ltr">value</code></td> <td> <code translate="no" dir="ltr">string[16384]</code> </td> <td><p>The user-entered value of the element, if applicable. If longer than MAX_VALUE_SIZE the client is responsible for truncating.</p> </td> </tr><tr id="States.range_value"> <td>6</td> <td><code translate="no" dir="ltr">range_value</code></td> <td> <code translate="no" dir="ltr">float32</code> </td> <td><p>If the element is a slider or a range control, this field contains the current value. Note that this is not the same as the value field above, as this is generated by the client and just adjusted by the user.</p> </td> </tr><tr id="States.viewport_offset"> <td>7</td> <td><code translate="no" dir="ltr">viewport_offset</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/">fuchsia.ui.gfx</a>/<a class='link' href="https://fuchsia.dev/reference/fidl/fuchsia.ui.gfx/#vec2">vec2</a></code> </td> <td></td> </tr><tr id="States.toggled_state"> <td>8</td> <td><code translate="no" dir="ltr">toggled_state</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#ToggledState">ToggledState</a></code> </td> <td><p>State of a toggle switch. This field must only be set if the element is a toggle switch element and is mutually exclusive with CheckedState.</p> </td> </tr><tr id="States.focusable"> <td>9</td> <td><code translate="no" dir="ltr">focusable</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>Whether this element is focusable in the UI. Note that this is not the a11y focus, but the input focus.</p> </td> </tr><tr id="States.has_input_focus"> <td>10</td> <td><code translate="no" dir="ltr">has_input_focus</code></td> <td> <code translate="no" dir="ltr">bool</code> </td> <td><p>Whether this element has the input focus. This corresponds to the system focus. Only one element can have this value set. The behavior is undetermined if more than one node sets this value to 'true'.</p> </td> </tr></table> <h3 id="TableAttributes" transformation="converted" data-text="TableAttributes">TableAttributes</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=152">fuchsia.accessibility.semantics/node.fidl</a></em></p> <p>Attributes that control how a cell inside of a table behaves.</p> <table> <tr><th>Ordinal</th><th>Name</th><th>Type</th><th>Description</th></tr> <tr id="TableAttributes.column_span"> <td>1</td> <td><code translate="no" dir="ltr">column_span</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>The number of columns this table cell spans.</p> </td> </tr><tr id="TableAttributes.row_span"> <td>2</td> <td><code translate="no" dir="ltr">row_span</code></td> <td> <code translate="no" dir="ltr">uint32</code> </td> <td><p>The number of rows this table cell spans.</p> </td> </tr></table> <h2 id="unions" data-text="UNIONS"><strong>UNIONS</strong></h2> <h3 id="SemanticEvent" transformation="converted" data-text="SemanticEvent">SemanticEvent</h3> <p><em>Defined in <a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=43">fuchsia.accessibility.semantics/semantics_manager.fidl</a></em></p> <p>Represents a Semantic Event that is fired on a Semantic Tree.</p> <table> <tr><th>Name</th><th>Type</th><th>Description</th></tr><tr id="SemanticEvent.announce"> <td><code translate="no" dir="ltr">announce</code></td> <td> <code translate="no" dir="ltr"><a class='link' href="#AnnounceEvent">AnnounceEvent</a></code> </td> <td></td> </tr></table> <h2 id="constants" data-text="CONSTANTS"><strong>CONSTANTS</strong></h2> <table> <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr><tr id="MAX_FAN_OUT"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=14">MAX_FAN_OUT</a></td> <td> <code translate="no" dir="ltr">20000</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum number of children for a node in the semantic tree.</p> </td> </tr> <tr id="MAX_LABEL_SIZE"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=20">MAX_LABEL_SIZE</a></td> <td> <code translate="no" dir="ltr">16384</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum size of a label string, in bytes.</p> </td> </tr> <tr id="MAX_MESSAGE_SIZE"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=26">MAX_MESSAGE_SIZE</a></td> <td> <code translate="no" dir="ltr">16384</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum size of a message string, in bytes.</p> </td> </tr> <tr id="MAX_NODES_PER_UPDATE"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=17">MAX_NODES_PER_UPDATE</a></td> <td> <code translate="no" dir="ltr">2048</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum number of semantic nodes that may be sent in a single update.</p> </td> </tr> <tr id="MAX_SET_ELEMENTS"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/node.fidl;l=10">MAX_SET_ELEMENTS</a></td> <td> <code translate="no" dir="ltr">100</code> </td> <td><code translate="no" dir="ltr">uint32</code></td> <td><p>Max number of elements in a semantic set.</p> </td> </tr> <tr id="MAX_TREE_DEPTH"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=11">MAX_TREE_DEPTH</a></td> <td> <code translate="no" dir="ltr">256</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum depth of the semantic tree.</p> </td> </tr> <tr id="MAX_VALUE_SIZE"> <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.accessibility.semantics/semantics_manager.fidl;l=23">MAX_VALUE_SIZE</a></td> <td> <code translate="no" dir="ltr">16384</code> </td> <td><code translate="no" dir="ltr">uint64</code></td> <td><p>Maximum size of a value string, in bytes.</p> </td> </tr> </table> <!-- The footer below is automatically added to this file. Do not modify anything below this line. --> </div> <devsite-thumb-rating position="footer"> <template class="thumb-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="thumb-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> </devsite-thumb-rating> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2021-05-06 UTC.</p> </devsite-content-footer> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> </ul> </nav> </div> </devsite-footer-utility> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar ></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics enable-analytics-iframe> <script type="application/json" analytics>[{"gaid": "UA-127897021-4", "dimensions": {"dimension6": false, "dimension1": "Signed out", "dimension2": false, "dimension3": "en", "dimension4": "en"}, "metrics": {"ratings_count": "metric2", "ratings_value": "metric1"}}]</script> <script type="application/json" gtm>{"parameters": {"freeTrialEligibleUser": "False", "internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Fuchsia", "scriptsafe": null, "signedIn": "False", "tenant": "fuchsia", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}}}</script> </devsite-analytics> <script nonce="7D9zRMJGUsfcqac0V6+dsDGHdOJgDC"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea/fuchsia/js/app_loader.js', '[32,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea","https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea/fuchsia","https://fuchsia-dot-devsite-v2-prod-3p.appspot.com",1,null,["/_pwa/fuchsia/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea/fuchsia/images/favicon.png","https://www.gstatic.com/devrel-devsite/prod/v1674d466be3b1154327dd11cf186e748303b1e92ae31ff35df0f5192fbd777ea/fuchsia/images/lockup.svg","https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"],1,null,[1,6,8,12,14,17,21,25,40,45,50,63,70,75,76,80,87,88,91,92,93,97,98,100,101,102,103,105,107,108,111,112,113,115,117,118,120,122,123,124,125,127,129,131,132,133,134,135,136],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>