| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.accessibility; |
| |
| using koid = uint64; |
| |
| // DEPRECATED; TO BE REMOVED |
| |
| // A semantics root is an interface implemented by an accessibility manager. It stores semantic |
| // information on a per-view basis as supplied by front-ends. Each frontend pushes its semantic tree |
| // to the manager, which stores this data. In future, the manager will also forward this data to |
| // relevant client services. It also acts as a place for the manager to call actions on front-ends. |
| // |
| |
| // This is a stub implementation and is currently a work in progress. |
| [Discoverable] |
| protocol SemanticsRoot { |
| // Registers a frontend with a view id to the root. To correlate views with their associated |
| // clients, the semantic root uses view KOIDs as unique identifiers. All future updates that a |
| // frontend makes need to include the view id. The frontend is required to pass a |
| // SemanticsProvider interface on registration for the manager to call front-end accessibility |
| // actions. Providers need to re-register on connection error. |
| RegisterSemanticsProvider( |
| koid view_id, |
| SemanticsProvider provider); |
| |
| // Commits changes to node tree associated with the view_id using |
| // UpdateSemanticNodes and DeleteSemanticNodes. This function must |
| // always be called at the end of a full update push to signal the end of an update. |
| // No-op if the client did not register that ID. |
| |
| // This commit system is used to allow for atomic changes of the tree that |
| // exceed the FIDL transfer limit and allows both updates and deletes as part |
| // of one commit. We give front-ends the responsibility of splitting a full update |
| // into multiple update and delete calls that do not exceed FIDL transfer data limits. |
| Commit(koid view_id); |
| |
| // Sends new/updated nodes to the root to add to the cache on the next commit. |
| // No-op if the client did not register that ID. |
| UpdateSemanticNodes(koid view_id, vector<Node> nodes); |
| |
| // Tells the root to remove nodes with node_ids from the frontend referenced by |
| // view_id on the next commit. No-op if the client did not register that ID. |
| DeleteSemanticNodes(koid view_id, vector<int32> node_ids); |
| }; |
| |
| // A semantic provider is the client-side interface that the manager can use to |
| // ask clients to perform accessibility actions. |
| protocol SemanticsProvider { |
| // Asks the semantics provider to perform an accessibility action on the |
| // node with node id in the front-end. |
| PerformAccessibilityAction(int32 node_id, Action action); |
| }; |