browser_accessibility_simple.js (3427B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const PREF_ACCESSIBILITY_FORCE_DISABLED = "accessibility.force_disabled"; 8 9 function checkAccessibilityState(accessibility, parentAccessibility, expected) { 10 const { enabled } = accessibility; 11 const { canBeDisabled, canBeEnabled } = parentAccessibility; 12 is(enabled, expected.enabled, "Enabled state is correct."); 13 is(canBeDisabled, expected.canBeDisabled, "canBeDisabled state is correct."); 14 is(canBeEnabled, expected.canBeEnabled, "canBeEnabled state is correct."); 15 } 16 17 // Simple checks for the AccessibilityActor and AccessibleWalkerActor 18 19 add_task(async function () { 20 const { 21 walker: domWalker, 22 target, 23 accessibility, 24 parentAccessibility, 25 a11yWalker, 26 } = await initAccessibilityFrontsForUrl( 27 "data:text/html;charset=utf-8,<title>test</title><div></div>", 28 { enableByDefault: false } 29 ); 30 31 ok(accessibility, "The AccessibilityFront was created"); 32 ok(accessibility.getWalker, "The getWalker method exists"); 33 ok(accessibility.getSimulator, "The getSimulator method exists"); 34 35 ok(accessibility.accessibleWalkerFront, "Accessible walker was initialized"); 36 37 is( 38 a11yWalker, 39 accessibility.accessibleWalkerFront, 40 "The AccessibleWalkerFront was returned" 41 ); 42 43 const a11ySimulator = accessibility.simulatorFront; 44 ok(accessibility.simulatorFront, "Accessible simulator was initialized"); 45 is( 46 a11ySimulator, 47 accessibility.simulatorFront, 48 "The SimulatorFront was returned" 49 ); 50 51 checkAccessibilityState(accessibility, parentAccessibility, { 52 enabled: false, 53 canBeDisabled: true, 54 canBeEnabled: true, 55 }); 56 57 info("Force disable accessibility service: updates canBeEnabled flag"); 58 let onEvent = parentAccessibility.once("can-be-enabled-change"); 59 Services.prefs.setIntPref(PREF_ACCESSIBILITY_FORCE_DISABLED, 1); 60 await onEvent; 61 checkAccessibilityState(accessibility, parentAccessibility, { 62 enabled: false, 63 canBeDisabled: true, 64 canBeEnabled: false, 65 }); 66 67 info("Clear force disable accessibility service: updates canBeEnabled flag"); 68 onEvent = parentAccessibility.once("can-be-enabled-change"); 69 Services.prefs.clearUserPref(PREF_ACCESSIBILITY_FORCE_DISABLED); 70 await onEvent; 71 checkAccessibilityState(accessibility, parentAccessibility, { 72 enabled: false, 73 canBeDisabled: true, 74 canBeEnabled: true, 75 }); 76 77 info("Initialize accessibility service"); 78 const initEvent = accessibility.once("init"); 79 await parentAccessibility.enable(); 80 await waitForA11yInit(); 81 await initEvent; 82 checkAccessibilityState(accessibility, parentAccessibility, { 83 enabled: true, 84 canBeDisabled: true, 85 canBeEnabled: true, 86 }); 87 88 const rootNode = await domWalker.getRootNode(); 89 const a11yDoc = 90 await accessibility.accessibleWalkerFront.getAccessibleFor(rootNode); 91 ok(a11yDoc, "Accessible document actor is created"); 92 93 info("Shutdown accessibility service"); 94 const shutdownEvent = accessibility.once("shutdown"); 95 await waitForA11yShutdown(parentAccessibility); 96 await shutdownEvent; 97 checkAccessibilityState(accessibility, parentAccessibility, { 98 enabled: false, 99 canBeDisabled: true, 100 canBeEnabled: true, 101 }); 102 103 await target.destroy(); 104 gBrowser.removeCurrentTab(); 105 });