mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 13:48:23 +02:00
Differential Revision: https://phabricator.services.mozilla.com/D6768 --HG-- extra : moz-landing-system : lando
68 lines
2.7 KiB
JavaScript
68 lines
2.7 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, expected) {
|
|
const { enabled, canBeDisabled, canBeEnabled } = accessibility;
|
|
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} = await initAccessibilityFrontForUrl(
|
|
"data:text/html;charset=utf-8,<title>test</title><div></div>");
|
|
|
|
ok(accessibility, "The AccessibilityFront was created");
|
|
ok(accessibility.getWalker, "The getWalker method exists");
|
|
|
|
let a11yWalker = await accessibility.getWalker();
|
|
ok(a11yWalker, "The AccessibleWalkerFront was returned");
|
|
|
|
checkAccessibilityState(accessibility,
|
|
{ enabled: false, canBeDisabled: true, canBeEnabled: true });
|
|
|
|
info("Force disable accessibility service: updates canBeEnabled flag");
|
|
let onEvent = accessibility.once("can-be-enabled-change");
|
|
Services.prefs.setIntPref(PREF_ACCESSIBILITY_FORCE_DISABLED, 1);
|
|
await onEvent;
|
|
checkAccessibilityState(accessibility,
|
|
{ enabled: false, canBeDisabled: true, canBeEnabled: false });
|
|
|
|
info("Clear force disable accessibility service: updates canBeEnabled flag");
|
|
onEvent = accessibility.once("can-be-enabled-change");
|
|
Services.prefs.clearUserPref(PREF_ACCESSIBILITY_FORCE_DISABLED);
|
|
await onEvent;
|
|
checkAccessibilityState(accessibility,
|
|
{ enabled: false, canBeDisabled: true, canBeEnabled: true });
|
|
|
|
info("Initialize accessibility service");
|
|
const initEvent = accessibility.once("init");
|
|
await accessibility.enable();
|
|
await waitForA11yInit();
|
|
await initEvent;
|
|
checkAccessibilityState(accessibility,
|
|
{ enabled: true, canBeDisabled: true, canBeEnabled: true });
|
|
|
|
a11yWalker = await accessibility.getWalker();
|
|
const rootNode = await domWalker.getRootNode();
|
|
const a11yDoc = await a11yWalker.getAccessibleFor(rootNode);
|
|
ok(a11yDoc, "Accessible document actor is created");
|
|
|
|
info("Shutdown accessibility service");
|
|
const shutdownEvent = accessibility.once("shutdown");
|
|
await accessibility.disable();
|
|
await waitForA11yShutdown();
|
|
await shutdownEvent;
|
|
checkAccessibilityState(accessibility,
|
|
{ enabled: false, canBeDisabled: true, canBeEnabled: true });
|
|
|
|
await target.destroy();
|
|
gBrowser.removeCurrentTab();
|
|
});
|