diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
commit | d8bbc7858622b6d9c278469aab701ca0b609cddf (patch) | |
tree | eff41dc61d9f714852212739e6b3738b82a2af87 /testing/web-platform/tests/selection/onselectionchange-on-document.html | |
parent | Releasing progress-linux version 125.0.3-1~progress7.99u1. (diff) | |
download | firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip |
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/selection/onselectionchange-on-document.html')
-rw-r--r-- | testing/web-platform/tests/selection/onselectionchange-on-document.html | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/testing/web-platform/tests/selection/onselectionchange-on-document.html b/testing/web-platform/tests/selection/onselectionchange-on-document.html new file mode 100644 index 0000000000..4e06165377 --- /dev/null +++ b/testing/web-platform/tests/selection/onselectionchange-on-document.html @@ -0,0 +1,73 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="help" href="https://w3c.github.io/selection-api/#selectionchange-event"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div id="container"><br><br></div> +<script> + +promise_test(() => { + return new Promise(resolve => { + let didFireSelectionChangeEvent = false; + document.addEventListener("selectionchange", () => { didFireSelectionChangeEvent = true; resolve(); }, {once: true}); + getSelection().setPosition(container, 0); + assert_false(didFireSelectionChangeEvent); + }); +}, "selectionchange event on document fires"); + +promise_test(() => { + return (async function() { + let selectionChangeCount = 0; + document.addEventListener("selectionchange", () => ++selectionChangeCount); + container.innerHTML = '<span><br></span><span><br></span>'; + getSelection().setPosition(container, 0); + assert_equals(selectionChangeCount, 0); + getSelection().setPosition(container, 2); + assert_equals(selectionChangeCount, 0); + await new Promise(setTimeout); + assert_equals(selectionChangeCount, 1); + })(); +}, "selectionchange event on document fires once"); + +promise_test(() => { + return (async function() { + let selectionChangeCount = 0; + document.addEventListener("selectionchange", () => ++selectionChangeCount); + container.innerHTML = '<span><br></span><span><br></span>'; + getSelection().setPosition(container, 0); + assert_equals(selectionChangeCount, 0); + getSelection().setPosition(container, 2); + assert_equals(selectionChangeCount, 0); + await new Promise(setTimeout); + assert_equals(selectionChangeCount, 1); + getSelection().setPosition(container, 0); + assert_equals(selectionChangeCount, 1); + getSelection().setPosition(container, 2); + assert_equals(selectionChangeCount, 1); + await new Promise(setTimeout); + assert_equals(selectionChangeCount, 2); + })(); +}, "task to fire selectionchange event gets queued each time selection is mutated"); + +promise_test(() => { + return (async function() { + let selectionChangeCount = 0; + document.addEventListener("selectionchange", () => { + if (!selectionChangeCount) { + getSelection().setPosition(container, 2); + getSelection().setPosition(container, 0); + } + ++selectionChangeCount; + }); + container.innerHTML = '<b><br></b><b><br></b>'; + getSelection().setPosition(container, 0); + assert_equals(selectionChangeCount, 0); + await new Promise(setTimeout); + assert_equals(selectionChangeCount, 1); + await new Promise(setTimeout); + assert_equals(selectionChangeCount, 2); + })(); +}, "has scheduled selectionchange event is set to false at the beginning of a task to fire selectionchange event"); + +</script> |