1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/events/test_caretmove.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,140 @@ 1.4 +<html> 1.5 + 1.6 +<head> 1.7 + <title>Accessible caret move events 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 + <script type="application/javascript" 1.15 + src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> 1.16 + 1.17 + <script type="application/javascript" 1.18 + src="../common.js"></script> 1.19 + <script type="application/javascript" 1.20 + src="../events.js"></script> 1.21 + 1.22 + <script type="application/javascript"> 1.23 + /** 1.24 + * Click checker. 1.25 + */ 1.26 + function clickChecker(aCaretOffset, aID, aExtraNodeOrID, aExtraCaretOffset) 1.27 + { 1.28 + this.__proto__ = new caretMoveChecker(aCaretOffset, aID); 1.29 + 1.30 + this.extraNode = getNode(aExtraNodeOrID); 1.31 + 1.32 + this.check = function clickChecker_check(aEvent) 1.33 + { 1.34 + this.__proto__.check(aEvent); 1.35 + 1.36 + if (this.extraNode) { 1.37 + var acc = getAccessible(this.extraNode, [nsIAccessibleText]); 1.38 + is(acc.caretOffset, aExtraCaretOffset, 1.39 + "Wrong caret offset for " + aExtraNodeOrID); 1.40 + } 1.41 + } 1.42 + } 1.43 + 1.44 + /** 1.45 + * Do tests. 1.46 + */ 1.47 + var gQueue = null; 1.48 + 1.49 + // gA11yEventDumpID = "eventdump"; // debug stuff 1.50 + //gA11yEventDumpToConsole = true; 1.51 + 1.52 + function doTests() 1.53 + { 1.54 + // test caret move events and caret offsets 1.55 + gQueue = new eventQueue(); 1.56 + 1.57 + var id = "textbox"; 1.58 + gQueue.push(new synthFocus(id, new caretMoveChecker(5, id))); 1.59 + gQueue.push(new synthSelectAll(id, new caretMoveChecker(5, id))); 1.60 + gQueue.push(new synthClick(id, new caretMoveChecker(0, id))); 1.61 + gQueue.push(new synthRightKey(id, new caretMoveChecker(1, id))); 1.62 + 1.63 + id = "textarea"; 1.64 + gQueue.push(new synthClick(id, new caretMoveChecker(0, id))); 1.65 + gQueue.push(new synthRightKey(id, new caretMoveChecker(1, id))); 1.66 + gQueue.push(new synthDownKey(id, new caretMoveChecker(12, id))); 1.67 + 1.68 + id = "textarea_wrapped"; 1.69 + gQueue.push(new setCaretOffset(id, 4, id)); 1.70 + gQueue.push(new synthLeftKey(id, new caretMoveChecker(4, id))); 1.71 + 1.72 + id = "p"; 1.73 + gQueue.push(new synthClick(id, new caretMoveChecker(0, id))); 1.74 + gQueue.push(new synthRightKey(id, new caretMoveChecker(1, id))); 1.75 + gQueue.push(new synthDownKey(id, new caretMoveChecker(6, id))); 1.76 + 1.77 + id = "p1_in_div"; 1.78 + gQueue.push(new synthClick(id, new clickChecker(0, id, "p2_in_div", -1))); 1.79 + 1.80 + id = "p"; 1.81 + gQueue.push(new synthShiftTab(id, new caretMoveChecker(0, id))); 1.82 + id = "textarea"; 1.83 + gQueue.push(new synthShiftTab(id, new caretMoveChecker(12, id))); 1.84 + id = "p"; 1.85 + gQueue.push(new synthTab(id, new caretMoveChecker(0, id))); 1.86 + 1.87 + // Set caret after a child of span element, i.e. after 'text' text. 1.88 + gQueue.push(new moveCaretToDOMPoint("test1", getNode("test1_span"), 1, 1.89 + 4, "test1")); 1.90 + gQueue.push(new moveCaretToDOMPoint("test2", getNode("test2_span"), 1, 1.91 + 4, "test2")); 1.92 + 1.93 + // empty text element 1.94 + gQueue.push(new moveCaretToDOMPoint("test3", getNode("test3"), 0, 1.95 + 0, "test3")); 1.96 + gQueue.push(new moveCaretToDOMPoint("test4", getNode("test4_span"), 0, 1.97 + 0, "test4")); 1.98 + 1.99 + gQueue.invoke(); // Will call SimpleTest.finish(); 1.100 + } 1.101 + 1.102 + SimpleTest.waitForExplicitFinish(); 1.103 + addA11yLoadEvent(doTests); 1.104 + </script> 1.105 +</head> 1.106 + 1.107 +<body> 1.108 + 1.109 + <a target="_blank" 1.110 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=454377" 1.111 + title="Accessible caret move events testing"> 1.112 + Bug 454377 1.113 + </a> 1.114 + <a target="_blank" 1.115 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=567571" 1.116 + title="caret-moved events missing at the end of a wrapped line of text"> 1.117 + Bug 567571 1.118 + </a> 1.119 + <a target="_blank" 1.120 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=824901" 1.121 + title="HyperTextAccessible::DOMPointToHypertextOffset fails for node and offset equal to node child count"> 1.122 + Bug 824901 1.123 + </a> 1.124 + <p id="display"></p> 1.125 + <div id="content" style="display: none"></div> 1.126 + <pre id="test"> 1.127 + </pre> 1.128 + 1.129 + <input id="textbox" value="hello"/> 1.130 + <textarea id="textarea">text<br>text</textarea> 1.131 + <p id="p" contentEditable="true"><span>text</span><br/>text</p> 1.132 + <div id="div" contentEditable="true"><p id="p1_in_div">text</p><p id="p2_in_div">text</p></div> 1.133 + 1.134 + <p contentEditable="true" id="test1"><span id="test1_span">text</span>ohoho</p> 1.135 + <p contentEditable="true" id="test2"><span><span id="test2_span">text</span></span>ohoho</p> 1.136 + <p contentEditable="true" id="test3"></p> 1.137 + <p contentEditable="true" id="test4"><span id="test4_span"></span></p> 1.138 + 1.139 + <textarea id="textarea_wrapped" cols="5">hey friend</textarea> 1.140 + 1.141 + <div id="eventdump"></div> 1.142 +</body> 1.143 +</html>