tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });