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


Quelle  test_namechange.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/accessible/tests/mochitest/events/test_namechange.html


<html>

<head>
  <title>Accessible name change event testing</title>

  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />

  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>

  <script type="application/javascript"
          src="../common.js"></script>
  <script type="application/javascript"
          src="../events.js"></script>
  <script type="application/javascript"
          src="../role.js"></script>
  <script type="application/javascript"
          src="../states.js"></script>

  <script type="application/javascript">
    let PromEvents = {};
    Services.scriptloader.loadSubScript(
      "chrome://mochitests/content/a11y/accessible/tests/mochitest/promisified-events.js",
      PromEvents);

    // //////////////////////////////////////////////////////////////////////////
    // Invokers

    function setAttr(aID, aAttr, aValue, aChecker) {
      this.eventSeq = [ aChecker ];
      this.invoke = function setAttr_invoke() {
        getNode(aID).setAttribute(aAttr, aValue);
      };

      this.getID = function setAttr_getID() {
        return "set attr '" + aAttr + "', value '" + aValue + "'";
      };
    }

    /**
     * No name change on an accessible, because the accessible is recreated.
     */
    function setAttr_recreate(aID, aAttr, aValue) {
      this.eventSeq = [
        new invokerChecker(EVENT_HIDE, getAccessible(aID)),
        new invokerChecker(EVENT_SHOW, aID),
      ];
      this.invoke = function setAttr_recreate_invoke() {
        todo(false, "No accessible recreation should happen, just name change event");
        getNode(aID).setAttribute(aAttr, aValue);
      };

      this.getID = function setAttr_recreate_getID() {
        return "set attr '" + aAttr + "', value '" + aValue + "'";
      };
    }

    // //////////////////////////////////////////////////////////////////////////
    // Do tests

    // gA11yEventDumpToConsole = true; // debuggin

    var gQueue = null;
    async function doTests() {
      gQueue = new eventQueue();
      // Later tests use await.
      let queueFinished = new Promise(resolve => {
        gQueue.onFinish = function() {
          resolve();
          return DO_NOT_FINISH_TEST;
        };
      });

      gQueue.push(new setAttr("tst1""aria-label""hi",
                              new invokerChecker(EVENT_NAME_CHANGE, "tst1")));
      gQueue.push(new setAttr("tst1""alt""alt",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst1")));
      gQueue.push(new setAttr("tst1""title""title",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst1")));
      gQueue.push(new setAttr("tst1""aria-labelledby""display",
                              new invokerChecker(EVENT_NAME_CHANGE, "tst1")));

      gQueue.push(new setAttr("tst2""aria-labelledby""display",
                              new invokerChecker(EVENT_NAME_CHANGE, "tst2")));
      gQueue.push(new setAttr("tst2""alt""alt",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst2")));
      gQueue.push(new setAttr("tst2""title""title",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst2")));
      gQueue.push(new setAttr("tst2""aria-label""hi",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst2")));

      // When `alt` attribute is added or removed from a broken img,
      // the accessible is recreated.
      gQueue.push(new setAttr_recreate("tst3""alt""one"));
      // When an `alt` attribute is changed, there is a name change event.
      gQueue.push(new setAttr("tst3""alt""two",
                              new invokerChecker(EVENT_NAME_CHANGE, "tst3")));
      gQueue.push(new setAttr("tst3""title""title",
                              new unexpectedInvokerChecker(EVENT_NAME_CHANGE, "tst3")));

      gQueue.push(new setAttr("tst4""title""title",
                              new invokerChecker(EVENT_NAME_CHANGE, "tst4")));

      gQueue.invoke();
      await queueFinished;
      // Tests beyond this point use await rather than eventQueue.

      const labelledBy = getNode("labelledBy");
      const label = getNode("label");
      let nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, labelledBy);
      info("Changing text of aria-labelledby target");
      label.textContent = "l2";
      await nameChanged;
      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, labelledBy);
      info("Adding node to aria-labelledby target");
      label.innerHTML = '

l3

'
;
      await nameChanged;
      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, labelledBy);
      info("Changing text of aria-labelledby target's child");
      getNode("labelChild").textContent = "l4";
      await nameChanged;

      const lateLabelledBy = getNode("lateLabelledBy");
      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, lateLabelledBy);
      info("Setting aria-labelledby");
      lateLabelledBy.setAttribute("aria-labelledby""lateLabel");
      await nameChanged;
      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, lateLabelledBy);
      info("Changing text of late aria-labelledby target's child");
      getNode("lateLabelChild").textContent = "l2";
      await nameChanged;

      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, "listitem");
      info("Changing textContent of listitem child");
      // Changing textContent replaces the text leaf with a new one.
      getNode("listitem").textContent = "world";
      await nameChanged;

      nameChanged = PromEvents.waitForEvent(EVENT_NAME_CHANGE, "button");
      info("Changing text of button's text leaf");
      // Changing the text node's data changes the text without replacing the
      // leaf.
      getNode("button").firstChild.data = "after";
      await nameChanged;

      SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTests);
  </script>
</head>

<body>

  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=991969"
     title="Event not fired when description changes">
    Bug 991969
  </a>

  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>

  <img id="tst1" alt="initial" src="../moz.png">
  <img id="tst2" src="../moz.png">
  <img id="tst3">
  <img id="tst4" src="../moz.png">

  <div id="labelledBy" aria-labelledby="label"></div>
  <div id="label">l1</div>

  <div id="lateLabelledBy"></div>
  <div id="lateLabel"><p id="lateLabelChild">l1</p></div>

  <ul><li id="listitem">hello</li></ul>

  <button id="button">before</button>

  <div id="eventdump"></div>
</body>
</html>

Messung V0.5
C=97 H=97 G=96

¤ Dauer der Verarbeitung: 0.22 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge