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

SSL test_cmd_absPos.html   Interaktion und
PortierbarkeitHTML

 
 products/Sources/formale Sprachen/C/Firefox/editor/libeditor/tests/test_cmd_absPos.html


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Testing cmd_absPos command</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
</head>
<body contenteditable></body>
<script>
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(() => {
  (function testTogglingPositionInBodyChildText() {
    const description = "testTogglingPositionInBodyChildText";
    const textNode = document.createTextNode("abc");
    document.body.appendChild(textNode);
    getSelection().collapse(textNode, 1);

    SpecialPowers.doCommand(window, "cmd_absPos");
    const div = textNode.parentNode;
    is(
      div.tagName.toLowerCase(),
      "div",
      `${
        description
      }: a <div> element should be created and the text node should be wrapped in it`
    );
    is(
      div.style.position,
      "absolute",
      `${description}: position of the <div> should be set to "absolute"`
    );
    isnot(
      div.style.top,
      "",
      `${description}: top of the <div> should be set`
    );
    isnot(
      div.style.left,
      "",
      `${description}: left of the <div> should be set`
    );
    ok(
      getSelection().isCollapsed,
      `${
        description
      }: selection should be collapsed (making it absolutely positioned)`
    );
    // Collapsing selection to start of the absolutely positioned <div> seems
    // odd.  Why don't we keep selection in the new <div>?
    is(
      getSelection().focusNode,
      div,
      `${
        description
      }: selection should be collapsed in the absolutely positioned <div>`
    );
    is(
      getSelection().focusOffset,
      0,
      `${
        description
      }: selection should be collapsed at start of the absolutely positioned <div>`
    );

    SpecialPowers.doCommand(window, "cmd_absPos");
    ok(
      !div.isConnected,
      `${description}: the <div> should be removed from the <body>`
    );
    is(
      div.style.position,
      "",
      `${description}: position of the <div> should be unset`
    );
    is(
      div.style.top,
      "",
      `${description}: top of the <div> should be unset`
    );
    is(
      div.style.left,
      "",
      `${description}: left of the <div> should be unset`
    );
    ok(
      getSelection().isCollapsed,
      `${
        description
      }: selection should be collapsed (making it in normal flow)`
    );
    // If we change the above behavior, we can keep selection collapsed in the
    // text node here.
    is(
      getSelection().focusNode,
      document.body,
      `${description}: selection should be collapsed in the <body>`
    );
    todo_is(
      getSelection().focusNode.childNodes.item(
        getSelection().focusOffset
      ),
      textNode,
      `${description}: selection should be collapsed after the text node`
    );
    textNode.remove();
  })();

  (function testTogglingPositionOfDivContainingCaret() {
    const description = "testTogglingPositionOfDivContainingCaret";
    const div = document.createElement("div");
    div.innerHTML = "abc";
    document.body.appendChild(div);
    const textNode = div.firstChild;
    getSelection().collapse(textNode, 1);
    SpecialPowers.doCommand(window, "cmd_absPos");
    is(
      div.style.position,
      "absolute",
      `${description}: position of the <div> should be set to "absolute"`
    );
    isnot(
      div.style.top,
      "",
      `${description}: top of the <div> should be set`
    );
    isnot(
      div.style.left,
      "",
      `${description}: left of the <div> should be set`
    );
    ok(
      getSelection().isCollapsed,
      `${
        description
      }: selection should be collapsed (making it absolutely positioned)`
    );
    is(
      getSelection().focusNode,
      textNode,
      `${
        description
      }: selection should be collapsed in the absolutely positioned <div>`
    );
    is(
      getSelection().focusOffset,
      1,
      `${
        description
      }: selection should be collapsed at same offset in the absolutely positioned <div>`
    );

    SpecialPowers.doCommand(window, "cmd_absPos");
    ok(
      !div.isConnected,
      `${description}: the <div> should be removed from the <body>`
    );
    is(
      div.style.position,
      "",
      `${description}: position of the <div> should be unset`
    );
    is(
      div.style.top,
      "",
      `${description}: top of the <div> should be unset`
    );
    is(
      div.style.left,
      "",
      `${description}: left of the <div> should be unset`
    );
    ok(
      getSelection().isCollapsed,
      `${
        description
      }: selection should be collapsed (making it in normal flow)`
    );
    is(
      getSelection().focusNode,
      textNode,
      `${description}: selection should be collapsed in the <div>`
    );
    is(
      getSelection().focusOffset,
      1,
      `${description}: selection should be collapsed at same offset in the <div>`
    );
    div.remove();
    textNode.remove();
  })();

  (function testTogglingPositionOfDivContainingSelectionRange() {
    const description = "testTogglingPositionOfDivContainingSelectionRange";
    const div = document.createElement("div");
    div.innerHTML = "abc";
    document.body.appendChild(div);
    const textNode = div.firstChild;
    getSelection().setBaseAndExtent(textNode, 1, textNode, 2);
    SpecialPowers.doCommand(window, "cmd_absPos");
    is(
      div.style.position,
      "absolute",
      `${description}: position of the <div> should be set to "absolute"`
    );
    isnot(
      div.style.top,
      "",
      `${description}: top of the <div> should be set`
    );
    isnot(
      div.style.left,
      "",
      `${description}: left of the <div> should be set`
    );
    is(
      getSelection().anchorNode,
      textNode,
      `${
        description
      }: selection should start from the text node in the absolutely positioned <div>`
    );
    is(
      getSelection().anchorOffset,
      1,
      `${
        description
      }: selection should start from "b" in the text node in the absolutely positioned <div>`
    );
    is(
      getSelection().focusNode,
      textNode,
      `${
        description
      }: selection should end in the text node in the absolutely positioned <div>`
    );
    is(
      getSelection().focusOffset,
      2,
      `${
        description
      }: selection should end after "b" absolutely positioned <div>`
    );

    getSelection().setBaseAndExtent(textNode, 1, textNode, 2);
    SpecialPowers.doCommand(window, "cmd_absPos");
    ok(
      !div.isConnected,
      `${description}: the <div> should be removed from the <body>`
    );
    is(
      div.style.position,
      "",
      `${description}: position of the <div> should be unset`
    );
    is(
      div.style.top,
      "",
      `${description}: top of the <div> should be unset`
    );
    is(
      div.style.left,
      "",
      `${description}: left of the <div> should be unset`
    );
    is(
      getSelection().anchorNode,
      textNode,
      `${description}: selection should start from the text node in the <div>`
    );
    is(
      getSelection().anchorOffset,
      1,
      `${
        description
      }: selection should start from "b" in the text node in the <div>`
    );
    is(
      getSelection().focusNode,
      textNode,
      `${description}: selection should end in the text node in the <div>`
    );
    is(
      getSelection().focusOffset,
      2,
      `${description}: selection should end after "b" <div>`
    );
    div.remove();
    textNode.remove();
  })();

  document.body.removeAttribute("contenteditable");
  SimpleTest.finish();
});
</script>
</html>

99%


¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.9Angebot  ¤

*Eine klare Vorstellung vom Zielzustand






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 ist noch experimentell.