<html> <head> <title>Text accessible caret testing</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="../events.js"></script> <script type="application/javascript"> /** * Turn on/off the caret browsing mode. */ function turnCaretBrowsing(aIsOn) { var prefs = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefBranch); prefs.setBoolPref("accessibility.browsewithcaret", aIsOn); } /** * Test caret offset for the given accessible. */ function testCaretOffset(aID, aCaretOffset) { var acc = getAccessible(aID, [nsIAccessibleText]); is(acc.caretOffset, aCaretOffset, "Wrong caret offset for " + aID); } function testCaretOffsets(aList) { for (var i = 0; i < aList.length; i++) testCaretOffset(aList[0][0], aList[0][1]); } function queueTraversalList(aList, aFocusNode) { for (var i = 0 ; i < aList.length; i++) { var node = aList[i].DOMPoint[0]; var nodeOffset = aList[i].DOMPoint[1]; var textAcc = aList[i].point[0]; var textOffset = aList[i].point[1]; var textList = aList[i].pointList; var invoker = new moveCaretToDOMPoint(textAcc, node, nodeOffset, textOffset, ((i == 0) ? aFocusNode : null), testCaretOffsets.bind(null, textList)) gQueue.push(invoker); } } /** * Do tests. */ var gQueue = null; //gA11yEventDumpID = "eventdump"; // debug stuff //gA11yEventDumpToConsole = true; function doTests() { turnCaretBrowsing(true); // test caret offsets testCaretOffset(document, 16); testCaretOffset("textbox", -1); testCaretOffset("textarea", -1); testCaretOffset("p", -1); // test caret move events and caret offsets gQueue = new eventQueue(); gQueue.push(new setCaretOffset("textbox", 1, "textbox")); gQueue.push(new setCaretOffset("link", 1, "link")); gQueue.push(new setCaretOffset("heading", 1, document)); // a*b*c var p2Doc = getNode("p2_container").contentDocument; var traversalList = [ { // before 'a' DOMPoint: [ getNode("p2", p2Doc).firstChild, 0 ], point: [ getNode("p2", p2Doc), 0 ], pointList: [ [ p2Doc, 0 ] ] }, { // after 'a' (before anchor) DOMPoint: [ getNode("p2", p2Doc).firstChild, 1 ], point: [ getNode("p2", p2Doc), 1 ], pointList: [ [ p2Doc, 0 ] ] }, { // before 'b' (inside anchor) DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 0 ], point: [ getNode("p2_a", p2Doc), 0 ], pointList: [ [ getNode("p2", p2Doc), 1 ], [ p2Doc, 0 ] ] }, { // after 'b' (inside anchor) DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 1 ], point: [ getNode("p2_a", p2Doc), 1 ], pointList: [ [ getNode("p2", p2Doc), 1 ] , [ p2Doc, 0 ] ] }, { // before 'c' (after anchor) DOMPoint: [ getNode("p2", p2Doc).lastChild, 0 ], point: [ getNode("p2", p2Doc), 2 ], pointList: [ [ p2Doc, 0 ] ] }, { // after 'c' DOMPoint: [ getNode("p2", p2Doc).lastChild, 1 ], point: [ getNode("p2", p2Doc), 3 ], pointList: [ [ p2Doc, 0 ] ] } ]; queueTraversalList(traversalList, getNode("p2", p2Doc)); gQueue.onFinish = function() { turnCaretBrowsing(false); } gQueue.invoke(); // Will call SimpleTest.finish(); } SimpleTest.waitForExplicitFinish(); addA11yLoadEvent(doTests); </script> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=448744" title="caretOffset should return -1 if the system caret is not currently with in that particular object"> Bug 448744 </a> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=524115" title="HyperText accessible should get focus when the caret is positioned inside of it, text is changed or copied into clipboard by ATs"> Bug 524115 </a> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=546068" title="Position is not being updated when atk_text_set_caret_offset is used"> Bug 546068 </a> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=672717" title="Broken caret when moving into/out of embedded objects with right arrow"> Bug 672717 </a> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=725581" title="caretOffset for textarea should be -1 when textarea doesn't have a focus"> Bug 725581 </a> <p id="display"></p> <div id="content" style="display: none"></div> <pre id="test"> </pre> <input id="textbox" value="hello"/> <textarea id="textarea">text<br>text</textarea> <p id="p" contentEditable="true"><span>text</span><br/>text</p> <a id="link" href="about:">about mozilla</a> <h5 id="heading">heading</h5> <iframe id="p2_container" src="data:text/html,<p id='p2' contentEditable='true'>a<a id='p2_a' href='mozilla.org'>b</a>c</p>"></iframe> <div id="eventdump"></div> </body> </html>