tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_caretmove.html (5190B)


      1 <html>
      2 
      3 <head>
      4  <title>Accessible caret move events testing</title>
      5 
      6  <link rel="stylesheet" type="text/css"
      7        href="chrome://mochikit/content/tests/SimpleTest/test.css" />
      8 
      9  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
     10  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.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     * Click checker.
     20     */
     21    function clickChecker(aCaretOffset, aIsSelectionCollapsed, aID, aExtraNodeOrID, aExtraCaretOffset) {
     22      this.__proto__ = new caretMoveChecker(aCaretOffset, aIsSelectionCollapsed, aID);
     23 
     24      this.extraNode = getNode(aExtraNodeOrID);
     25 
     26      this.check = function clickChecker_check(aEvent) {
     27        this.__proto__.check(aEvent);
     28 
     29        if (this.extraNode) {
     30          var acc = getAccessible(this.extraNode, [nsIAccessibleText]);
     31          is(acc.caretOffset, aExtraCaretOffset,
     32             "Wrong caret offset for " + aExtraNodeOrID);
     33        }
     34      };
     35    }
     36 
     37    /**
     38     * Do tests.
     39     */
     40    var gQueue = null;
     41 
     42    // gA11yEventDumpToConsole = true;
     43 
     44    function doTests() {
     45      // test caret move events and caret offsets
     46      gQueue = new eventQueue();
     47 
     48      var id = "textbox";
     49      gQueue.push(new synthFocus(id, new caretMoveChecker(5, true, id)));
     50      gQueue.push(new synthSelectAll(id, new caretMoveChecker(5, false, id)));
     51      gQueue.push(new synthClick(id, new caretMoveChecker(0, true, id)));
     52      gQueue.push(new synthRightKey(id, new caretMoveChecker(1, true, id)));
     53 
     54      if (!MAC) {
     55        gQueue.push(new synthSelectAll(id, new caretMoveChecker(5, false, id)));
     56        gQueue.push(new synthHomeKey(id, new caretMoveChecker(0, true, id)));
     57        gQueue.push(new synthRightKey(id, new caretMoveChecker(1, true, id)));
     58      }
     59      else {
     60        todo(false, "Make these tests pass on OSX (bug 650294)");
     61      }
     62 
     63      id = "textarea";
     64      gQueue.push(new synthClick(id, new caretMoveChecker(0, true, id)));
     65      gQueue.push(new synthRightKey(id, new caretMoveChecker(1, true, id)));
     66      gQueue.push(new synthDownKey(id, new caretMoveChecker(12, true, id)));
     67 
     68      id = "textarea_wrapped";
     69      gQueue.push(new setCaretOffset(id, 4, id));
     70      gQueue.push(new synthLeftKey(id, new caretMoveChecker(4, true, id)));
     71 
     72      id = "p";
     73      gQueue.push(new synthClick(id, new caretMoveChecker(0, true, id)));
     74      gQueue.push(new synthRightKey(id, new caretMoveChecker(1, true, id)));
     75      gQueue.push(new synthDownKey(id, new caretMoveChecker(6, true, id)));
     76 
     77      id = "p1_in_div";
     78      gQueue.push(new synthClick(id, new clickChecker(0, true, id, "p2_in_div", -1)));
     79 
     80      id = "p";
     81      gQueue.push(new synthShiftTab(id, new caretMoveChecker(0, true, id)));
     82      id = "textarea";
     83      gQueue.push(new synthShiftTab(id, new caretMoveChecker(12, true, id)));
     84      id = "p";
     85      gQueue.push(new synthTab(id, new caretMoveChecker(0, true, id)));
     86 
     87      // Set caret after a child of span element, i.e. after 'text' text.
     88      gQueue.push(new moveCaretToDOMPoint("test1", getNode("test1_span"), 1,
     89                                           4, "test1"));
     90      gQueue.push(new moveCaretToDOMPoint("test2", getNode("test2_span"), 1,
     91                                           4, "test2"));
     92 
     93      // empty text element
     94      gQueue.push(new moveCaretToDOMPoint("test3", getNode("test3"), 0,
     95                                           0, "test3"));
     96      gQueue.push(new moveCaretToDOMPoint("test4", getNode("test4_span"), 0,
     97                                           0, "test4"));
     98 
     99      gQueue.invoke(); // Will call SimpleTest.finish();
    100    }
    101 
    102    SimpleTest.waitForExplicitFinish();
    103    addA11yLoadEvent(doTests);
    104  </script>
    105 </head>
    106 
    107 <body>
    108 
    109  <a target="_blank"
    110     href="https://bugzilla.mozilla.org/show_bug.cgi?id=454377"
    111     title="Accessible caret move events testing">
    112    Bug 454377
    113  </a>
    114  <a target="_blank"
    115     href="https://bugzilla.mozilla.org/show_bug.cgi?id=567571"
    116     title="caret-moved events missing at the end of a wrapped line of text">
    117    Bug 567571
    118  </a>
    119  <a target="_blank"
    120     href="https://bugzilla.mozilla.org/show_bug.cgi?id=824901"
    121     title="HyperTextAccessible::DOMPointToHypertextOffset fails for node and offset equal to node child count">
    122    Bug 824901
    123  </a>
    124  <p id="display"></p>
    125  <div id="content" style="display: none"></div>
    126  <pre id="test">
    127  </pre>
    128 
    129  <input id="textbox" value="hello"/>
    130 
    131  <textarea id="textarea">text<br>text</textarea>
    132  <p id="p" contentEditable="true"><span>text</span><br/>text</p>
    133  <div id="div" contentEditable="true"><p id="p1_in_div">text</p><p id="p2_in_div">text</p></div>
    134 
    135  <p contentEditable="true" id="test1"><span id="test1_span">text</span>ohoho</p>
    136  <p contentEditable="true" id="test2"><span><span id="test2_span">text</span></span>ohoho</p>
    137  <p contentEditable="true" id="test3"></p>
    138  <p contentEditable="true" id="test4"><span id="test4_span"></span></p>
    139 
    140  <textarea id="textarea_wrapped" cols="5">hey friend</textarea>
    141 </body>
    142 </html>