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>