Bug 1599806 - avoid AccessibilityFront's bootstrap method by renaming it into initialize. Do not explicitly destroy accessibility walker front and let accessibility actor manage its lifecycle fully. r=ochameau

Differential Revision: https://phabricator.services.mozilla.com/D58027

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Yura Zenevich 2020-02-10 18:12:03 +00:00
parent a341082d51
commit 720fd06193
4 changed files with 21 additions and 23 deletions

View File

@ -30,22 +30,16 @@ class AccessibilityStartup {
}
get walker() {
return this._walker;
return this._accessibility.accessibleWalkerFront;
}
/**
* Determine which features are supported based on the version of the server. Also, sync
* the state of the accessibility front/actor.
* Determine which features are supported based on the version of the server.
* @return {Promise}
* A promise that returns true when accessibility front is fully in sync with
* the actor.
* A promise that returns true when accessibility front is ready.
*/
async prepareAccessibility() {
// We must call a method on an accessibility front here (such as getWalker), in
// oreder to be able to check actor's backward compatibility via actorHasMethod.
// See targe.js@getActorDescription for more information.
try {
this._walker = await this._accessibility.getWalker();
this._supports = {};
// To add a check for backward compatibility add something similar to the
// example below:
@ -54,9 +48,6 @@ class AccessibilityStartup {
// // Please specify the version of Firefox when the feature was added.
// this.target.actorHasMethod("accessibility", "getSimulator"),
// ]);
await this._accessibility.bootstrap();
return true;
} catch (e) {
// toolbox may be destroyed during this step.
@ -124,9 +115,7 @@ class AccessibilityStartup {
this._accessibility.off("init", this._updateToolHighlight);
this._accessibility.off("shutdown", this._updateToolHighlight);
await this._walker.destroy();
this._accessibility = null;
this._walker = null;
}.bind(this)();
return this._destroyingAccessibility;
}

View File

@ -35,8 +35,14 @@ add_task(async function() {
ok(accessibility.getWalker, "The getWalker method exists");
ok(accessibility.getSimulator, "The getSimulator method exists");
ok(accessibility.accessibleWalkerFront, "Accessible walker was initialized");
let a11yWalker = await accessibility.getWalker();
ok(a11yWalker, "The AccessibleWalkerFront was returned");
is(
a11yWalker,
accessibility.accessibleWalkerFront,
"The AccessibleWalkerFront was returned"
);
const a11ySimulator = await accessibility.getSimulator();
const webRenderEnabled = isWebRenderEnabled(window);

View File

@ -86,8 +86,6 @@ async function initAccessibilityFrontForUrl(url) {
const walker = inspector.walker;
const accessibility = await target.getFront("accessibility");
await accessibility.bootstrap();
return { inspector, walker, accessibility, target };
}

View File

@ -187,12 +187,17 @@ class AccessibilityFront extends FrontClassWithSpec(accessibilitySpec) {
this.formAttributeName = "accessibilityActor";
}
bootstrap() {
return super.bootstrap().then(state => {
this.enabled = state.enabled;
this.canBeEnabled = state.canBeEnabled;
this.canBeDisabled = state.canBeDisabled;
});
async initialize() {
this.accessibleWalkerFront = await super.getWalker();
({
enabled: this.enabled,
canBeEnabled: this.canBeEnabled,
canBeDisabled: this.canBeDisabled,
} = await this.bootstrap());
}
async getWalker() {
return this.accessibleWalkerFront;
}
init() {