chromium/chrome/common/extensions/api/accessibility_private.json

// 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.

[
  {
    "namespace": "accessibilityPrivate",
    "compiler_options": {
      "implemented_in": "chrome/browser/accessibility/accessibility_extension_api_ash.h"
    },
    "description": "none",
    "platforms": ["chromeos"],
    "types": [
      {
        "id": "AlertInfo",
        "type": "object",
        "description": "Information about an alert",
        "properties": {
          "message": {
            "type": "string",
            "description": "The message the alert is showing."
          }
        }
      },
      {
        "id": "ScreenRect",
        "type": "object",
        "description": "Bounding rectangle in global screen coordinates.",
        "properties": {
          "left": {"type": "integer", "description": "Left coordinate in global screen coordinates."},
          "top": {"type": "integer", "description": "Top coordinate in global screen coordinates."},
          "width": {"type": "integer", "description": "Width in pixels."},
          "height": {"type": "integer", "description": "Height in pixels."}
        }
      },
      {
        "id": "ScreenPoint",
        "type": "object",
        "description": "Point in global screen coordinates.",
        "properties": {
          "x": {"type": "integer", "description": "X coordinate in global screen coordinates."},
          "y": {"type": "integer", "description": "Y coordinate in global screen coordinates."}
        }
      },
      {
        "id": "Gesture",
        "type": "string",
        "enum": [ "click", "swipeLeft1", "swipeUp1", "swipeRight1", "swipeDown1", "swipeLeft2", "swipeUp2", "swipeRight2", "swipeDown2", "swipeLeft3", "swipeUp3", "swipeRight3", "swipeDown3", "swipeLeft4", "swipeUp4", "swipeRight4", "swipeDown4", "tap2", "tap3", "tap4", "touchExplore" ],
        "description": "Accessibility gestures fired by the touch exploration controller."
      },
      {
        "id": "MagnifierCommand",
        "type": "string",
        "enum": [ "moveStop", "moveUp", "moveDown", "moveLeft", "moveRight" ],
        "description": "Commands for magnifier (e.g. move magnifier viewport up)."
      },
      {
        "id": "SwitchAccessCommand",
        "type": "string",
        "enum": [ "select", "next", "previous" ],
        "description": "Commands that can be triggered by switch activation."
      },
      {
        "id": "PointScanState",
        "type": "string",
        "enum": ["start", "stop"],
        "description" : "Point scanning states in Switch Access."
      },
      {
        "id": "SwitchAccessBubble",
        "type": "string",
        "enum": [ "backButton", "menu" ],
        "description": "Different Switch Access bubbles that can be shown or hidden."
      },
      {
        "id": "PointScanPoint",
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "X coordinate of the selected point in DIPs."
          },
          "y": {
            "type": "number",
            "description": "Y coordinate of the selected point in DIPs."
          }
        }
      },
      {
        "id": "SwitchAccessMenuAction",
        "type": "string",
        "enum": [ "copy", "cut", "decrement", "dictation", "drillDown", "endTextSelection", "increment", "itemScan", "jumpToBeginningOfText", "jumpToEndOfText", "keyboard", "leftClick", "moveBackwardOneCharOfText", "moveBackwardOneWordOfText", "moveCursor", "moveDownOneLineOfText", "moveForwardOneCharOfText", "moveForwardOneWordOfText", "moveUpOneLineOfText", "paste", "pointScan", "rightClick", "scrollDown", "scrollLeft", "scrollRight", "scrollUp", "select", "settings", "startTextSelection" ],
        "description": "Available actions to be shown in the Switch Access menu. Must be kept in sync with the strings in ash/system/accessibility/switch_access/switch_access_menu_view.cc"
      },
      {
        "id": "SyntheticKeyboardEventType",
        "type": "string",
        "description": "The event to send",
        "enum": ["keyup", "keydown"]
      },
      {
        "id": "SyntheticKeyboardModifiers",
        "type": "object",
        "properties": {
          "ctrl": {
            "type": "boolean",
            "description": "Control modifier.",
            "optional": true
          },
          "alt": {
            "type": "boolean",
            "description": "alt modifier.",
            "optional": true
          },
          "search": {
            "type": "boolean",
            "description": "search modifier.",
            "optional": true
          },
          "shift": {
            "type": "boolean",
            "description": "shift modifier.",
            "optional": true
          }
        }
      },
      {
        "id": "SyntheticKeyboardEvent",
        "type": "object",
        "properties": {
          "type": {"$ref": "SyntheticKeyboardEventType"},
          "keyCode": {"type": "integer", "description": "Virtual key code, which is independent of the keyboard layout or modifier state."},
          "modifiers": {
            "$ref": "SyntheticKeyboardModifiers",
            "optional": true,
            "description": "Contains all active modifiers."
          }
        }
      },
      {
        "id": "SyntheticMouseEventType",
        "type": "string",
        "description": "The type of event to send",
        "enum": ["press", "release", "drag", "move", "enter", "exit"]
      },
      {
        "id": "SyntheticMouseEventButton",
        "type": "string",
        "description": "The button to send event on",
        "enum": ["left", "middle", "right", "back", "foward"]
      },
      {
        "id": "SyntheticMouseEvent",
        "type": "object",
        "properties": {
          "type": {"$ref": "SyntheticMouseEventType"},
          "x": {"type": "integer", "description": "X coordinate for mouse event in global screen coordinates"},
          "y": {"type": "integer", "description": "Y coordinate for mouse event in global screen coordinates"},
          "touchAccessibility": {
            "type": "boolean",
            "description": "True if the touch accessibility flag should be set.",
            "optional": true
          },
          "mouseButton": {
            "$ref": "SyntheticMouseEventButton",
            "description": "The default mouse button is set to left if mouseButton is not specified.",
            "optional": true
          },
          "isDoubleClick": {
            "type": "boolean",
            "description": "True if the double click flag should be set.",
            "optional": true
          }
        }
      },
      {
        "id": "SelectToSpeakState",
        "type": "string",
        "description": "The state of the Select-to-Speak extension",
        "enum": ["selecting", "speaking", "inactive"]
      },
      {
        "id": "FocusType",
        "type": "string",
        "description": "The type of visual appearance for the focus ring.",
        "enum": ["glow", "solid", "dashed"]
      },
      {
        "id": "FocusRingStackingOrder",
        "type": "string",
        "description": "Whether to stack focus rings above or below accessibility bubble panels. Note: focus rings will be stacked above most other UI in either case",
        "enum": ["aboveAccessibilityBubbles", "belowAccessibilityBubbles"]
      },
      {
        "id": "AssistiveTechnologyType",
        "type": "string",
        "description": "The assistive technology type of this extension.",
        "enum": ["chromeVox", "selectToSpeak", "switchAccess", "autoClick", "magnifier", "dictation"]
      },
      {
        "id": "FocusRingInfo",
        "type": "object",
        "properties": {
          "rects": {
            "type": "array",
            "items": { "$ref": "ScreenRect" },
            "description": "Array of rectangles to draw the accessibility focus ring around."
          },
          "type": {
            "$ref": "FocusType",
            "description": "The FocusType for the ring."
          },
          "color": {
            "type": "string",
            "description": "A RGB hex-value color string (e.g. #3F8213) that describes the primary color of the focus ring."
          },
          "secondaryColor": {
            "type": "string",
            "description": "A RGB hex-value color string (e.g. #3F82E4) that describes the secondary color of the focus ring, if there is one.",
            "optional": true
          },
          "backgroundColor": {
            "type": "string",
            "description": "A RGB hex-value color string (e.g. #803F82E4) that describes the color drawn outside of the focus ring and over the rest of the display.",
            "optional": true
          },
          "stackingOrder": {
            "$ref": "FocusRingStackingOrder",
            "description": "The FocusType for the ring.",
            "optional": true
          },
          "id": {
            "type": "string",
            "description": "An identifier for this focus ring, unique within the extension.",
            "optional": true
          }
        }
      },
      {
        "id": "AcceleratorAction",
        "type": "string",
        "enum": [ "focusPreviousPane", "focusNextPane" ],
        "description": "A subset of accelerator actions used by accessibility."
      },
      {
        "id": "AccessibilityFeature",
        "type": "string",
        "enum": ["dictationContextChecking", "faceGaze", "googleTtsHighQualityVoices", "faceGazeGravityWells"],
        "description": "Subset of accessibility features."
      },
      {
        "id": "SelectToSpeakPanelAction",
        "type": "string",
        "enum": [ "previousParagraph", "previousSentence", "pause", "resume", "nextSentence", "nextParagraph", "exit", "changeSpeed" ],
        "description": "Actions that can be performed in the Select-to-speak panel."
      },
      {
        "id": "SetNativeChromeVoxResponse",
        "type": "string",
        "enum": [ "success", "talkbackNotInstalled", "windowNotFound", "failure" , "needDeprecationConfirmation" ],
        "description": "Response code for onNativeChromeVoxArcSupportResult"
      },
      {
        "id": "DictationBubbleIconType",
        "type": "string",
        "enum": [ "hidden", "standby", "macroSuccess", "macroFail" ],
        "description": "The icon shown in the Dictation bubble UI."
      },
      {
        "id": "DictationBubbleHintType",
        "type": "string",
        "enum": ["trySaying", "type", "delete", "selectAll", "undo", "help", "unselect", "copy"],
        "description": "Types of hints displayed in the Dictation bubble UI."
      },
      {
        "id": "DictationBubbleProperties",
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "description": "Whether or not the UI should be visible."
          },
          "icon": {
            "$ref": "DictationBubbleIconType",
            "description": "The icon to show in the Dictation bubble UI."
          },
          "text": {
            "type": "string",
            "description": "The text to be displayed in the bubble UI. If `text` is undefined, the bubble will clear its current text.",
            "optional": true
          },
          "hints": {
            "type": "array",
            "items": { "$ref": "DictationBubbleHintType" },
            "description": "Array of hints to show in the UI.",
            "optional": true
          }
        }
      },
      {
        "id": "ToastType",
        "type": "string",
        "enum": [
          "dictationNoFocusedTextField",
          "dictationMicMuted"
        ]
      },
      {
        "id": "DlcType",
        "type": "string",
        "enum": [
          "ttsBnBd",
          "ttsCsCz",
          "ttsDaDk",
          "ttsDeDe",
          "ttsElGr",
          "ttsEnAu",
          "ttsEnGb",
          "ttsEnUs",
          "ttsEsEs",
          "ttsEsUs",
          "ttsFiFi",
          "ttsFilPh",
          "ttsFrFr",
          "ttsHiIn",
          "ttsHuHu",
          "ttsIdId",
          "ttsItIt",
          "ttsJaJp",
          "ttsKmKh",
          "ttsKoKr",
          "ttsNbNo",
          "ttsNeNp",
          "ttsNlNl",
          "ttsPlPl",
          "ttsPtBr",
          "ttsPtPt",
          "ttsSiLk",
          "ttsSkSk",
          "ttsSvSe",
          "ttsThTh",
          "ttsTrTr",
          "ttsUkUa",
          "ttsViVn",
          "ttsYueHk"
        ],
        "description": "Types of accessibility-specific DLCs."
      },
      {
        "id": "TtsVariant",
        "type": "string",
        "enum": [
          "lite",
          "standard"
        ],
        "description": "Variants of TTS voices."
      },
      {
        "id": "PumpkinData",
        "type": "object",
        "properties": {
          "js_pumpkin_tagger_bin_js": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "tagger_wasm_main_js": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "tagger_wasm_main_wasm": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "en_us_action_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "en_us_pumpkin_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "fr_fr_action_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "fr_fr_pumpkin_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "it_it_action_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "it_it_pumpkin_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "de_de_action_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "de_de_pumpkin_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "es_es_action_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          },
          "es_es_pumpkin_config_binarypb": {
            "type": "binary",
            "description": "The contents of the file as a Uint8Array."
          }
        }
      },
      {
        "id": "FaceGazeAssets",
        "type": "object",
        "properties": {
          "model": {
            "type": "binary",
            "description": "The contents of the FaceLandmarker model as a Uint8Array."
          },
          "wasm": {
            "type": "binary",
            "description": "The contents of the vision_wasm_internal.wasm file as a Uint8Array."
          }
        }
      },
      {
        "id": "ScrollDirection",
        "type": "string",
        "enum": [ "up", "down", "left", "right" ],
        "description": "The four directions for scrolling."
      },
      {
        "id": "FacialGesture",
        "type": "string",
        "description": "The facial gestures supported by FaceGaze. Keep this in sync with facial_gestures.ts, FacialGesturesToMediapipeGestures in facegaze/gesture_detector.ts, and ConvertFacialGestureType in accessibility_extension_api_ash.cc.",
        "enum": ["browInnerUp",
            "browsDown",
            "eyeSquintLeft",
            "eyeSquintRight",
            "eyesBlink",
            "eyesLookDown",
            "eyesLookLeft",
            "eyesLookRight",
            "eyesLookUp",
            "jawLeft",
            "jawOpen",
            "jawRight",
            "mouthFunnel",
            "mouthLeft",
            "mouthPucker",
            "mouthRight",
            "mouthSmile",
            "mouthUpperUp"]
      },
      {
        "id": "GestureInfo",
        "type": "object",
        "description": "Information about a detected facial gesture.",
        "properties": {
          "gesture": {
            "$ref": "FacialGesture",
            "description": "The detected facial gesture."
          },
          "confidence": {
            "type": "number",
            "description": "The confidence value."
          }
        }
      }
    ],
    "properties": {
      "IS_DEFAULT_EVENT_SOURCE_TOUCH": {
        "type": "integer",
        "value": 0,
        "description": "Property to indicate whether event source should default to touch."
      }
    },
    "functions": [
      {
        "name": "getDisplayNameForLocale",
        "type": "function",
        "nocompile": true,
        "description": "Called to translate localeCodeToTranslate into human-readable string in the locale specified by displayLocaleCode",
        "parameters": [
          {
            "name": "localeCodeToTranslate",
            "type": "string"
          },
          {
            "name": "displayLocaleCode",
            "type": "string"
          }
        ],
        "returns": {
          "type": "string",
          "description": "The human-readable locale string in the provided locale."
        }
      },
      {
        "name": "getBatteryDescription",
        "type": "function",
        "description": "Called to request battery status from Chrome OS system.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "description": "Returns battery description as a string.",
          "parameters": [
            {
              "name": "batteryDescription",
              "type": "string"
            }
          ]
        }
      },
      {
        "name": "installPumpkinForDictation",
        "type": "function",
        "description": "Called to request an install of the Pumpkin semantic parser for Dictation.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "description": "Runs when Pumpkin download finishes.",
          "parameters": [
            {
              "name": "data",
              "$ref": "PumpkinData"
            }
          ]
        }
      },
      {
        "name": "installFaceGazeAssets",
        "type": "function",
        "description": "Called to request an install of the FaceGaze assets DLC, which contains files (e.g. the FaceLandmarker model) required for FaceGaze to work.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "description": "Runs when the DLC download finishes.",
          "parameters": [
            {
              "name": "assets",
              "$ref": "FaceGazeAssets"
            }
          ]
        }
      },
      {
        "name": "setNativeAccessibilityEnabled",
        "type": "function",
        "description": "Enables or disables native accessibility support. Once disabled, it is up to the calling extension to provide accessibility for web contents.",
        "parameters": [
          {
            "type": "boolean",
            "name": "enabled",
            "description": "True if native accessibility support should be enabled."
          }
        ]
      },
      {
        "name": "setFocusRings",
        "type": "function",
        "description": "Sets the given accessibility focus rings for this extension.",
        "parameters": [
          {
            "name": "focusRings",
            "type": "array",
            "items": { "$ref": "FocusRingInfo" },
            "description": "Array of focus rings to draw."
          },
          {
            "name": "atType",
            "$ref": "AssistiveTechnologyType",
            "description": "Associates these focus rings with this feature type."
          }
        ]
      },
      {
        "name": "setHighlights",
        "type": "function",
        "description": "Sets the bounds of the accessibility highlight.",
        "parameters": [
          {
            "name": "rects",
            "type": "array",
            "items": { "$ref": "ScreenRect" },
            "description": "Array of rectangles to draw the highlight around."
          },
          {
            "name": "color",
            "type": "string",
            "description": "CSS-style hex color string beginning with # like #FF9982 or #EEE."
          }
        ]
      },
      {
        "name": "setChromeVoxFocus",
        "type": "function",
        "description": "Informs the system where Chrome Vox's focus is in screen coordinates when Magnifier is enabled. No-op when Magnifier is not enabled. Causes chrome.accessibilityPrivate.onChromeVoxFocusChanged to be fired within the AccessibilityCommon component extension.",
        "parameters": [
          {
            "name": "bounds",
            "$ref": "ScreenRect",
            "description": "Bounds of current ChromeVox focus ring."
          }
        ]
      },
      {
        "name": "setSelectToSpeakFocus",
        "type": "function",
        "description": "Informs the system where Select to Speak's reading focus is in screen coordinates when Magnifier is enabled. No-op when Magnifier is not enabled. Causes chrome.accessibilityPrivate.onSelectToSpeakFocusChanged to be fired within the AccessibilityCommon component extension.",
        "parameters": [
          {
            "name": "bounds",
            "$ref": "ScreenRect",
            "description": "Bounds of currently spoken word (if available) or node (if the spoken node is not a text node)."
          }
        ]
      },
      {
        "name": "setKeyboardListener",
        "type": "function",
        "description": "Sets the calling extension as a listener of all keyboard events optionally allowing the calling extension to capture/swallow the key event via DOM apis. Returns false via callback when unable to set the listener.",
        "parameters": [
          {
            "type": "boolean",
            "name": "enabled",
            "description": "True if the caller wants to listen to key events; false to stop listening to events. Note that there is only ever one extension listening to key events."
          },
          {
            "type": "boolean",
            "name": "capture",
            "description": "True if key events should be swallowed natively and not propagated if preventDefault() gets called by the extension's background page."
          }
        ]
      },
      {
        "name": "darkenScreen",
        "type": "function",
        "description": "Darkens or undarkens the screen.",
        "parameters": [
          {
            "type": "boolean",
            "name": "darken",
            "description": "True to darken screen; false to undarken screen."
          }
        ]
      },
      {
        "name": "forwardKeyEventsToSwitchAccess",
        "type": "function",
        "description": "When enabled, forwards key events to the Switch Access extension",
        "parameters": [
          {
            "name": "shouldForward",
            "type": "boolean"
          }
        ]
      },
      {
        "name": "updateSwitchAccessBubble",
        "type": "function",
        "description": "Shows the Switch Access menu next to the specified rectangle and with the given actions",
        "parameters": [
          {
            "name": "bubble",
            "$ref": "SwitchAccessBubble",
            "description": "Which bubble to show/hide"
          },
          {
            "name": "show",
            "type": "boolean",
            "description": "True if the bubble should be shown, false otherwise"
          },
          {
            "name": "anchor",
            "$ref": "ScreenRect",
            "description": "A rectangle indicating the bounds of the object the menu should be displayed next to.",
            "optional": true
          },
          {
            "name": "actions",
            "type": "array",
            "items": { "$ref": "SwitchAccessMenuAction" },
            "description": "The actions to be shown in the menu.",
            "optional": true
          }
        ]
      },
      {
        "name": "setPointScanState",
        "type": "function",
        "description": "Sets point scanning state Switch Access.",
        "parameters": [
          {
            "name": "state",
            "$ref": "PointScanState",
            "description": "The point scanning state to set."
          }
        ]
      },
      {
        "name": "setNativeChromeVoxArcSupportForCurrentApp",
        "type": "function",
        "description": "Sets current ARC app to use native ARC support.",
        "parameters": [
          {
            "name": "enabled",
            "type": "boolean",
            "description": "True for ChromeVox (native), false for TalkBack."
          }
        ],
	"returns_async": {
	  "name": "callback",
	  "desctiprion": "Callback function.",
	  "parameters": [
            {
	      "name": "response",
	      "$ref": "SetNativeChromeVoxResponse",
	      "description": "Return Success if successfully toggled. Return error description otherwise."
	    }
	  ]
	}
      },
      {
        "name": "sendSyntheticKeyEvent",
        "type": "function",
        "description": "Sends a fabricated key event.",
        "parameters": [
          {
            "name": "keyEvent",
            "$ref": "SyntheticKeyboardEvent",
            "description": "The event to send."
          },
          {
            "name": "useRewriters",
            "type": "boolean",
            "description": "If true, uses rewriters for the key event; only allowed if used from Dictation. Otherwise indicates that rewriters should be skipped.",
            "optional": true
          }
        ]
      },
      {
        "name": "enableMouseEvents",
        "type": "function",
        "description": "Enables or disables mouse events in accessibility extensions",
        "parameters": [
          {
            "name": "enabled",
            "type": "boolean",
            "description": "True if accessibility component extensions should receive mouse events."
          }
        ]
      },
      {
        "name": "setCursorPosition",
        "type": "function",
        "description": "Sets the cursor position on the screen in absolute screen coordinates.",
        "parameters": [
          {
            "name": "point",
            "$ref": "ScreenPoint",
            "description": "The screen point at which to put the cursor."
          }
        ]
      },
      {
        "name": "sendSyntheticMouseEvent",
        "type": "function",
        "description": "Sends a fabricated mouse event.",
        "parameters": [
          {
            "name": "mouseEvent",
            "$ref": "SyntheticMouseEvent",
            "description": "The event to send."
          }
        ]
      },
      {
        "name": "setSelectToSpeakState",
        "type": "function",
        "description": "Called by the Select-to-Speak extension when Select-to-Speak has changed states, between selecting with the mouse, speaking, and inactive.",
        "parameters": [
          {
            "name": "state",
            "$ref": "SelectToSpeakState"
          }
        ]
      },
      {
        "name": "clipboardCopyInActiveLacrosGoogleDoc",
        "type": "function",
        "description": "Called by the Select-to-Speak extension to request a clipboard copy in the active Lacros Google Docs tab for the copy-paste fallback.",
        "parameters": [ {
            "name": "url",
            "type": "string",
            "description": "URL of the Google Docs tab."
          }
        ]
      },
      {
        "name": "handleScrollableBoundsForPointFound",
        "type": "function",
        "description": "Called by the Accessibility Common extension when onScrollableBoundsForPointRequested has found a scrolling container. |rect| will be the bounds of the nearest scrollable ancestor of the node at the point requested using onScrollableBoundsForPointRequested.",
        "parameters": [
          {
            "name": "rect",
            "$ref": "ScreenRect"
          }
        ]
      },
      {
        "name": "moveMagnifierToRect",
        "type": "function",
        "description": "Called by the Accessibility Common extension to move |rect| within the magnifier viewport (e.g. when focus has changed). If |rect| is already completely within the viewport, magnifier doesn't move. If any edge of |rect| is outside the viewport (e.g. if rect is larger than or extends partially beyond the viewport), magnifier will center the overflowing dimensions of the viewport on center of |rect| (e.g. center viewport vertically if |rect| extends beyond bottom of screen).",
        "parameters": [
          {
            "name": "rect",
            "$ref": "ScreenRect",
            "description": "Rect to ensure visible in the magnified viewport."
          }
        ]
      },
      {
        "name": "magnifierCenterOnPoint",
        "type": "function",
        "description": "Called by the Accessibility Common extension to center magnifier at |point|.",
        "parameters": [
          {
            "name": "point",
            "$ref": "ScreenPoint"
          }
        ]
      },
      {
        "name": "toggleDictation",
        "type": "function",
        "description": "Toggles dictation between active and inactive states.",
        "parameters": []
      },
      {
        "name": "setVirtualKeyboardVisible",
        "type": "function",
        "description": "Shows or hides the virtual keyboard.",
        "parameters": [
          {
            "name": "isVisible",
            "type": "boolean"
          }
        ]
      },
      {
        "name": "openSettingsSubpage",
        "type": "function",
        "description": "Opens a specified settings subpage. To open a page with url chrome://settings/manageAccessibility/tts, pass in the substring 'manageAccessibility/tts'.",
        "parameters": [
          {
            "name": "subpage",
            "type": "string"
          }
        ]
      },
      {
        "name": "performAcceleratorAction",
        "type": "function",
        "description": "Performs an accelerator action.",
        "parameters": [
          {
            "name": "acceleratorAction",
            "$ref": "AcceleratorAction"
          }
        ]
      },
      {
        "name": "isFeatureEnabled",
        "type": "function",
        "description": "Checks to see if an accessibility feature is enabled.",
        "parameters": [
          {
            "name": "feature",
            "$ref": "AccessibilityFeature"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Returns whether feature is enabled.",
          "parameters": [
            {
              "name": "featureEnabled",
              "type": "boolean"
            }
          ]
        }
      },
      {
        "name": "updateSelectToSpeakPanel",
        "type": "function",
        "description": "Updates properties of the Select-to-speak panel.",
        "parameters": [
          {
            "name": "show",
            "type": "boolean",
            "description": "True to show panel, false to hide it"
          },
          {
            "name": "anchor",
            "$ref": "ScreenRect",
            "description": "A rectangle indicating the bounds of the object the panel should be displayed next to.",
            "optional": true
          },
          {
            "name": "isPaused",
            "type": "boolean",
            "description": "True if Select-to-speak playback is paused.",
            "optional": true
          },
          {
            "name": "speed",
            "type": "number",
            "description": "Current reading speed (TTS speech rate).",
            "optional": true
          }
        ]
      },
      {
        "name": "showConfirmationDialog",
        "type": "function",
        "description": "Shows a confirmation dialog.",
        "parameters": [
          {
            "name": "title",
            "type": "string",
            "description": "The title of the confirmation dialog."
          },
          {
            "name": "description",
            "type": "string",
            "description": "The description to show within the confirmation dialog."
          },
          {
            "name": "cancelName",
            "type": "string",
            "description": "The human-readable name of the cancel button.",
            "optional": true
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called when the dialog is confirmed or cancelled.",
          "parameters": [
            {
              "type": "boolean",
              "name": "confirmed",
              "description": "True if the dialog was confirmed, false if it was canceled or closed."
            }
          ]
        }
      },
      {
        "name": "getLocalizedDomKeyStringForKeyCode",
        "type": "function",
        "description": "Gets the DOM key string for the given key code, taking into account the current input method locale, and assuming the key code is for U.S. input. For example, the key code for '/' would return the string '!' if the current input method is French.",
        "parameters": [
          {
            "name": "keyCode",
            "type": "integer"
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "Called with the resulting Dom key string.",
          "parameters": [
            {
              "type": "string",
              "name": "domKeyString",
              "description": "The dom key string localized for the current input method."
            }
          ]
        }
      },
      {
        "name": "updateDictationBubble",
        "type": "function",
        "description": "Updates Dictation's bubble UI.",
        "parameters": [
          {
            "name": "properties",
            "$ref": "DictationBubbleProperties",
            "description": "Properties for the updated Dictation bubble UI."
          }
        ]
      },
      {
        "name": "silenceSpokenFeedback",
        "type": "function",
        "description": "Cancels the current and queued speech from ChromeVox.",
        "parameters": []
      },
      {
        "name": "getDlcContents",
        "type": "function",
        "description": "Returns the contents of a DLC.",
        "parameters": [
          {
            "name": "dlc",
            "$ref": "DlcType",
            "description": "The DLC of interest."
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "A callback that is run when the contents are returned.",
          "parameters": [
            {
              "name": "contents",
              "type": "binary",
              "description": "The contents of the DLC as a Uint8Array."
            }
          ]
        }
      },
      {
        "name": "getTtsDlcContents",
        "type": "function",
        "description": "Returns the contents of a TTS DLC.",
        "parameters": [
          {
            "name": "dlc",
            "$ref": "DlcType",
            "description": "The DLC of interest."
          },
          {
            "name": "variant",
            "$ref": "TtsVariant",
            "description": "The TTS voice variant."
          }
        ],
        "returns_async": {
          "name": "callback",
          "description": "A callback that is run when the contents are returned.",
          "parameters": [
            {
              "name": "contents",
              "type": "binary",
              "description": "The contents of the DLC as a Uint8Array."
            }
          ]
        }
      },
      {
        "name": "getDisplayBounds",
        "type": "function",
        "description": "Returns the bounds of the displays in density-independent pixels in screen coordinates.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "description": "A callback that is run when the result is returned.",
          "parameters": [
            {
              "type": "array",
              "items": { "$ref": "ScreenRect" },
              "name": "rects",
              "description": "Array of rects represeting the display bounds in screen coordinates for all displays."
            }
          ]
        }
      },
      {
        "name": "isLacrosPrimary",
        "type": "function",
        "description": "Gets whether new browser windows and tabs should be in Lacros browser.",
        "parameters": [],
        "returns_async": {
          "name": "callback",
          "description": "A callback that is run when the result is returned.",
          "parameters": [
            {
              "type": "boolean",
              "name": "useLacros",
              "description": "True if new browser windows and tabs should be in Lacros."
            }
          ]
        }
      },
      {
        "name": "showToast",
        "type": "function",
        "description": "Displays an accessibility-related toast.",
        "parameters": [{
          "name": "type",
          "$ref": "ToastType",
          "description": "The type of toast to show."
        }]
      },
      {
        "name": "scrollAtPoint",
        "type": "function",
        "description": "Scrolls at the target location in the specified direction.",
        "parameters": [
          {
            "name": "target",
            "$ref": "ScreenPoint"
          },
          {
            "name": "direction",
            "$ref": "ScrollDirection"
          }
        ]
      },
      {
        "name": "sendGestureInfoToSettings",
        "type": "function",
        "description": "Fired when FaceGaze processes a video frame, detects facial gestures from the frame, then sends information about the recognized facial gesture to the settings.",
        "parameters": [
          {
            "name": "gestureInfo",
            "type": "array",
            "items": { "$ref": "GestureInfo" },
            "description": "The recognized facial gestures and their associated confidence values."
          }
        ]
      }
    ],
    "events": [
      {
        "name": "onIntroduceChromeVox",
        "type": "function",
        "description": "Fired whenever ChromeVox should output introduction."
      },
      {
        "name": "onChromeVoxFocusChanged",
        "type": "function",
        "description": "Fired when the ChromeVox focus changes and Magnifier is enabled.",
        "parameters": [
          {
            "name": "bounds",
            "$ref": "ScreenRect",
            "description": "ChromeVox's focus bounds in global screen coordinates."
          }
        ]
      },
      {
        "name": "onAccessibilityGesture",
        "type": "function",
        "description": "Fired when an accessibility gesture is detected by the touch exploration controller.",
        "parameters": [
          {
            "name": "gesture",
            "$ref": "Gesture"
          },
          {
            "name": "x",
            "type": "integer"
          },
          {
            "name": "y",
            "type": "integer"
          }
        ]
      },
      {
        "name": "onSelectToSpeakContextMenuClicked",
        "type": "function",
        "description": "Fired when the Select to Speak context menu is clicked from outside the context of the Select to Speak extension.",
        "parameters": []
      },
      {
        "name": "onSelectToSpeakFocusChanged",
        "type": "function",
        "description": "Fired when the Select to Speak reading focus changes and Magnifier is enabled.",
        "parameters": [
          {
            "name": "bounds",
            "$ref": "ScreenRect",
            "description": "Select to Speak's focus bounds in global screen coordinates."
          }
        ]
      },
      {
        "name": "onSelectToSpeakStateChangeRequested",
        "type": "function",
        "description": "Fired when Chrome OS wants to change the Select-to-Speak state, between selecting with the mouse, speaking, and inactive.",
        "parameters": []
      },
      {
        "name": "onSelectToSpeakKeysPressedChanged",
        "type": "function",
        "description": "Fired when Chrome OS wants to send an updated list of keys currently pressed to Select to Speak.",
        "parameters": [
          {
            "name": "keyCodes",
            "type": "array",
            "items": { "type": "integer" },
            "description": "List of key codes that are currently pressed"
          }
        ]
      },
      {
        "name": "onSelectToSpeakMouseChanged",
        "type": "function",
        "description": "Fired when Chrome OS wants to send a mouse event Select to Speak.",
        "parameters": [
          {
            "name": "type",
            "$ref": "SyntheticMouseEventType",
            "description": "The type of the mouse event."
          },
          {
            "name": "x",
            "type": "integer",
            "description": "The mouse x position in global coordinates."
          },
          {
            "name": "y",
            "type": "integer",
            "description": "The mouse y position in global coordinates."
          }
        ]
      },
      {
        "name": "onSelectToSpeakPanelAction",
        "type": "function",
        "description": "Fired when an action is performed in the Select-to-speak panel.",
        "parameters": [
          {
            "name": "action",
            "$ref": "SelectToSpeakPanelAction"
          },
          {
            "name": "value",
            "type": "number",
            "optional": true
          }
        ]
      },
      {
        "name": "onSwitchAccessCommand",
        "type": "function",
        "description": "Fired when Chrome OS has received a key event corresponding to a Switch Access command.",
        "parameters": [
          {
            "name": "command",
            "$ref": "SwitchAccessCommand"
          }
        ]
      },
      {
        "name": "onPointScanSet",
        "type": "function",
        "description": "Fired when Chrome OS has received the final point of point scanning.",
        "parameters": [
          {
            "name": "point",
            "$ref": "PointScanPoint"
          }
        ]
      },
      {
        "name": "onMagnifierCommand",
        "type": "function",
        "description": "Fired when Chrome OS has received a key event corresponding to a Magnifier command.",
        "parameters": [
          {
            "name": "command",
            "$ref": "MagnifierCommand"
          }
        ]
      },
      {
        "name": "onAnnounceForAccessibility",
        "type": "function",
        "description": "Fired when an internal component within accessibility wants to force speech output for an accessibility extension. Do not use without approval from accessibility owners.",
        "parameters": [
          {
            "name": "announceText",
            "type": "array",
            "items": { "type": "string" },
            "description": "Text to be announced."
          }
        ]
      },
      {
        "name": "onScrollableBoundsForPointRequested",
        "type": "function",
        "description": "Fired when an internal component within accessibility wants to find the nearest scrolling container at a given screen coordinate. Used in Automatic Clicks.",
        "parameters": [
          {
            "name": "x",
            "type": "number",
            "description": "X screen coordinate of the point."
          },
          {
            "name": "y",
            "type": "number",
            "description": "Y screen coordinate of the point."
          }
        ]
      },
      {
        "name": "onMagnifierBoundsChanged",
        "type": "function",
        "description": "Fired when Chrome OS magnifier bounds are updated.",
        "parameters": [
          {
            "name": "magnifierBounds",
            "$ref": "ScreenRect",
            "description": "Updated bounds of magnifier viewport."
          }
        ]
      },
      {
        "name": "onCustomSpokenFeedbackToggled",
        "type": "function",
        "description": "Fired when a custom spoken feedback on the active window gets enabled or disabled. Called from ARC++ accessibility.",
        "parameters": [
          {
            "name": "enabled",
            "type": "boolean",
            "description": "True if the active window implements custom spoken feedback features."
          }
        ]
      },
      {
        "name": "onShowChromeVoxTutorial",
        "type": "function",
        "description": "Fired when ChromeVox should show its tutorial.",
        "parameters": []
      },
      {
        "name": "onToggleDictation",
        "type": "function",
        "description": "Fired when Dictation is activated or deactivated using a keyboard shortcut, the button in the tray, or after a call from accessibilityPrivate.toggleDictation",
        "parameters": [
          {
            "name": "activated",
            "type": "boolean",
            "description": "True if Dictation was activated, false if it was deactivated."
          }
        ]
      },
      {
        "name": "onToggleGestureInfoForSettings",
        "type": "function",
        "description": "Fired only from the FaceGaze settings when the settings page requests to receive or stop receiving gesture detection information from FaceGaze.",
        "parameters": [
          {
            "name": "enabled",
            "type": "boolean",
            "description": "True if FaceGaze should start sending gesture detection information, false if FaceGaze should stop."
          }
        ]
      }
    ]
  }
]