Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /selection/selection-modify-extend-word-generated-content.html - WPT Dashboard Interop Dashboard
<!doctype html>
<html>
<meta charset="utf-8">
<title>Generated content should not connect the first/last word with adjacent line's last/first word</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
p {
white-space: nowrap;
}
p#middleLine::before, p#middleLine::after {
content: "GeneratedText";
}
</style>
<script>
"use strict";
addEventListener("load", () => {
const middleLine = document.getElementById("middleLine");
test(() => {
getSelection().collapse(middleLine.firstChild, "mid".length);
getSelection().modify("extend", "backward", "word");
assert_in_array(
getSelection().getRangeAt(0).startContainer,
[middleLine, middleLine.firstChild],
"The start container should be in the middle line"
);
assert_equals(
getSelection().getRangeAt(0).startOffset,
0,
"The start offset should be 0"
);
}, "extending selection from middle of first word of the middle line shouldn't extend the range to the previous line");
test(() => {
getSelection().collapse(middleLine.firstChild, "middle li".length);
getSelection().modify("extend", "forward", "word");
assert_in_array(
getSelection().getRangeAt(0).endContainer,
[middleLine, middleLine.firstChild],
"The end container should be in the middle line"
);
assert_equals(
getSelection().getRangeAt(0).endOffset,
getSelection().getRangeAt(0).endContainer.length,
"The end offset should be the length of the container"
);
}, "extending selection from middle of last word of the middle line shouldn't extend the range to the next line");
}, {once: true});
</script>
<body>
<p id="previousLine">previous line</p>
<p id="middleLine">middle line</p>
<p id="nextLine">last line</p>
</body>
</html>