105 lines
3.3 KiB
JavaScript
105 lines
3.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 PREF_ACCESSIBILITY_FORCE_DISABLED = "accessibility.force_disabled";
|
|
|
|
function checkAccessibilityState(accessibility, parentAccessibility, expected) {
|
|
const { enabled } = accessibility;
|
|
const { canBeDisabled, canBeEnabled } = parentAccessibility;
|
|
is(enabled, expected.enabled, "Enabled state is correct.");
|
|
is(canBeDisabled, expected.canBeDisabled, "canBeDisabled state is correct.");
|
|
is(canBeEnabled, expected.canBeEnabled, "canBeEnabled state is correct.");
|
|
}
|
|
|
|
// Simple checks for the AccessibilityActor and AccessibleWalkerActor
|
|
|
|
add_task(async function () {
|
|
const {
|
|
walker: domWalker,
|
|
target,
|
|
accessibility,
|
|
parentAccessibility,
|
|
a11yWalker,
|
|
} = await initAccessibilityFrontsForUrl(
|
|
"data:text/html;charset=utf-8,<title>test</title><div></div>",
|
|
{ enableByDefault: false }
|
|
);
|
|
|
|
ok(accessibility, "The AccessibilityFront was created");
|
|
ok(accessibility.getWalker, "The getWalker method exists");
|
|
ok(accessibility.getSimulator, "The getSimulator method exists");
|
|
|
|
ok(accessibility.accessibleWalkerFront, "Accessible walker was initialized");
|
|
|
|
is(
|
|
a11yWalker,
|
|
accessibility.accessibleWalkerFront,
|
|
"The AccessibleWalkerFront was returned"
|
|
);
|
|
|
|
const a11ySimulator = accessibility.simulatorFront;
|
|
ok(accessibility.simulatorFront, "Accessible simulator was initialized");
|
|
is(
|
|
a11ySimulator,
|
|
accessibility.simulatorFront,
|
|
"The SimulatorFront was returned"
|
|
);
|
|
|
|
checkAccessibilityState(accessibility, parentAccessibility, {
|
|
enabled: false,
|
|
canBeDisabled: true,
|
|
canBeEnabled: true,
|
|
});
|
|
|
|
info("Force disable accessibility service: updates canBeEnabled flag");
|
|
let onEvent = parentAccessibility.once("can-be-enabled-change");
|
|
Services.prefs.setIntPref(PREF_ACCESSIBILITY_FORCE_DISABLED, 1);
|
|
await onEvent;
|
|
checkAccessibilityState(accessibility, parentAccessibility, {
|
|
enabled: false,
|
|
canBeDisabled: true,
|
|
canBeEnabled: false,
|
|
});
|
|
|
|
info("Clear force disable accessibility service: updates canBeEnabled flag");
|
|
onEvent = parentAccessibility.once("can-be-enabled-change");
|
|
Services.prefs.clearUserPref(PREF_ACCESSIBILITY_FORCE_DISABLED);
|
|
await onEvent;
|
|
checkAccessibilityState(accessibility, parentAccessibility, {
|
|
enabled: false,
|
|
canBeDisabled: true,
|
|
canBeEnabled: true,
|
|
});
|
|
|
|
info("Initialize accessibility service");
|
|
const initEvent = accessibility.once("init");
|
|
await parentAccessibility.enable();
|
|
await waitForA11yInit();
|
|
await initEvent;
|
|
checkAccessibilityState(accessibility, parentAccessibility, {
|
|
enabled: true,
|
|
canBeDisabled: true,
|
|
canBeEnabled: true,
|
|
});
|
|
|
|
const rootNode = await domWalker.getRootNode();
|
|
const a11yDoc =
|
|
await accessibility.accessibleWalkerFront.getAccessibleFor(rootNode);
|
|
ok(a11yDoc, "Accessible document actor is created");
|
|
|
|
info("Shutdown accessibility service");
|
|
const shutdownEvent = accessibility.once("shutdown");
|
|
await waitForA11yShutdown(parentAccessibility);
|
|
await shutdownEvent;
|
|
checkAccessibilityState(accessibility, parentAccessibility, {
|
|
enabled: false,
|
|
canBeDisabled: true,
|
|
canBeEnabled: true,
|
|
});
|
|
|
|
await target.destroy();
|
|
gBrowser.removeCurrentTab();
|
|
});
|