michael@0: "use strict"; michael@0: // TODO: iframes, contenteditable/designMode michael@0: michael@0: // Everything is done in functions in this test harness, so we have to declare michael@0: // all the variables before use to make sure they can be reused. michael@0: var selection; michael@0: var testDiv, paras, detachedDiv, detachedPara1, detachedPara2, michael@0: foreignDoc, foreignPara1, foreignPara2, xmlDoc, xmlElement, michael@0: detachedXmlElement, detachedTextNode, foreignTextNode, michael@0: detachedForeignTextNode, xmlTextNode, detachedXmlTextNode, michael@0: processingInstruction, detachedProcessingInstruction, comment, michael@0: detachedComment, foreignComment, detachedForeignComment, xmlComment, michael@0: detachedXmlComment, docfrag, foreignDocfrag, xmlDocfrag, doctype, michael@0: foreignDoctype, xmlDoctype; michael@0: var testRanges, testPoints, testNodes; michael@0: michael@0: function setupRangeTests() { michael@0: selection = getSelection(); michael@0: testDiv = document.querySelector("#test"); michael@0: if (testDiv) { michael@0: testDiv.parentNode.removeChild(testDiv); michael@0: } michael@0: testDiv = document.createElement("div"); michael@0: testDiv.id = "test"; michael@0: document.body.insertBefore(testDiv, document.body.firstChild); michael@0: // Test some diacritics, to make sure browsers are using code units here michael@0: // and not something like grapheme clusters. michael@0: testDiv.innerHTML = "

Äb̈c̈d̈ëf̈g̈ḧ\n" michael@0: + "

Qrstuvwx" michael@0: + "