mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
Bug 1602075 - add an accessibility-panel-auto-init feature to control the panel auto enabling functionality. r=mythmon,mtigley
Differential Revision: https://phabricator.services.mozilla.com/D71582
This commit is contained in:
parent
0515fa0c84
commit
df33e68981
@ -2132,6 +2132,11 @@ pref("devtools.dom.enabled", false);
|
||||
|
||||
// Enable the Accessibility panel.
|
||||
pref("devtools.accessibility.enabled", true);
|
||||
#if defined(NIGHTLY_BUILD)
|
||||
pref("devtools.accessibility.auto-init.enabled", true);
|
||||
#else
|
||||
pref("devtools.accessibility.auto-init.enabled", false);
|
||||
#endif
|
||||
|
||||
// Web console filters
|
||||
pref("devtools.webconsole.filter.error", true);
|
||||
|
@ -14,6 +14,12 @@ const PARENT_ACCESSIBILITY_EVENTS = [
|
||||
"can-be-enabled-change",
|
||||
];
|
||||
|
||||
loader.lazyImporter(
|
||||
this,
|
||||
"FeatureGate",
|
||||
"resource://featuregates/FeatureGate.jsm"
|
||||
);
|
||||
|
||||
/**
|
||||
* Component responsible for tracking all Accessibility fronts in parent and
|
||||
* content processes.
|
||||
@ -24,6 +30,7 @@ class AccessibilityProxy {
|
||||
|
||||
this.accessibilityEventsMap = new Map();
|
||||
this.accessibleWalkerEventsMap = new Map();
|
||||
this.supports = {};
|
||||
|
||||
this.audit = this.audit.bind(this);
|
||||
this.disableAccessibility = this.disableAccessibility.bind(this);
|
||||
@ -250,12 +257,23 @@ class AccessibilityProxy {
|
||||
}
|
||||
}
|
||||
|
||||
async onChange(isEnabled) {
|
||||
this.supports.autoInit = isEnabled;
|
||||
}
|
||||
|
||||
async initialize() {
|
||||
try {
|
||||
await this.toolbox.targetList.watchTargets(
|
||||
[this.toolbox.targetList.TYPES.FRAME],
|
||||
this._onTargetAvailable
|
||||
);
|
||||
// Bug 1602075: auto init feature definition is used for an experiment to
|
||||
// determine if we can automatically enable accessibility panel when it
|
||||
// opens.
|
||||
this.supports.autoInit = await FeatureGate.addObserver(
|
||||
"accessibility-panel-auto-init",
|
||||
this
|
||||
);
|
||||
return true;
|
||||
} catch (e) {
|
||||
// toolbox may be destroyed during this step.
|
||||
@ -263,12 +281,14 @@ class AccessibilityProxy {
|
||||
}
|
||||
}
|
||||
|
||||
destroy() {
|
||||
async destroy() {
|
||||
this.toolbox.targetList.unwatchTargets(
|
||||
[this.toolbox.targetList.TYPES.FRAME],
|
||||
this._onTargetAvailable
|
||||
);
|
||||
|
||||
await FeatureGate.removeObserver("accessibility-panel-auto-init", this);
|
||||
|
||||
this.accessibilityEventsMap = null;
|
||||
this.accessibleWalkerEventsMap = null;
|
||||
|
||||
@ -342,7 +362,6 @@ class AccessibilityProxy {
|
||||
// Finalize accessibility front initialization. See accessibility front
|
||||
// bootstrap method description.
|
||||
await this.accessibilityFront.bootstrap();
|
||||
this.supports = {};
|
||||
// To add a check for backward compatibility add something similar to the
|
||||
// example below:
|
||||
//
|
||||
|
@ -85,7 +85,7 @@ class AccessibilityStartup {
|
||||
shutdown: this._updateToolHighlight,
|
||||
});
|
||||
|
||||
this.accessibilityProxy.destroy();
|
||||
await this.accessibilityProxy.destroy();
|
||||
this.accessibilityProxy = null;
|
||||
}.bind(this)();
|
||||
return this._destroyingAccessibility;
|
||||
|
@ -1,4 +1,3 @@
|
||||
# there are currently no feature gates
|
||||
[demo-feature]
|
||||
title = "Demo Feature"
|
||||
description = "A no-op feature to demo the feature gate system."
|
||||
@ -8,3 +7,12 @@ type = "boolean"
|
||||
bug-numbers = [1479127]
|
||||
is-public = true
|
||||
default-value = false
|
||||
|
||||
[accessibility-panel-auto-init]
|
||||
title = "Accessibility Panel Automatic Initialization"
|
||||
description = "Automatically enables accessibility panel when it is opened."
|
||||
restart-required = false
|
||||
preference = "devtools.accessibility.auto-init.enabled"
|
||||
bug-numbers = [1602075]
|
||||
type = "boolean"
|
||||
default-value = {default = false, nightly = true}
|
||||
|
Loading…
Reference in New Issue
Block a user