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

Quelle  test_domWindowUtils.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/dom/tests/mochitest/general/test_domWindowUtils.html


<!DOCTYPE HTML>
<html>
<head>
  <title>Test nsIDOMWindowUtils</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">
  <style>
    htmlbodydiv {
      padding: 0;
      margin: 0;
    }

    div.test {
      position: absolute;
      height: 10px;
      width: 10px;
    }
  </style>
</head>

<body id="body">

<div class="test" id="onscreen" style="top: 100px; background-color: red;"></div>
<div class="test" id="offscreen" style="top: 100000px; background-color: green;"></div>

<script type="application/javascript">

SimpleTest.waitForExplicitFinish();

var domWindowUtils = SpecialPowers.getDOMWindowUtils(window);

var gTests = [
/*
  Element elementFromPoint(in long aX,
                           in long aY,
                           in boolean aIgnoreRootScrollFrame,
                           in boolean aFlushLayout);
*/
async function testElementFromPoint() {
  let onscreen = document.getElementById("onscreen");
  let offscreen = document.getElementById("offscreen");
  let htmldoc = document.documentElement;
  ok(onscreen, "on screen element exists");
  ok(offscreen, "off screen element exists");
  ok(htmldoc, "htmldoc element exists");

  let testData = [
    // default behavior is to return null for items outside the viewport
    [[0, 100], null, onscreen],
    [[9, 109], null, onscreen],
    [[0, 100000], null, null],
    [[9, 100009], null, null],

    // ignore scroll frame
    [[0, 100, true, false], null, onscreen],
    [[9, 109, true, false], null, onscreen],
    [[0, 100000, true, false], null, offscreen],
    [[9, 100009, true, false], null, offscreen],

    // layout flush tests
    // test moving element 10px to the left and down, and flushing layout
    [[10, 110, false, true], [[10, 110], onscreen], onscreen],
    // test moving element back, not flushing layout
    // (will get the html document instead)
    [[0, 100, false, false], [[0, 100], onscreen], htmldoc],
    // test element at same position, flushing layout
    [[0, 100, false, true], [[0, 100], onscreen], onscreen],

    // same tests repeated for offscreen element
    [[10, 100010, true, true], [[10, 100010], offscreen], offscreen],
    [[0, 100000, true, false], [[0, 100000], offscreen], htmldoc],
    [[0, 100000, true, true], [[0, 100000], offscreen], offscreen],
  ];

  for (let i = 0; i < testData.length; ++i) {
    let [x, y, ignoreScroll, flushLayout] = testData[i][0];
    let moveData = testData[i][1];
    let expected = testData[i][2];

    if (moveData) {
      let moveEl = moveData[1];
      let [moveX, moveY] = moveData[0];

      moveEl.style.left = moveX + "px";
      moveEl.style.top = moveY + "px";
    }
    let found = SpecialPowers.unwrap(domWindowUtils.elementFromPoint(
                                     x, y, ignoreScroll, flushLayout));
    is(found, expected, "at index " + i + " for data " + JSON.stringify(testData[i][0]));
  }
},

/**
 * Test .isHandlingUserInput attribute.
 */
async function testHandlingUserInput() {
  ok('isHandlingUserInput' in domWindowUtils,
     "isHandlingUserInput should be present");

  is(domWindowUtils.isHandlingUserInput, false,
     "isHandlingUserInput should return false if nothing is happening");

  var data = [
    {
      eventName: "click",
      result: true,
    },
    {
      eventName: "auxclick",
      button: 1,
      result: true,
    },
    {
      eventName: "mousemove",
      result: false,
    },
    {
      eventName: "mouseup",
      result: true,
    },
    {
      eventName: "mousedown",
      result: true,
    },
    {
      eventName: "keydown",
      result: true,
    },
    {
      eventName: "keyup",
      result: true,
    },
  ];

  for (const {eventName, result, button} of data) {
    let eventPromise = new Promise(resolve => {
      document.addEventListener(eventName, function() {
        is(domWindowUtils.isHandlingUserInput, result,
           `isHandlingUserInput should be ${result} for ${eventName}`);

        SimpleTest.executeSoon(resolve);
      }, {once: true});
    });

    SimpleTest.executeSoon(function() {
      if (eventName == "click") {
        synthesizeMouseAtCenter(document.body, {});
      } else if (eventName == "auxclick" && button) {
        synthesizeMouseAtCenter(document.body, { button });
      } else if (eventName.startsWith("key")) {
        synthesizeKey("VK_A", { type: eventName });
      } else {
        synthesizeMouseAtCenter(document.body, { type: eventName });
      }
    });

    await eventPromise;
  }
},
];

async function runner() {
  for (let i=0; i<gTests.length; ++i) {
    if (i > 0) {
      await new Promise(r => SimpleTest.executeSoon(r));
    }
    await gTests[i]();
  }

  SimpleTest.finish();
};

// Run the test from onload, since the onscreen and offscreen divs should be in
// the right places by then.
addLoadEvent(runner);

</script>

<p id="display"></p>

</body>
</html>

Messung V0.5
C=95 H=95 G=94

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© 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.