<!DOCTYPE html> <html> <head> <title>Text Range tests</title> <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="../common.js"></script> <script type="application/javascript" src="../text.js"></script> <script type="application/javascript" src="../layout.js"></script> <script type="application/javascript"> function doTest() { // enclosingRange var input = getAccessible("input", [ nsIAccessibleText ]); testTextRange(input.enclosingRange, "enclosing range for 'input'", input, 0, input, 5, "hello", input); var ta = getAccessible("textarea", [ nsIAccessibleText ]); testTextRange(ta.enclosingRange, "enclosing range for 'textarea'", ta, 0, ta, 5, "hello", textarea); var iframeDocNode = getNode("iframe").contentDocument; var iframeDoc = getAccessible(iframeDocNode, [ nsIAccessibleText ]); testTextRange(iframeDoc.enclosingRange, "enclosing range for iframe doc", iframeDoc, 0, iframeDoc, 1, "hello", iframeDoc, [ getNode("p", iframeDocNode) ]); // getRangeByChild var docacc = getAccessible(document, [ nsIAccessibleText ]); var p1 = getAccessible("p1"); var p1Range = docacc.getRangeByChild(p1); testTextRange(p1Range, "range by 'p1' child", p1, 0, "p1", 11, "text text", p1, ["p1_img"]); testTextRange(docacc.getRangeByChild(getAccessible("p1_img")), "range by 'p1_img' child", "p1", 5, "p1", 5, "", "p1", ["p1_img"]); var p2 = getAccessible("p2"); var p2Range = docacc.getRangeByChild(p2); testTextRange(p2Range, "range by 'p2' child", p2, 0, "p2", 11, "text link text", p2, ["p2_a"]); testTextRange(docacc.getRangeByChild(getAccessible("p2_a")), "range by 'p2_a' child", "p2_a", 0, "p2_a", 5, "link", "p2_a", ["p2_img"]); // getRangeAtPoint getNode("p2_a").scrollIntoView(true); var [x, y] = getPos("p2_a"); testTextRange(docacc.getRangeAtPoint(x + 1, y + 1), "range at 'p2_a' top-left edge", "p2_a", 0, "p2_a", 0, "", "p2_a"); // TextRange::compare ok(input.enclosingRange.compare(input.enclosingRange), "input enclosing ranges should be equal"); ok(!input.enclosingRange.compare(ta.enclosingRange), "input and textarea enclosing ranges can't be equal"); // TextRange::compareEndPoints var res = p1Range.compareEndPoints(EndPoint_End, p2Range, EndPoint_Start); is(res, -1, "p1 range must be lesser with p2 range"); res = p2Range.compareEndPoints(EndPoint_Start, p1Range, EndPoint_End); is(res, 1, "p2 range must be greater with p1 range"); res = p1Range.compareEndPoints(EndPoint_Start, p1Range, EndPoint_Start); is(res, 0, "p1 range must be equal with p1 range"); SimpleTest.finish(); } SimpleTest.waitForExplicitFinish(); addA11yLoadEvent(doTest); </script> </head> <body> <a target="_blank" title="Implement Text accessible text range methods" href="https://bugzilla.mozilla.org/show_bug.cgi?id=975065">Bug 975065</a> <p id="display"></p> <div id="content" style="display: none"></div> <pre id="test"> </pre> <input id="input" value="hello"> <textarea id="textarea">hello</textarea> <iframe id="iframe" src="data:text/html,<html><body><p id='p'>hello</p></body></html>"></iframe> <p id="p1">text <img id="p1_img", src="../moz.png"> text</p> <p id="p2">text <a id="p2_a" href="www">link<img id="p2_img", src="../moz.png"></a> text</p> </body> </html>