Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  browser_select.js

  Sprache: JAVA
 

/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */


"use strict";

/* import-globals-from ../../mochitest/states.js */
loadScripts({ name: "states.js", dir: MOCHITESTS_DIR });

/* import-globals-from ../../mochitest/role.js */
loadScripts({ name: "role.js", dir: MOCHITESTS_DIR });

/**
 * Verify that the local accessible created in the parent process for the
 * id=ContentSelectDropdown node has its parent spoofed to the relevant
 * expanded select.
 * Note: id=select2 is unused and serves only to ensure we don't return
 * _just any_ select inside the document :)
 */

addAccessibleTask(
  `
<select id="select">
  <option id="a">optiona</option>
</select>
<select id="select2">
  <option id="b">optionb</option>
</select>
  `,
  async function testSelectAncestorChain(browser, accDoc) {
    const LOCAL_DROPDOWN_ID = "ContentSelectDropdown";

    const rootAcc = getRootAccessible(document);
    ok(rootAcc, "Root Accessible exists");

    const optA = findAccessibleChildByID(accDoc, "a");
    const select = findAccessibleChildByID(accDoc, "select");
    let remoteAccDropdown = select.firstChild;
    ok(remoteAccDropdown, "Remote acc dropdown exists");
    let isRemote = true;
    try {
      remoteAccDropdown.id;
    } catch (e) {
      isRemote = false;
    }

    // Verify the remote dropdown:
    // - is the role we expect
    // - is not identical to the local dropdown via ID
    // - is the parent of the remote accessible for the
    //   option the select contains
    if (isRemote) {
      is(
        remoteAccDropdown.role,
        ROLE_COMBOBOX_LIST,
        "Select's first child is the combobox list"
      );
      isnot(
        remoteAccDropdown.id,
        LOCAL_DROPDOWN_ID,
        "Remote dropdown does not match local dropdown's ID."
      );
      is(
        remoteAccDropdown.firstChild,
        optA,
        "Remote dropdown contains remote acc of option A."
      );
    }

    // Attempt to fetch the local dropdown
    let localAccDropdown = findAccessibleChildByID(rootAcc, LOCAL_DROPDOWN_ID);
    is(
      localAccDropdown,
      null,
      "Local dropdown cannot be reached while select is collapsed"
    );

    // Focus the combo box.
    await invokeFocus(browser, "select");

    // Expand the combobox dropdown.
    let p = waitForEvent(EVENT_STATE_CHANGE, LOCAL_DROPDOWN_ID);
    EventUtils.synthesizeKey("VK_SPACE");
    await p;

    // Attempt to fetch the local dropdown
    localAccDropdown = findAccessibleChildByID(rootAcc, LOCAL_DROPDOWN_ID);
    ok(localAccDropdown, "Local dropdown exists when select is expanded.");

    // Verify the dropdown rendered in the parent
    // process is a child of the select
    is(localAccDropdown.parent, select, "Dropdown is a child of the select");

    // Verify walking from the select produces the
    // appropriate option
    remoteAccDropdown = select.firstChild;

    // Verify the remote dropdown:
    // - is the role we expect
    // - is not identical to the local dropdown via ID
    // - is the parent of the remote accessible for the
    //   option the select contains
    if (isRemote) {
      is(
        remoteAccDropdown.role,
        ROLE_COMBOBOX_LIST,
        "Select's first child is the combobox list"
      );
      isnot(
        remoteAccDropdown.id,
        LOCAL_DROPDOWN_ID,
        "Remote dropdown does not match local dropdown's ID."
      );
      is(
        remoteAccDropdown.firstChild,
        optA,
        "Remote dropdown contains remote acc of option A."
      );
    }

    // Close the dropdown.
    p = waitForEvents({
      expected: [[EVENT_HIDE, LOCAL_DROPDOWN_ID]],
    });

    const popup = window.document.getElementById(LOCAL_DROPDOWN_ID).menupopup;
    if (popup.isNativeMenu) {
      // Synthesized events are not available with native menus
      popup.hidePopup();
    } else {
      EventUtils.synthesizeKey("VK_ESCAPE");
    }
    await p;

    // Verify walking down from the select produces the
    // appropriate option
    remoteAccDropdown = select.firstChild;

    // Verify the remote dropdown:
    // - is the role we expect
    // - is not identical to the local dropdown via ID
    // - is the parent of the remote accessible for the
    //   option the select contains
    if (isRemote) {
      is(
        remoteAccDropdown.role,
        ROLE_COMBOBOX_LIST,
        "Select's first child is the combobox list"
      );
      isnot(
        remoteAccDropdown.id,
        LOCAL_DROPDOWN_ID,
        "Remote dropdown does not match local dropdown's ID."
      );
      is(
        remoteAccDropdown.firstChild,
        optA,
        "Remote dropdown contains remote acc of option A."
      );
    }

    // Attempt to fetch the local dropdown
    localAccDropdown = findAccessibleChildByID(rootAcc, LOCAL_DROPDOWN_ID);
    is(
      localAccDropdown,
      null,
      "Local dropdown cannot be reached while select is collapsed"
    );
  },
  {
    chrome: true,
    topLevel: true,
    iframe: true,
    remoteIframe: true,
  }
);

Messung V0.5 in Prozent
C=92 H=90 G=90

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=434850
#Domains=655579