accessible/tests/mochitest/textcaret/test_general.html

branch
TOR_BUG_9701
changeset 8
97036ab72558
equal deleted inserted replaced
-1:000000000000 0:7d990d6a2605
1 <html>
2
3 <head>
4 <title>Text accessible caret testing</title>
5
6 <link rel="stylesheet" type="text/css"
7 href="chrome://mochikit/content/tests/SimpleTest/test.css" />
8
9 <script type="application/javascript"
10 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
11
12 <script type="application/javascript"
13 src="../common.js"></script>
14 <script type="application/javascript"
15 src="../events.js"></script>
16
17 <script type="application/javascript">
18 /**
19 * Turn on/off the caret browsing mode.
20 */
21 function turnCaretBrowsing(aIsOn)
22 {
23 var prefs = Components.classes["@mozilla.org/preferences-service;1"].
24 getService(Components.interfaces.nsIPrefBranch);
25 prefs.setBoolPref("accessibility.browsewithcaret", aIsOn);
26 }
27
28 /**
29 * Test caret offset for the given accessible.
30 */
31 function testCaretOffset(aID, aCaretOffset)
32 {
33 var acc = getAccessible(aID, [nsIAccessibleText]);
34 is(acc.caretOffset, aCaretOffset,
35 "Wrong caret offset for " + aID);
36 }
37
38 function testCaretOffsets(aList)
39 {
40 for (var i = 0; i < aList.length; i++)
41 testCaretOffset(aList[0][0], aList[0][1]);
42 }
43
44 function queueTraversalList(aList, aFocusNode)
45 {
46 for (var i = 0 ; i < aList.length; i++) {
47 var node = aList[i].DOMPoint[0];
48 var nodeOffset = aList[i].DOMPoint[1];
49
50 var textAcc = aList[i].point[0];
51 var textOffset = aList[i].point[1];
52 var textList = aList[i].pointList;
53 var invoker =
54 new moveCaretToDOMPoint(textAcc, node, nodeOffset, textOffset,
55 ((i == 0) ? aFocusNode : null),
56 testCaretOffsets.bind(null, textList))
57 gQueue.push(invoker);
58 }
59 }
60
61 /**
62 * Do tests.
63 */
64 var gQueue = null;
65
66 //gA11yEventDumpID = "eventdump"; // debug stuff
67 //gA11yEventDumpToConsole = true;
68
69 function doTests()
70 {
71 turnCaretBrowsing(true);
72
73 // test caret offsets
74 testCaretOffset(document, 16);
75 testCaretOffset("textbox", -1);
76 testCaretOffset("textarea", -1);
77 testCaretOffset("p", -1);
78
79 // test caret move events and caret offsets
80 gQueue = new eventQueue();
81
82 gQueue.push(new setCaretOffset("textbox", 1, "textbox"));
83 gQueue.push(new setCaretOffset("link", 1, "link"));
84 gQueue.push(new setCaretOffset("heading", 1, document));
85
86 // a*b*c
87 var p2Doc = getNode("p2_container").contentDocument;
88 var traversalList = [
89 { // before 'a'
90 DOMPoint: [ getNode("p2", p2Doc).firstChild, 0 ],
91 point: [ getNode("p2", p2Doc), 0 ],
92 pointList: [ [ p2Doc, 0 ] ]
93 },
94 { // after 'a' (before anchor)
95 DOMPoint: [ getNode("p2", p2Doc).firstChild, 1 ],
96 point: [ getNode("p2", p2Doc), 1 ],
97 pointList: [ [ p2Doc, 0 ] ]
98 },
99 { // before 'b' (inside anchor)
100 DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 0 ],
101 point: [ getNode("p2_a", p2Doc), 0 ],
102 pointList: [
103 [ getNode("p2", p2Doc), 1 ],
104 [ p2Doc, 0 ]
105 ]
106 },
107 { // after 'b' (inside anchor)
108 DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 1 ],
109 point: [ getNode("p2_a", p2Doc), 1 ],
110 pointList: [
111 [ getNode("p2", p2Doc), 1 ] ,
112 [ p2Doc, 0 ]
113 ]
114 },
115 { // before 'c' (after anchor)
116 DOMPoint: [ getNode("p2", p2Doc).lastChild, 0 ],
117 point: [ getNode("p2", p2Doc), 2 ],
118 pointList: [ [ p2Doc, 0 ] ]
119 },
120 { // after 'c'
121 DOMPoint: [ getNode("p2", p2Doc).lastChild, 1 ],
122 point: [ getNode("p2", p2Doc), 3 ],
123 pointList: [ [ p2Doc, 0 ] ]
124 }
125 ];
126 queueTraversalList(traversalList, getNode("p2", p2Doc));
127
128 gQueue.onFinish = function()
129 {
130 turnCaretBrowsing(false);
131 }
132
133 gQueue.invoke(); // Will call SimpleTest.finish();
134 }
135
136 SimpleTest.waitForExplicitFinish();
137 addA11yLoadEvent(doTests);
138 </script>
139 </head>
140
141 <body>
142
143 <a target="_blank"
144 href="https://bugzilla.mozilla.org/show_bug.cgi?id=448744"
145 title="caretOffset should return -1 if the system caret is not currently with in that particular object">
146 Bug 448744
147 </a>
148 <a target="_blank"
149 href="https://bugzilla.mozilla.org/show_bug.cgi?id=524115"
150 title="HyperText accessible should get focus when the caret is positioned inside of it, text is changed or copied into clipboard by ATs">
151 Bug 524115
152 </a>
153 <a target="_blank"
154 href="https://bugzilla.mozilla.org/show_bug.cgi?id=546068"
155 title="Position is not being updated when atk_text_set_caret_offset is used">
156 Bug 546068
157 </a>
158 <a target="_blank"
159 href="https://bugzilla.mozilla.org/show_bug.cgi?id=672717"
160 title="Broken caret when moving into/out of embedded objects with right arrow">
161 Bug 672717
162 </a>
163 <a target="_blank"
164 href="https://bugzilla.mozilla.org/show_bug.cgi?id=725581"
165 title="caretOffset for textarea should be -1 when textarea doesn't have a focus">
166 Bug 725581
167 </a>
168 <p id="display"></p>
169 <div id="content" style="display: none"></div>
170 <pre id="test">
171 </pre>
172
173 <input id="textbox" value="hello"/>
174 <textarea id="textarea">text<br>text</textarea>
175 <p id="p" contentEditable="true"><span>text</span><br/>text</p>
176 <a id="link" href="about:">about mozilla</a>
177 <h5 id="heading">heading</h5>
178 <iframe id="p2_container"
179 src="data:text/html,<p id='p2' contentEditable='true'>a<a id='p2_a' href='mozilla.org'>b</a>c</p>"></iframe>
180
181 <div id="eventdump"></div>
182 </body>
183 </html>

mercurial