tor-browser

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

browser_accessibility_context_menu_inspector.js (3740B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 http://creativecommons.org/publicdomain/zero/1.0/ */
      3 "use strict";
      4 
      5 const TEST_URI = `
      6  <h1 id="h1">header</h1>
      7  <p id="p">paragraph</p>
      8  <span id="span-1">text</span>
      9  <span id="span-2">
     10    IamaverylongtextwhichdoesntfitinInlineTextChildReallyIdontIamtoobig
     11  </span>`;
     12 
     13 async function openContextMenuForNode({ toolbox }, selector) {
     14  info("Selecting Inspector tab and opening a context menu");
     15  const inspector = await toolbox.selectTool("inspector");
     16 
     17  if (!selector) {
     18    ok(inspector.selection.isBodyNode(), "Default selection is a body node.");
     19  } else if (typeof selector === "string") {
     20    await selectNode(selector, inspector, "test");
     21  } else {
     22    const updated = inspector.once("inspector-updated");
     23    inspector.selection.setNodeFront(selector, { reason: "test" });
     24    await updated;
     25  }
     26 
     27  return openContextMenuAndGetAllItems(inspector);
     28 }
     29 
     30 function checkShowA11YPropertiesNode(allMenuItems) {
     31  const showA11YPropertiesNode = allMenuItems.find(
     32    item => item.id === "node-menu-showaccessibilityproperties"
     33  );
     34  ok(
     35    showA11YPropertiesNode,
     36    "the popup menu now has a show accessibility properties item"
     37  );
     38  return showA11YPropertiesNode;
     39 }
     40 
     41 async function checkAccessibleObjectSelection(
     42  { toolbox, panel },
     43  menuItem,
     44  isText
     45 ) {
     46  const inspector = await toolbox.getPanel("inspector");
     47  info(
     48    "Triggering 'Show Accessibility Properties' and waiting for " +
     49      "accessibility panel to open"
     50  );
     51  const panelSelected = toolbox.once("accessibility-selected");
     52  const objectSelected = panel.once("new-accessible-front-selected");
     53  menuItem.click();
     54  await panelSelected;
     55  const selected = await objectSelected;
     56 
     57  const expectedNode = isText
     58    ? inspector.selection.nodeFront.inlineTextChild
     59    : inspector.selection.nodeFront;
     60  const expectedSelected =
     61    await panel.accessibilityProxy.accessibilityFront.accessibleWalkerFront.getAccessibleFor(
     62      expectedNode
     63    );
     64  is(selected, expectedSelected, "Accessible front selected correctly");
     65 
     66  const doc = panel.panelWin.document;
     67  const propertiesTree = doc.querySelector(".tree");
     68  is(doc.activeElement, propertiesTree, "Properties list must be focused.");
     69  ok(
     70    isVisible(doc.querySelector(".treeTable .treeRow.selected")),
     71    "Selected row is visible."
     72  );
     73 }
     74 
     75 addA11YPanelTask(
     76  "Test show accessibility properties context menu.",
     77  TEST_URI,
     78  async function testShowAccessibilityPropertiesContextMenu(env) {
     79    // Load the inspector to ensure it to use in this test.
     80    await env.toolbox.loadTool("inspector");
     81 
     82    let allMenuItems = await openContextMenuForNode(env);
     83    let showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems);
     84 
     85    allMenuItems = await openContextMenuForNode(env, "#h1");
     86    showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems);
     87    await checkAccessibleObjectSelection(env, showA11YPropertiesNode);
     88 
     89    allMenuItems = await openContextMenuForNode(env, "#span-1");
     90    showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems);
     91    await checkAccessibleObjectSelection(env, showA11YPropertiesNode, true);
     92 
     93    allMenuItems = await openContextMenuForNode(env, "#span-2");
     94    showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems);
     95 
     96    const inspector = env.toolbox.getPanel("inspector");
     97    const span2 = await getNodeFront("#span-2", inspector);
     98    await inspector.markup.expandNode(span2);
     99    const { nodes } = await inspector.walker.children(span2);
    100    allMenuItems = await openContextMenuForNode(env, nodes[0]);
    101    showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems);
    102    await checkAccessibleObjectSelection(env, showA11YPropertiesNode, false);
    103  }
    104 );