diff options
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.html | 55 |
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> |