accessible/tests/mochitest/textcaret/test_general.html

changeset 0
6474c204b198
     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>

mercurial