| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <script src="../../resources/js-test.js"></script> | |
| </head> | |
| <body> | |
| <div id="test">a <span> </span> <span> </span> b</div> | |
| <div id="console"></div> | |
| <script> | |
| if (!window.internals) | |
| testFailed("This test requires internals object"); | |
| debug(""); | |
| let container = document.getElementById("test"); | |
| function test(description, rangeToSelect) { | |
| let selection = window.getSelection(); | |
| selection.removeAllRanges(); | |
| selection.addRange(rangeToSelect); | |
| debug(description); | |
| [ | |
| [ ], | |
| ].forEach((behaviors) => { | |
| debug(" " + (behaviors.join("|") || "Default behavior")); | |
| for (let {text, range} of internals.statesOfTextIterator(rangeToSelect, behaviors)) | |
| debug(` '${text.replace("\n", "\\n")}' (location ${internals.locationFromRange(container, range, behaviors)} length ${internals.lengthFromRange(container, range, behaviors)})`); | |
| }); | |
| debug(""); | |
| } | |
| let rangeOfFirstLetter = document.createRange(); | |
| rangeOfFirstLetter.setStart(container.firstChild, 0); | |
| rangeOfFirstLetter.setEnd(container.firstChild, 1); | |
| container.style.width = "1ch"; | |
| test("Testing first letter with narrow width...", rangeOfFirstLetter); | |
| container.style.width = ""; | |
| test("Testing first letter with wide width...", rangeOfFirstLetter); | |
| let rangeUntilLastLetter = document.createRange(); | |
| rangeUntilLastLetter.setStart(container.firstChild, 0); | |
| rangeUntilLastLetter.setEnd(container.lastChild, 4); | |
| container.style.width = "1ch"; | |
| test("Testing everything except last letter with narrow width...", rangeUntilLastLetter); | |
| container.style.width = ""; | |
| test("Testing everything except last letter with wide width...", rangeUntilLastLetter); | |
| let rangeOfNode = document.createRange(); | |
| rangeOfNode.selectNode(container); | |
| container.style.width = "1ch"; | |
| test("Testing everything with narrow width...", rangeOfNode); | |
| container.style.width = ""; | |
| test("Testing everything with wide width...", rangeOfNode); | |
| </script> | |
| </body> | |
| </html> |