// Copyright 2014 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. // This is the implementation layer of the chrome.automation API, and is // essentially a translation of the internal accessibility tree update system // into an extension API. namespace automationInternal { // Data for an accessibility event and/or an atomic change to an accessibility // tree. See ui/accessibility/ax_tree_update.h for an extended explanation of // the tree update format. [nocompile] dictionary AXEventParams { // The tree id of the web contents that this update is for. long treeID; // ID of the node that the event applies to. long targetID; // The type of event that this update represents. DOMString eventType; }; // All possible actions that can be performed on automation nodes. enum ActionType { focus, doDefault, makeVisible, setSelection, showContextMenu }; // Arguments required for all actions supplied to performAction. dictionary PerformActionRequiredParams { long treeID; long automationNodeID; ActionType actionType; }; // Arguments for the setSelection action supplied to performAction. dictionary SetSelectionParams { // Reuses ActionRequiredParams automationNodeID to mean anchor node id, // and treeID to apply to both anchor and focus node ids. long focusNodeID; long anchorOffset; long focusOffset; }; // Arguments for the querySelector function. dictionary QuerySelectorRequiredParams { long treeID; long automationNodeID; DOMString selector; }; // Arguments for the enableTab function. dictionary EnableTabParams { long routingID; long? tabID; }; // Returns the accessibility tree id of the web contents who's accessibility // was enabled using enableTab(). callback EnableTabCallback = void(long tree_id); // Callback called when enableDesktop() returns. callback EnableDesktopCallback = void(); // Callback called when querySelector() returns. callback QuerySelectorCallback = void(long resultAutomationNodeID); interface Functions { // Enable automation of the tab with the given id, or the active tab if no // tab id is given, and retrieves accessibility tree id for use in // future updates. static void enableTab(EnableTabParams args, EnableTabCallback callback); // Enable automation of the frame with the given tree id. static void enableFrame(long tree_id); // Enables desktop automation. static void enableDesktop(long routingID, EnableDesktopCallback callback); // Performs an action on an automation node. static void performAction(PerformActionRequiredParams args, object opt_args); // Performs a query selector query. static void querySelector(QuerySelectorRequiredParams args, QuerySelectorCallback callback); }; interface Events { // Fired when an accessibility event occurs static void onAccessibilityEvent(AXEventParams update); static void onAccessibilityTreeDestroyed(long treeID); static void onTreeChange(long observerID, long treeID, long nodeID, DOMString changeType); static void onChildTreeID(long treeID, long nodeID); static void onNodesRemoved(long treeID, long[] nodeIDs); }; };