1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/textcaret/test_general.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,183 @@ 1.4 +<html> 1.5 + 1.6 +<head> 1.7 + <title>Text accessible caret testing</title> 1.8 + 1.9 + <link rel="stylesheet" type="text/css" 1.10 + href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 1.11 + 1.12 + <script type="application/javascript" 1.13 + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.14 + 1.15 + <script type="application/javascript" 1.16 + src="../common.js"></script> 1.17 + <script type="application/javascript" 1.18 + src="../events.js"></script> 1.19 + 1.20 + <script type="application/javascript"> 1.21 + /** 1.22 + * Turn on/off the caret browsing mode. 1.23 + */ 1.24 + function turnCaretBrowsing(aIsOn) 1.25 + { 1.26 + var prefs = Components.classes["@mozilla.org/preferences-service;1"]. 1.27 + getService(Components.interfaces.nsIPrefBranch); 1.28 + prefs.setBoolPref("accessibility.browsewithcaret", aIsOn); 1.29 + } 1.30 + 1.31 + /** 1.32 + * Test caret offset for the given accessible. 1.33 + */ 1.34 + function testCaretOffset(aID, aCaretOffset) 1.35 + { 1.36 + var acc = getAccessible(aID, [nsIAccessibleText]); 1.37 + is(acc.caretOffset, aCaretOffset, 1.38 + "Wrong caret offset for " + aID); 1.39 + } 1.40 + 1.41 + function testCaretOffsets(aList) 1.42 + { 1.43 + for (var i = 0; i < aList.length; i++) 1.44 + testCaretOffset(aList[0][0], aList[0][1]); 1.45 + } 1.46 + 1.47 + function queueTraversalList(aList, aFocusNode) 1.48 + { 1.49 + for (var i = 0 ; i < aList.length; i++) { 1.50 + var node = aList[i].DOMPoint[0]; 1.51 + var nodeOffset = aList[i].DOMPoint[1]; 1.52 + 1.53 + var textAcc = aList[i].point[0]; 1.54 + var textOffset = aList[i].point[1]; 1.55 + var textList = aList[i].pointList; 1.56 + var invoker = 1.57 + new moveCaretToDOMPoint(textAcc, node, nodeOffset, textOffset, 1.58 + ((i == 0) ? aFocusNode : null), 1.59 + testCaretOffsets.bind(null, textList)) 1.60 + gQueue.push(invoker); 1.61 + } 1.62 + } 1.63 + 1.64 + /** 1.65 + * Do tests. 1.66 + */ 1.67 + var gQueue = null; 1.68 + 1.69 + //gA11yEventDumpID = "eventdump"; // debug stuff 1.70 + //gA11yEventDumpToConsole = true; 1.71 + 1.72 + function doTests() 1.73 + { 1.74 + turnCaretBrowsing(true); 1.75 + 1.76 + // test caret offsets 1.77 + testCaretOffset(document, 16); 1.78 + testCaretOffset("textbox", -1); 1.79 + testCaretOffset("textarea", -1); 1.80 + testCaretOffset("p", -1); 1.81 + 1.82 + // test caret move events and caret offsets 1.83 + gQueue = new eventQueue(); 1.84 + 1.85 + gQueue.push(new setCaretOffset("textbox", 1, "textbox")); 1.86 + gQueue.push(new setCaretOffset("link", 1, "link")); 1.87 + gQueue.push(new setCaretOffset("heading", 1, document)); 1.88 + 1.89 + // a*b*c 1.90 + var p2Doc = getNode("p2_container").contentDocument; 1.91 + var traversalList = [ 1.92 + { // before 'a' 1.93 + DOMPoint: [ getNode("p2", p2Doc).firstChild, 0 ], 1.94 + point: [ getNode("p2", p2Doc), 0 ], 1.95 + pointList: [ [ p2Doc, 0 ] ] 1.96 + }, 1.97 + { // after 'a' (before anchor) 1.98 + DOMPoint: [ getNode("p2", p2Doc).firstChild, 1 ], 1.99 + point: [ getNode("p2", p2Doc), 1 ], 1.100 + pointList: [ [ p2Doc, 0 ] ] 1.101 + }, 1.102 + { // before 'b' (inside anchor) 1.103 + DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 0 ], 1.104 + point: [ getNode("p2_a", p2Doc), 0 ], 1.105 + pointList: [ 1.106 + [ getNode("p2", p2Doc), 1 ], 1.107 + [ p2Doc, 0 ] 1.108 + ] 1.109 + }, 1.110 + { // after 'b' (inside anchor) 1.111 + DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 1 ], 1.112 + point: [ getNode("p2_a", p2Doc), 1 ], 1.113 + pointList: [ 1.114 + [ getNode("p2", p2Doc), 1 ] , 1.115 + [ p2Doc, 0 ] 1.116 + ] 1.117 + }, 1.118 + { // before 'c' (after anchor) 1.119 + DOMPoint: [ getNode("p2", p2Doc).lastChild, 0 ], 1.120 + point: [ getNode("p2", p2Doc), 2 ], 1.121 + pointList: [ [ p2Doc, 0 ] ] 1.122 + }, 1.123 + { // after 'c' 1.124 + DOMPoint: [ getNode("p2", p2Doc).lastChild, 1 ], 1.125 + point: [ getNode("p2", p2Doc), 3 ], 1.126 + pointList: [ [ p2Doc, 0 ] ] 1.127 + } 1.128 + ]; 1.129 + queueTraversalList(traversalList, getNode("p2", p2Doc)); 1.130 + 1.131 + gQueue.onFinish = function() 1.132 + { 1.133 + turnCaretBrowsing(false); 1.134 + } 1.135 + 1.136 + gQueue.invoke(); // Will call SimpleTest.finish(); 1.137 + } 1.138 + 1.139 + SimpleTest.waitForExplicitFinish(); 1.140 + addA11yLoadEvent(doTests); 1.141 + </script> 1.142 +</head> 1.143 + 1.144 +<body> 1.145 + 1.146 + <a target="_blank" 1.147 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=448744" 1.148 + title="caretOffset should return -1 if the system caret is not currently with in that particular object"> 1.149 + Bug 448744 1.150 + </a> 1.151 + <a target="_blank" 1.152 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=524115" 1.153 + title="HyperText accessible should get focus when the caret is positioned inside of it, text is changed or copied into clipboard by ATs"> 1.154 + Bug 524115 1.155 + </a> 1.156 + <a target="_blank" 1.157 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=546068" 1.158 + title="Position is not being updated when atk_text_set_caret_offset is used"> 1.159 + Bug 546068 1.160 + </a> 1.161 + <a target="_blank" 1.162 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=672717" 1.163 + title="Broken caret when moving into/out of embedded objects with right arrow"> 1.164 + Bug 672717 1.165 + </a> 1.166 + <a target="_blank" 1.167 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=725581" 1.168 + title="caretOffset for textarea should be -1 when textarea doesn't have a focus"> 1.169 + Bug 725581 1.170 + </a> 1.171 + <p id="display"></p> 1.172 + <div id="content" style="display: none"></div> 1.173 + <pre id="test"> 1.174 + </pre> 1.175 + 1.176 + <input id="textbox" value="hello"/> 1.177 + <textarea id="textarea">text<br>text</textarea> 1.178 + <p id="p" contentEditable="true"><span>text</span><br/>text</p> 1.179 + <a id="link" href="about:">about mozilla</a> 1.180 + <h5 id="heading">heading</h5> 1.181 + <iframe id="p2_container" 1.182 + src="data:text/html,<p id='p2' contentEditable='true'>a<a id='p2_a' href='mozilla.org'>b</a>c</p>"></iframe> 1.183 + 1.184 + <div id="eventdump"></div> 1.185 +</body> 1.186 +</html>