mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 01:35:35 +00:00
Bug 1498235 - lazy load accessibility highlighter in accessibility walker actor. r=gl
MozReview-Commit-ID: 7xFlSocDPVG Differential Revision: https://phabricator.services.mozilla.com/D9581 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
892c345b03
commit
8066e0214a
@ -8,15 +8,16 @@ const { Cc, Ci } = require("chrome");
|
||||
const Services = require("Services");
|
||||
const { Actor, ActorClassWithSpec } = require("devtools/shared/protocol");
|
||||
const { accessibleWalkerSpec } = require("devtools/shared/specs/accessibility");
|
||||
const { isXUL } = require("devtools/server/actors/highlighters/utils/markup");
|
||||
const { CustomHighlighterActor, register } =
|
||||
require("devtools/server/actors/highlighters");
|
||||
|
||||
loader.lazyRequireGetter(this, "AccessibleActor", "devtools/server/actors/accessibility/accessible", true);
|
||||
loader.lazyRequireGetter(this, "CustomHighlighterActor", "devtools/server/actors/highlighters", true);
|
||||
loader.lazyRequireGetter(this, "DevToolsUtils", "devtools/shared/DevToolsUtils");
|
||||
loader.lazyRequireGetter(this, "events", "devtools/shared/event-emitter");
|
||||
loader.lazyRequireGetter(this, "isDefunct", "devtools/server/actors/utils/accessibility", true);
|
||||
loader.lazyRequireGetter(this, "isTypeRegistered", "devtools/server/actors/highlighters", true);
|
||||
loader.lazyRequireGetter(this, "isWindowIncluded", "devtools/shared/layout/utils", true);
|
||||
loader.lazyRequireGetter(this, "isXUL", "devtools/server/actors/highlighters/utils/markup", true);
|
||||
loader.lazyRequireGetter(this, "register", "devtools/server/actors/highlighters", true);
|
||||
|
||||
const nsIAccessibleEvent = Ci.nsIAccessibleEvent;
|
||||
const nsIAccessibleStateChangeEvent = Ci.nsIAccessibleStateChangeEvent;
|
||||
@ -92,9 +93,6 @@ const NAME_FROM_SUBTREE_RULE_ROLES = new Set([
|
||||
|
||||
const IS_OSX = Services.appinfo.OS === "Darwin";
|
||||
|
||||
register("AccessibleHighlighter", "accessible");
|
||||
register("XULWindowAccessibleHighlighter", "xul-accessible");
|
||||
|
||||
/**
|
||||
* Helper function that determines if nsIAccessible object is in stale state. When an
|
||||
* object is stale it means its subtree is not up to date.
|
||||
@ -130,12 +128,30 @@ const AccessibleWalkerActor = ActorClassWithSpec(accessibleWalkerSpec, {
|
||||
this.onHovered = this.onHovered.bind(this);
|
||||
this.onKey = this.onKey.bind(this);
|
||||
this.onHighlighterEvent = this.onHighlighterEvent.bind(this);
|
||||
},
|
||||
|
||||
this.highlighter = CustomHighlighterActor(this, isXUL(this.rootWin) ?
|
||||
"XULWindowAccessibleHighlighter" : "AccessibleHighlighter");
|
||||
get highlighter() {
|
||||
if (!this._highlighter) {
|
||||
if (isXUL(this.rootWin)) {
|
||||
if (!isTypeRegistered("XULWindowAccessibleHighlighter")) {
|
||||
register("XULWindowAccessibleHighlighter", "xul-accessible");
|
||||
}
|
||||
|
||||
this.manage(this.highlighter);
|
||||
this.highlighter.on("highlighter-event", this.onHighlighterEvent);
|
||||
this._highlighter = CustomHighlighterActor(this,
|
||||
"XULWindowAccessibleHighlighter");
|
||||
} else {
|
||||
if (!isTypeRegistered("AccessibleHighlighter")) {
|
||||
register("AccessibleHighlighter", "accessible");
|
||||
}
|
||||
|
||||
this._highlighter = CustomHighlighterActor(this, "AccessibleHighlighter");
|
||||
}
|
||||
|
||||
this.manage(this._highlighter);
|
||||
this._highlighter.on("highlighter-event", this.onHighlighterEvent);
|
||||
}
|
||||
|
||||
return this._highlighter;
|
||||
},
|
||||
|
||||
setA11yServiceGetter() {
|
||||
@ -188,8 +204,10 @@ const AccessibleWalkerActor = ActorClassWithSpec(accessibleWalkerSpec, {
|
||||
|
||||
this.reset();
|
||||
|
||||
this.highlighter.off("highlighter-event", this.onHighlighterEvent);
|
||||
this.highlighter = null;
|
||||
if (this._highlighter) {
|
||||
this._highlighter.off("highlighter-event", this.onHighlighterEvent);
|
||||
this._highlighter = null;
|
||||
}
|
||||
|
||||
this.targetActor = null;
|
||||
this.refMap = null;
|
||||
@ -470,6 +488,10 @@ const AccessibleWalkerActor = ActorClassWithSpec(accessibleWalkerSpec, {
|
||||
* side.
|
||||
*/
|
||||
unhighlight() {
|
||||
if (!this._highlighter) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.highlighter.hide();
|
||||
},
|
||||
|
||||
@ -701,7 +723,9 @@ const AccessibleWalkerActor = ActorClassWithSpec(accessibleWalkerSpec, {
|
||||
* Cacncel picker pick. Remvoe all content listeners and hide the highlighter.
|
||||
*/
|
||||
cancelPick: function() {
|
||||
if (this._highlighter) {
|
||||
this.highlighter.hide();
|
||||
}
|
||||
|
||||
if (this._isPicking) {
|
||||
this._stopPickerListeners();
|
||||
|
Loading…
Reference in New Issue
Block a user