fune/devtools/shared/specs/accessibility.js
Micah Tigley c449642b76 Bug 1473030 - Show accessible object's name and role information with the info-bar highlighter. r=gl,yzen
MozReview-Commit-ID: HyKIdqsL3u

--HG--
extra : rebase_source : 27d1e59e796debcff010c19d3621c8610ea6b338
2018-08-16 00:35:02 -04:00

197 lines
4.3 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const protocol = require("devtools/shared/protocol");
const { Arg, generateActorSpec, RetVal, types } = protocol;
types.addActorType("accessible");
/**
* Accessible with children listed in the ancestry structure calculated by the
* walker.
*/
types.addDictType("accessibleWithChildren", {
// Accessible
accessible: "accessible",
// Accessible's children
children: "array:accessible"
});
const accessibleSpec = generateActorSpec({
typeName: "accessible",
events: {
"actions-change": {
type: "actionsChange",
actions: Arg(0, "array:string")
},
"name-change": {
type: "nameChange",
name: Arg(0, "string"),
parent: Arg(1, "nullable:accessible"),
walker: Arg(2, "nullable:accessiblewalker")
},
"value-change": {
type: "valueChange",
value: Arg(0, "string")
},
"description-change": {
type: "descriptionChange",
description: Arg(0, "string")
},
"states-change": {
type: "statesChange",
states: Arg(0, "array:string")
},
"attributes-change": {
type: "attributesChange",
attributes: Arg(0, "json")
},
"shortcut-change": {
type: "shortcutChange",
shortcut: Arg(0, "string")
},
"reorder": {
type: "reorder",
childCount: Arg(0, "number"),
walker: Arg(1, "nullable:accessiblewalker")
},
"text-change": {
type: "textChange",
walker: Arg(0, "nullable:accessiblewalker")
},
"index-in-parent-change": {
type: "indexInParentChange",
indexInParent: Arg(0, "number")
}
},
methods: {
children: {
request: {},
response: {
children: RetVal("array:accessible")
}
}
}
});
const accessibleWalkerSpec = generateActorSpec({
typeName: "accessiblewalker",
events: {
"accessible-destroy": {
type: "accessibleDestroy",
accessible: Arg(0, "accessible")
},
"document-ready": {
type: "documentReady",
},
"picker-accessible-picked": {
type: "pickerAccessiblePicked",
accessible: Arg(0, "nullable:accessible")
},
"picker-accessible-previewed": {
type: "pickerAccessiblePreviewed",
accessible: Arg(0, "nullable:accessible")
},
"picker-accessible-hovered": {
type: "pickerAccessibleHovered",
accessible: Arg(0, "nullable:accessible")
},
"picker-accessible-canceled": {
type: "pickerAccessibleCanceled"
},
"highlighter-event": {
type: "highlighter-event",
data: Arg(0, "json")
}
},
methods: {
children: {
request: {},
response: {
children: RetVal("array:accessible")
}
},
getAccessibleFor: {
request: { node: Arg(0, "domnode") },
response: {
accessible: RetVal("accessible")
}
},
getAncestry: {
request: { accessible: Arg(0, "accessible") },
response: {
ancestry: RetVal("array:accessibleWithChildren")
}
},
highlightAccessible: {
request: {
accessible: Arg(0, "accessible"),
options: Arg(1, "nullable:json")
},
response: {
value: RetVal("nullable:boolean")
}
},
unhighlight: {
request: {}
},
pick: {},
pickAndFocus: {},
cancelPick: {}
}
});
const accessibilitySpec = generateActorSpec({
typeName: "accessibility",
events: {
"init": {
type: "init"
},
"shutdown": {
type: "shutdown"
},
"can-be-disabled-change": {
type: "canBeDisabledChange",
canBeDisabled: Arg(0, "boolean")
},
"can-be-enabled-change": {
type: "canBeEnabledChange",
canBeEnabled: Arg(0, "boolean")
}
},
methods: {
bootstrap: {
request: {},
response: {
state: RetVal("json")
}
},
getWalker: {
request: {},
response: {
walker: RetVal("accessiblewalker")
}
},
enable: {
request: {},
response: {}
},
disable: {
request: {},
response: {}
}
}
});
exports.accessibleSpec = accessibleSpec;
exports.accessibleWalkerSpec = accessibleWalkerSpec;
exports.accessibilitySpec = accessibilitySpec;