summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:13:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:13:33 +0000
commit086c044dc34dfc0f74fbe41f4ecb402b2cd34884 (patch)
treea4f824bd33cb075dd5aa3eb5a0a94af221bbe83a /testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html
parentAdding debian version 124.0.1-1. (diff)
downloadfirefox-086c044dc34dfc0f74fbe41f4ecb402b2cd34884.tar.xz
firefox-086c044dc34dfc0f74fbe41f4ecb402b2cd34884.zip
Merging upstream version 125.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html')
-rw-r--r--testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html55
1 files changed, 55 insertions, 0 deletions
diff --git a/testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html b/testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html
new file mode 100644
index 0000000000..e618f10f1d
--- /dev/null
+++ b/testing/web-platform/tests/selection/selection-range-after-textcontrol-removed.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="variant" content="?textControl=text">
+<meta name="variant" content="?textControl=password">
+<meta name="variant" content="?textControl=number">
+<meta name="variant" content="?textControl=textarea">
+<title>Selection range after text control is removed</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+"use strict";
+
+/**
+ * Browsers may use internal Selection and/or Range to implement the selection
+ * in text controls. They should not be appear outside the host text control
+ * after the host is removed.
+ */
+addEventListener("load", () => {
+ const textControlType = (new URLSearchParams(document.location.search)).get("mode");
+ function createTextControlElement() {
+ const textControl =
+ document.createElement(textControlType == "textarea" ? "textarea" : "input");
+ if (textControlType != "textarea") {
+ textControl.type = textControlType;
+ }
+ return textControl;
+ }
+
+ test(() => {
+ const textControl = createTextControlElement();
+ document.body.appendChild(textControl);
+ textControl.select();
+ getSelection().removeAllRanges();
+ textControl.remove();
+ assert_equals(getSelection().rangeCount, 0);
+ }, "Removing the text control should not add selection range");
+
+ test(() => {
+ const wrapper = document.createElement("div");
+ wrapper.id = "wrapper";
+ const textControl = createTextControlElement();
+ wrapper.appendChild(textControl);
+ document.body.appendChild(wrapper);
+ textControl.select();
+ getSelection().removeAllRanges();
+ wrapper.remove();
+ assert_equals(getSelection().rangeCount, 0);
+ }, "Removing the text control parent should not add selection range");
+}, {once: true});
+</script>
+</head>
+<body></body>
+</html>