Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/base/test/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

SSL test_bug564863-2.xhtml   Sprache: unbekannt

 
rahmenlose Ansicht.xhtml DruckansichtUnknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=564863
-->
<head>
  <title>Test for Bug 564863</title>
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<style>
* {
  color: rgb(0, 0, 0);
}
#xul_id {
  color: rgb(30, 30, 30);
}
</style>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=564863">Mozilla Bug 564863</a>

<!-- DOM to muck around with for tests -->
<p id="root">
<xul:button id="xul_id" />
</p>

<pre id="test">
<script type="application/javascript">
<![CDATA[
SimpleTest.waitForExplicitFinish();

(async function runTests() {
  root = $('root');
  xul = root.children[0];

  var xul_cs = getComputedStyle(xul, "");

  function checkHasId(test) {
    // Check computed style first to avoid flushes from hiding problems
    checkHasIdNoGEBI(test);

    is($("xul_id"), xul, "xul getElementById " + test);
  }

  function checkHasIdNoGEBI(test) {
    const connected = test != "removed node";
    is(xul_cs.color, connected ? "rgb(30, 30, 30)" : "", "xul color " + test);

    is(xul.id, "xul_id", "xul id " + test);
  }

  function checkHasNoId(removed, test) {
    // XXX This fails for some reason when this is run as a Mochitest chrome, but
    // not when run as a Mochitest plain.
    //is(xul_cs.color, "rgb(0, 0, 0)", "xul color " + test);

    let attrValue = removed ? null : "";

    is(xul.id, "", "xul id " + test);

    is(xul.getAttribute("id"), attrValue, "xul getAttribute " + test);

    is($("xul_id"), null, "xul getElementById " + test);
  }

  // Check that dynamic modifications of attribute work

  checkHasId("in markup");

  xul.id = "";

  checkHasNoId(false, "set to empty");

  xul.id = "xul_id";

  checkHasId("set using .id");

  xul.setAttribute("id", "");

  checkHasNoId(false, "setAttribute to empty");

  xul.id = "xul_id";

  checkHasId("set again using .id");

  xul.removeAttribute("id");

  checkHasNoId(true, "removed attribute");

  xul.setAttribute("id", "xul_id");

  checkHasId("set using setAttribute");

  t3 = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "button");
  t3.id = "xul_id";

  // Check that inserting elements before/after existing work

  function insertAfter(newChild, existing) {
    existing.parentNode.insertBefore(newChild, existing.nextSibling);
  }
  function insertBefore(newChild, existing) {
    existing.parentNode.insertBefore(newChild, existing);
  }
  function removeNode(child) {
    child.remove();
  }

  insertAfter(t3, xul);

  checkHasId("inserted after");

  insertBefore(t3, xul);

  checkHasIdNoGEBI("inserted before");
  is($("xul_id"), t3, "xul getElementById inserted before");

  t3.removeAttribute("id");

  checkHasId("removed tx attribute");

  t3.setAttribute("id", "xul_id");

  checkHasIdNoGEBI("setAttribute before");
  is($("xul_id"), t3, "xul getElementById setAttribute before");

  removeNode(t3);

  checkHasId("removed temporaries");

  removeNode(xul);

  checkHasIdNoGEBI("removed node");

  // Re-add the id inside a mutation event on a XUL element
  is($("xul_id"), null, "no xul");
  xul = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "button");
  xul.id = "xul_id";
  root.appendChild(xul);
  is($("xul_id"), xul, "new xul is set up");
  let mutation;
  const observer = new MutationObserver((aMutationList, aObserver) => {
    mutation = aMutationList[0];
    aObserver.disconnect();
  });
  observer.observe(xul, { attributes: true });
  xul.removeAttribute("id");
  await new Promise(SimpleTest.executeSoon);
  if (mutation) {
    is(mutation.target, xul, "target is xul");
    is(xul.getAttribute("id"), null, "xul no longer has id attr");
    is(xul.id, "", "xul no longer has id");
    xul.id = "other_xul_id";
  } else {
    observer.disconnect();
    ok(false, "mutation should've occurred");
  }
  is($("xul_id"), null, "xul_id was removed from table");
  is($("other_xul_id"), xul, "other_xul_id was added");
  removeNode(xul);
  is($("other_xul_id"), null, "other_xul_id was removed");

  SimpleTest.finish();
})();
]]>
</script>
</pre>
</body>
</html>

[ Verzeichnis aufwärts0.40unsichere Verbindung  ]