| <p> | |
| This is the paragraph before. | |
| </p> | |
| <p id="paragraph"> | |
| This paragraph contains an <ruby id="ruby">annotated <rt id="rt">annotation</rt></ruby> word. | |
| </p> | |
| <p> | |
| This is the paragraph after. | |
| </p> | |
| <pre id="console"> | |
| </pre> | |
| <script> | |
| if (window.testRunner) | |
| testRunner.dumpAsText(); | |
| function log(message) | |
| { | |
| document.getElementById("console").appendChild(document.createTextNode(message + "\n")); | |
| } | |
| function positionAsString(node, offset) | |
| { | |
| if (node.nodeType === Node.TEXT_NODE) | |
| return "\"" + node.data.trim() + "\"[" + offset + "]"; | |
| return node.tagName + "[" + offset + "]"; | |
| } | |
| function testMovementToEndOfParagraph(node, offset) | |
| { | |
| var selection = getSelection(); | |
| selection.setPosition(node, offset); | |
| selection.modify("move", "forward", "paragraphBoundary"); | |
| if (selection.baseNode === paragraph.lastChild && selection.baseOffset === 6) | |
| log("PASS: Reached the end of the paragraph starting from " + positionAsString(node, offset) + "."); | |
| else | |
| log("FAIL: Reached " + positionAsString(selection.baseNode, selection.baseOffset) + " instead " | |
| + "of the end of the paragraph starting from " + positionAsString(node, offset) + "."); | |
| } | |
| function testMovementToStartOfParagraph(node, offset) | |
| { | |
| var selection = getSelection(); | |
| selection.setPosition(node, offset); | |
| selection.modify("move", "backward", "paragraphBoundary"); | |
| if (selection.baseNode === paragraph.firstChild && selection.baseOffset === 5) | |
| log("PASS: Reached the start of the paragraph starting from " + positionAsString(node, offset) + "."); | |
| else | |
| log("FAIL: Reached " + positionAsString(selection.baseNode, selection.baseOffset) + " instead " | |
| + "of the start of the paragraph starting from " + positionAsString(node, offset) + "."); | |
| } | |
| var paragraph = document.getElementById("paragraph"); | |
| var ruby = document.getElementById("ruby"); | |
| var rt = document.getElementById("rt"); | |
| testMovementToEndOfParagraph(paragraph, 0); | |
| testMovementToEndOfParagraph(ruby, 0); | |
| testMovementToEndOfParagraph(rt, 0); | |
| testMovementToStartOfParagraph(paragraph, 2); | |
| testMovementToStartOfParagraph(ruby, 2); | |
| testMovementToStartOfParagraph(rt, 1); | |
| </script> |