accessible/tests/mochitest/textcaret/test_general.html

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 <html>
     3 <head>
     4   <title>Text accessible caret testing</title>
     6   <link rel="stylesheet" type="text/css"
     7         href="chrome://mochikit/content/tests/SimpleTest/test.css" />
     9   <script type="application/javascript"
    10           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    12   <script type="application/javascript"
    13           src="../common.js"></script>
    14   <script type="application/javascript"
    15           src="../events.js"></script>
    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     }
    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     }
    38     function testCaretOffsets(aList)
    39     {
    40       for (var i = 0; i < aList.length; i++)
    41         testCaretOffset(aList[0][0], aList[0][1]);
    42     }
    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];
    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     }
    61     /**
    62      * Do tests.
    63      */
    64     var gQueue = null;
    66     //gA11yEventDumpID = "eventdump"; // debug stuff
    67     //gA11yEventDumpToConsole = true;
    69     function doTests()
    70     {
    71       turnCaretBrowsing(true);
    73       // test caret offsets
    74       testCaretOffset(document, 16);
    75       testCaretOffset("textbox", -1);
    76       testCaretOffset("textarea", -1);
    77       testCaretOffset("p", -1);
    79       // test caret move events and caret offsets
    80       gQueue = new eventQueue();
    82       gQueue.push(new setCaretOffset("textbox", 1, "textbox"));
    83       gQueue.push(new setCaretOffset("link", 1, "link"));
    84       gQueue.push(new setCaretOffset("heading", 1, document));
    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));
   128       gQueue.onFinish = function()
   129       {
   130         turnCaretBrowsing(false);
   131       }
   133       gQueue.invoke(); // Will call SimpleTest.finish();
   134     }
   136     SimpleTest.waitForExplicitFinish();
   137     addA11yLoadEvent(doTests);
   138   </script>
   139 </head>
   141 <body>
   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>
   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>
   181   <div id="eventdump"></div>
   182 </body>
   183 </html>

mercurial