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 4 kB image not shown  

SSL test_bug795785.html   Interaktion und
PortierbarkeitHTML

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


<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=795785
-->

<head>
  <title>Test for Bug 795785</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="/tests/SimpleTest/EventUtils.js"></script>
  <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=795785">Mozilla Bug 795785</a>
<div id="display">
  <textarea style="overflow: hidden; height: 3em; width: 5em; word-wrap: normal;"></textarea>
  <div contenteditable style="overflow: hidden; height: 3em; width: 5em;"></div>
</div>
<div id="content" style="display: none">

</div>
<pre id="test">
</pre>

<script>
"use strict";

function waitForScroll() {
  return waitToClearOutAnyPotentialScrolls(window);
}

async function synthesizeKeyInEachEventLoop(aKey, aEvent, aCount) {
  for (let i = 0; i < aCount; i++) {
    synthesizeKey(aKey, aEvent);
    await new Promise(resolve => SimpleTest.executeSoon(resolve));
  }
}

async function sendStringOneByOne(aString) {
  for (const ch of aString) {
    sendString(ch);
    await new Promise(resolve => SimpleTest.executeSoon(resolve));
  }
}

async function doKeyEventTest(aSelector) {
  const element = document.querySelector(aSelector);
  if (element.value !== undefined) {
    element.value = "";
  } else {
    element.innerHTML = "";
  }
  element.focus();
  element.scrollTop = 0;
  await waitForScroll();
  is(element.scrollTop, 0, `${aSelector}.scrollTop should be 0`);
  await synthesizeKeyInEachEventLoop("KEY_Enter", {shiftKey: true}, 6);
  await waitForScroll();
  isnot(element.scrollTop, 0, `${aSelector} should be scrolled by inserting line breaks`);
  const oldScrollTop = element.scrollTop;
  await synthesizeKeyInEachEventLoop("KEY_ArrowUp", {}, 5);
  await waitForScroll();
  isnot(element.scrollTop, oldScrollTop, `${aSelector} should be scrolled by up key events`);
  await synthesizeKeyInEachEventLoop("KEY_ArrowDown", {}, 5);
  await waitForScroll();
  is(element.scrollTop, oldScrollTop, `${aSelector} should be scrolled by down key events`);
  const longWord = "aaaaaaaaaaaaaaaaaaaa";
  await sendStringOneByOne(longWord);
  await waitForScroll();
  isnot(element.scrollLeft, 0, `${aSelector} should be scrolled by typing long word`);
  const oldScrollLeft = element.scrollLeft;
  await synthesizeKeyInEachEventLoop("KEY_ArrowLeft", {}, longWord.length);
  await waitForScroll();
  isnot(element.scrollLeft, oldScrollLeft, `${aSelector} should be scrolled by left key events`);
  await synthesizeKeyInEachEventLoop("KEY_ArrowRight", {}, longWord.length);
  await waitForScroll();
  is(element.scrollLeft, oldScrollLeft, `${aSelector} should be scrolled by right key events`);
}

async function doCompositionTest(aSelector) {
  const element = document.querySelector(aSelector);
  if (element.value !== undefined) {
    element.value = "";
  } else {
    element.innerHTML = "";
  }
  element.focus();
  element.scrollTop = 0;
  await waitForScroll();
  is(element.scrollTop, 0, `${aSelector}.scrollTop should be 0`);
  const longCompositionString =
    "Web \u958b\u767a\u8005\u306e\u7686\u3055\u3093\u306f\u3001" +
    "Firefox \u306b\u5b9f\u88c5\u3055\u308c\u3066\u3044\u308b HTML5" +
    " \u3084 CSS \u306e\u65b0\u6a5f\u80fd\u3092\u6d3b\u7528\u3059" +
    "\u308b\u3053\u3068\u3067\u3001\u9b45\u529b\u3042\u308b Web " +
    "\u30b5\u30a4\u30c8\u3084\u9769\u65b0\u7684\u306a Web \u30a2" +
    "\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u3088\u308a" +
    "\u77ed\u6642\u9593\u3067\u7c21\u5358\u306b\u4f5c\u6210\u3067" +
    "\u304d\u307e\u3059\u3002";
  synthesizeCompositionChange(
    {
      composition: {
        string: longCompositionString,
        clauses: [
          {
            length: longCompositionString.length,
            attr: COMPOSITION_ATTR_RAW_CLAUSE,
          },
        ],
      },
      caret: {
        start: longCompositionString.length,
        length: 0,
      },
    }
  );
  await waitForScroll();
  isnot(element.scrollTop, 0, `${aSelector} should be scrolled by composition`);
  synthesizeComposition({ type: "compositioncommit", data: "" });
  await waitForScroll();
  is(
    element.scrollTop,
    0,
    `${aSelector} should be scrolled back to the top by canceling composition`
  );
}

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(async () => {
  await doKeyEventTest("textarea");
  await doKeyEventTest("div[contenteditable]");
  await doCompositionTest("textarea");
  await doCompositionTest("div[contenteditable]");
  SimpleTest.finish();
});
</script>
</body>

</html>

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

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

*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 und die Messung sind noch experimentell.