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


Quelle  test_undo_with_editingui.html   Sprache: HTML

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


<!DOCTYPE html>
<html>
<head>
  <title>Test for undo with editing UI</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none;">

</div>

<div id="editable1" contenteditable="true">
<table id="table1" border="1">
<tr id="tr1"><td>ABCDEFG</td><td>HIJKLMN</td></tr>
<tr id="tr2"><td>ABCDEFG</td><td>HIJKLMN</td></tr>
</table>
<div id="edit1">test</div>
<img id="img1" src="green.png">
<div id="abs1" style="position: absolute; top: 100px; left: 300px; width: 100px; height: 100px; background-color: green;"></div>
</div>
<pre id="test">

<script class="testbody" type="application/javascript">
function resizingActive(win = window) {
  let Ci = SpecialPowers.Ci;
  let editor = SpecialPowers.wrap(win).docShell.editor;
  return editor && editor.QueryInterface(Ci.nsIHTMLObjectResizer).isObjectResizingActive;
}

add_task(async function testAbsPosUI() {
  await new Promise((resolve) => {
    SimpleTest.waitForFocus(() => {
      SimpleTest.executeSoon(resolve);
    }, window);
  });

  document.execCommand("enableAbsolutePositionEditing", false, "true");
  ok(document.queryCommandState("enableAbsolutePositionEditing"),
    "Enable absolute positioned editor");

  let edit1 = document.getElementById("edit1");
  edit1.innerText = "test";
  synthesizeMouseAtCenter(edit1, {});
  synthesizeKey("a");
  isnot(edit1.firstChild.textContent, "test""Text is modified");
  let abs1 = document.getElementById("abs1");
  ok(!abs1.hasAttribute("_moz_abspos"), "_moz_abspos attribute should be false yet");

  let promiseForAbsEditor = new Promise((resolve) => {
    document.addEventListener("selectionchange", () => {
      resolve();
    }, {once: true});
  });
  synthesizeMouseAtCenter(abs1, {});
  await promiseForAbsEditor;
  ok(abs1.hasAttribute("_moz_abspos"), "_moz_abspos attribute should be true");

  synthesizeKey("z", { accelKey: true });
  is(edit1.firstChild.textContent, "test""Text is restored by undo");

  // TODO: no good way to move absolute position grab.

  document.execCommand("enableAbsolutePositionEditing", false, "false");
});

add_task(function testResizerUI() {
  document.execCommand("enableObjectResizing", false, "true");
  ok(document.queryCommandState("enableObjectResizing"),
    "Enable object resizing editor");

  let edit1 = document.getElementById("edit1");
  edit1.innerText = "test";
  synthesizeMouseAtCenter(edit1, {});
  synthesizeKey("h");
  isnot(edit1.firstChild.textContent, "test""Text is modified");

  let img1 = document.getElementById("img1");
  synthesizeMouseAtCenter(img1, {});
  ok(resizingActive(), "resizing should be active");

  synthesizeKey("z", { accelKey: true });
  is(edit1.firstChild.textContent, "test""Text is restored by undo");

  // Resizer

  synthesizeMouseAtCenter(edit1, {});
  synthesizeKey("j");
  isnot(edit1.firstChild.textContent, "test""Text is modified");

  synthesizeMouseAtCenter(img1, {});
  ok(resizingActive(), "resizing should be active");

  // Emulate drag & drop
  let origWidth = img1.width;
  let posX = img1.clientWidth;
  let posY = img1.clientHeight - (img1.height / 2);
  synthesizeMouse(img1, posX, posY, {type: "mousedown"});
  synthesizeMouse(img1, posX + 100, posY, {type: "mousemove"});
  synthesizeMouse(img1, posX + 100, posY, {type: "mouseup"});

  isnot(img1.width, origWidth, "Image is resized");
  synthesizeKey("z", { accelKey: true });
  is(img1.width, origWidth, "Image width is restored by undo");

  synthesizeKey("z", { accelKey: true });
  is(edit1.firstChild.textContent, "test""Text is restored by undo");

  document.execCommand("enableObjectResizing", false, "false");
});

add_task(async function testInlineTableUI() {
  document.execCommand("enableInlineTableEditing", false, "true");
  ok(document.queryCommandState("enableInlineTableEditing"),
    "Enable Inline Table editor");

  let tr1 = document.getElementById("tr1");
  synthesizeMouseAtCenter(tr1, {});
  synthesizeKey("o");
  isnot(tr1.firstChild.firstChild.textContent, "ABCDEFG",
        "Text is modified");

  let tr2 = document.getElementById("tr2");
  synthesizeMouseAtCenter(tr2, {});
  synthesizeKey("y");
  isnot(tr2.firstChild.firstChild.textContent, "ABCDEFG",
        "Text is modified");

  synthesizeKey("z", { accelKey: true });
  is(tr2.firstChild.firstChild.textContent, "ABCDEFG",
     "Text is restored by undo");

  synthesizeKey("z", { accelKey: true });
  is(tr1.firstChild.firstChild.textContent, "ABCDEFG",
     "Text is restored by undo");

  synthesizeMouseAtCenter(tr1, {});
  synthesizeKey("p");
  isnot(tr1.firstChild.firstChild.textContent, "ABCDEFG",
        "Text is modified");

  // Inline table editing UI

  synthesizeMouseAtCenter(tr2, {});
  synthesizeMouse(tr2, 0, tr2.clientHeight / 2, {});
  ok(!document.getElementById("tr2"),
     "id=tr2 should be removed by a click in the row");

  synthesizeKey("z", { accelKey: true });
  ok(document.getElementById("tr2"), "id=tr2 should be restored by undo");

  synthesizeKey("z", { accelKey: true });
  is(tr1.firstChild.firstChild.textContent, "ABCDEFG",
     "Text is restored by undo");

  document.execCommand("enableInlineTableEditing", false, "false");
});

</script>
</pre>
</body>
</html>

Messung V0.5
C=95 H=98 G=96

¤ Dauer der Verarbeitung: 0.30 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