| // Copyright 2014 The Chromium Authors | 
 | // 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. | 
 |     DOMString treeID; | 
 |  | 
 |     // ID of the node that the event applies to. | 
 |     long targetID; | 
 |  | 
 |     // The type of event that this update represents. | 
 |     DOMString eventType; | 
 |  | 
 |     // The source of this event. | 
 |     DOMString eventFrom; | 
 |  | 
 |     // The mouse coordinates when this event fired. | 
 |     double mouseX; | 
 |     double mouseY; | 
 |  | 
 |  | 
 |     // ID of an action request resulting in this event. | 
 |     long actionRequestID; | 
 |   }; | 
 |  | 
 |   dictionary AXTextLocationParams { | 
 |     DOMString treeID; | 
 |     long nodeID; | 
 |     boolean result; | 
 |     long left; | 
 |     long top; | 
 |     long width; | 
 |     long height; | 
 |     long requestID; | 
 |   }; | 
 |  | 
 |   // Arguments required for all actions supplied to performAction. | 
 |   dictionary PerformActionRequiredParams { | 
 |     DOMString treeID; | 
 |     long automationNodeID; | 
 |  | 
 |     // This can be either automation::ActionType or | 
 |     // automation_internal::ActionTypePrivate. | 
 |     DOMString actionType; | 
 |  | 
 |     long? requestID; | 
 |   }; | 
 |  | 
 |   // Arguments for the customAction action. Those args are passed to | 
 |   // performAction as opt_args. | 
 |   dictionary PerformCustomActionParams { | 
 |     long customActionID; | 
 |   }; | 
 |  | 
 |   // 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 replaceSelectedText action supplied to performAction. | 
 |   dictionary ReplaceSelectedTextParams { | 
 |     DOMString value; | 
 |   }; | 
 |  | 
 |   // Arguments for the setValue action supplied to performAction. | 
 |   dictionary SetValueParams { | 
 |     DOMString value; | 
 |   }; | 
 |  | 
 |  | 
 |   // Arguments for the scrollToPoint action supplied to performAction. | 
 |   dictionary ScrollToPointParams { | 
 |     long x; | 
 |     long y; | 
 |   }; | 
 |  | 
 |   // Arguments for the scrollToPositionAtRowColumn action supplied to performAction. | 
 |   dictionary ScrollToPositionAtRowColumnParams { | 
 |     long row; | 
 |     long column; | 
 |   }; | 
 |  | 
 |   // Arguments for the SetScrollOffset action supplied to performAction. | 
 |   dictionary SetScrollOffsetParams { | 
 |     long x; | 
 |     long y; | 
 |   }; | 
 |  | 
 |   // Arguments for the getImageData action. | 
 |   dictionary GetImageDataParams { | 
 |     long maxWidth; | 
 |     long maxHeight; | 
 |   }; | 
 |  | 
 |   // Arguments for the hitTest action. | 
 |   dictionary HitTestParams { | 
 |     long x; | 
 |     long y; | 
 |     DOMString eventToFire; | 
 |   }; | 
 |  | 
 |   // Arguments for getTextLocation action. | 
 |   dictionary GetTextLocationDataParams { | 
 |     long startIndex; | 
 |     long endIndex; | 
 |   }; | 
 |  | 
 |   // Callback called when enableDesktop() returns. Returns the accessibility | 
 |   // tree id of the desktop tree. | 
 |   callback EnableDesktopCallback = void(DOMString tree_id); | 
 |  | 
 |   // Callback called when disableDesktop() returns. It is safe to clear | 
 |   // accessibility api state at that point. | 
 |   callback DisableDesktopCallback = void(); | 
 |  | 
 |   interface Functions { | 
 |     // Enable automation of the tree with the given id. | 
 |     static void enableTree(DOMString tree_id); | 
 |  | 
 |     // Enables desktop automation. | 
 |     static void enableDesktop( | 
 |         EnableDesktopCallback callback); | 
 |  | 
 |     // Disables desktop automation. | 
 |     static void disableDesktop(DisableDesktopCallback callback); | 
 |  | 
 |     // Performs an action on an automation node. | 
 |     static void performAction(PerformActionRequiredParams args, | 
 |                               object opt_args); | 
 |   }; | 
 |  | 
 |   interface Events { | 
 |     // Fired when an accessibility event occurs | 
 |     static void onAccessibilityEvent(AXEventParams update); | 
 |  | 
 |     static void onAccessibilityTreeDestroyed(DOMString treeID); | 
 |  | 
 |     static void onGetTextLocationResult(AXTextLocationParams params); | 
 |  | 
 |     static void onTreeChange(long observerID, | 
 |                              DOMString treeID, | 
 |                              long nodeID, | 
 |                              DOMString changeType); | 
 |  | 
 |     static void onChildTreeID(DOMString treeID); | 
 |  | 
 |     static void onNodesRemoved(DOMString treeID, long[] nodeIDs); | 
 |  | 
 |     static void onAccessibilityTreeSerializationError(DOMString treeID); | 
 |  | 
 |     static void onActionResult(DOMString treeID, long requestID, boolean result); | 
 |  | 
 |     static void onAllAutomationEventListenersRemoved(); | 
 |   }; | 
 | }; |