1eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdescription("Test to make sure that getRangeAt does not modify the range when returning it.")
2eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
3eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar div = document.createElement('div');
4eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdocument.body.appendChild(div);
5eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar textNode = document.createTextNode("asd");
6eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdiv.appendChild(textNode);
7eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
8eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar sel = window.getSelection();
9eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blocksel.collapse(textNode, 0);
10eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar range = sel.getRangeAt(0);
11eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
12eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar result = range.comparePoint(textNode, 0);
13eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockif (result == 0) {
14eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    testPassed("range is correctly (text, 0)");
15eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block} else {
16eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    testFailed("range did not match (text, 0)");
17eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("window.getSelection():");
18eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("anchorNode: " + sel.anchorNode);
19eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("anchorOffset: " + sel.anchorOffset);
20eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("focusNode: " + sel.focusNode);
21eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("focusOffset: " + sel.focusOffset);
22eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
23eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("window.getSelection().getRangeAt(0):");
24eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("startContainer: " + range.startContainer);
25eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("startOffset: " + range.startOffset);
26eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("endContainer: " + range.endContainer);
27eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block    debug("endOffset: " + range.endOffset);
28eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block}
29eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
30eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block// Clean up after ourselves
31eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockdocument.body.removeChild(div);
32eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Block
33eff69b907ef2cd3a9af0351287a929c66f58e3f6Steve Blockvar successfullyParsed = true;
34