accessible/tests/mochitest/text/test_wordboundary.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 <!DOCTYPE html>
     2 <html>
     3 <head>
     4   <title>Word boundary text tests</title>
     5   <link rel="stylesheet" type="text/css"
     6         href="chrome://mochikit/content/tests/SimpleTest/test.css" />
     8   <script type="application/javascript"
     9           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    10   <script type="application/javascript"
    11           src="../common.js"></script>
    12   <script type="application/javascript"
    13           src="../text.js"></script>
    15   <script type="application/javascript">
    16     function doTest()
    17     {
    18       // "hello"
    19       // __h__e__l__l__o__
    20       //  0  1  2  3  4  5
    21       var ids = [ "i1", "d1", "e1", "t1" ];
    22       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
    23                            [ [ 0, 5, "", 0, 0 ] ]);
    24       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
    25                            [ [ 0, 5, "", 0, 0 ] ]);
    27       testTextAtOffset(ids, BOUNDARY_WORD_START,
    28                        [ [ 0, 5, "hello", 0, 5 ] ]);
    29       testTextAtOffset(ids, BOUNDARY_WORD_END,
    30                        [ [ 0, 5, "hello", 0, 5 ] ]);
    32       testTextAfterOffset(ids, BOUNDARY_WORD_START,
    33                           [ [ 0, 5, "", 5, 5 ] ]);
    34       testTextAfterOffset(ids, BOUNDARY_WORD_END,
    35                           [ [ 0, 5, "", 5, 5 ] ]);
    37       // "hello "
    38       // __h__e__l__l__o__ __
    39       //  0  1  2  3  4  5  6
    40       var ids = [ "i2", "d2", "e2", "t2" ];
    41       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
    42                            [ [ 0, 6, "", 0, 0 ] ]);
    43       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
    44                            [ [ 0, 5, "", 0, 0 ],
    45                              [ 6, 6, "hello", 0, 5,
    46                                [ [6, "e2", kTodo, kOk, kTodo ] ]
    47                              ]
    48                            ]);
    50       testTextAtOffset(ids, BOUNDARY_WORD_START,
    51                        [ [ 0, 6, "hello ", 0, 6 ] ]);
    52       testTextAtOffset(ids, BOUNDARY_WORD_END,
    53                        [ [ 0, 4, "hello", 0, 5 ],
    54                          [ 5, 6, " ", 5, 6,
    55                            [ [ 5, "e2", kTodo, kTodo, kOk ],
    56                              [ 6, "e2", kTodo, kTodo, kOk ] ]
    57                          ]
    58                        ]);
    60       testTextAfterOffset(ids, BOUNDARY_WORD_START,
    61                           [ [ 0, 6, "", 6, 6 ] ]);
    62       testTextAfterOffset(ids, BOUNDARY_WORD_END,
    63                           [ [ 0, 5, " ", 5, 6,
    64                               [ [ 5, "e2", kTodo, kTodo, kOk ] ]
    65                             ],
    66                             [ 6, 6, "", 6, 6 ]
    67                           ]);
    69       // "hello all"
    70       // __h__e__l__l__o__ __a__l__l__
    71       //  0  1  2  3  4  5  6  7  8  9
    72       ids = [ "i6", "d6", "e6", "t6" ];
    73       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
    74                            [ [ 0, 5, "", 0, 0 ],
    75                              [ 6, 9, "hello ", 0, 6 ]]);
    76       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
    77                            [ [ 0, 5, "", 0, 0 ],
    78                              [ 6, 9, "hello", 0, 5 ] ]);
    80       testTextAtOffset(ids, BOUNDARY_WORD_START,
    81                        [ [ 0, 5, "hello ", 0, 6 ],
    82                          [ 6, 9, "all", 6, 9 ] ]);
    83       testTextAtOffset(ids, BOUNDARY_WORD_END,
    84                        [ [ 0, 4, "hello", 0, 5 ],
    85                          [ 5, 9, " all", 5, 9 ] ]);
    87       testTextAfterOffset(ids, BOUNDARY_WORD_START,
    88                           [ [ 0, 5, "all", 6, 9 ],
    89                             [ 6, 9, "", 9, 9 ] ]);
    90       testTextAfterOffset(ids, BOUNDARY_WORD_END,
    91                           [ [ 0, 5, " all", 5, 9 ],
    92                             [ 6, 9, "", 9, 9 ] ]);
    94       // "hello my friend"
    95       // __h__e__l__l__o__ __m__y__ __f__r__i__e__n__d__
    96       //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
    97       ids = [ "i7", "d7", "e7", "t7" ];
    98       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
    99                            [ [ 0, 5, "", 0, 0 ],
   100                              [ 6, 8, "hello ", 0, 6 ],
   101                              [ 9, 15, "my ", 6, 9 ] ]);
   102       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
   103                            [ [ 0, 5, "", 0, 0 ],
   104                              [ 6, 8, "hello", 0, 5 ],
   105                              [ 9, 15, " my", 5, 8 ] ]);
   107       testTextAtOffset(ids, BOUNDARY_WORD_START,
   108                        [ [ 0, 5, "hello ", 0, 6 ],
   109                          [ 6, 8, "my ", 6, 9 ],
   110                          [ 9, 15, "friend", 9, 15] ]);
   111       testTextAtOffset(ids, BOUNDARY_WORD_END,
   112                        [ [ 0, 4, "hello", 0, 5 ],
   113                          [ 5, 7, " my", 5, 8 ],
   114                          [ 8, 15, " friend", 8, 15] ]);
   116       testTextAfterOffset(ids, BOUNDARY_WORD_START,
   117                           [ [ 0, 5, "my ", 6, 9 ],
   118                             [ 6, 8, "friend", 9, 15 ],
   119                             [ 9, 15, "", 15, 15 ] ]);
   120       testTextAfterOffset(ids, BOUNDARY_WORD_END,
   121                           [ [ 0, 5, " my", 5, 8 ],
   122                             [ 6, 8, " friend", 8, 15 ],
   123                             [ 9, 15, "", 15, 15 ] ]);
   125       // "Brave Sir  Robin   ran"
   126       // __B__r__a__v__e__ __S__i__r__ __ __R__o__b__i__n__ __ __ __r__a__n__
   127       //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
   128       ids = [ "i8", "d8", "e8", "t8" ];
   129       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
   130                            [ [ 0, 5, "", 0, 0 ],
   131                              [ 6, 10, "Brave ", 0, 6 ],
   132                              [ 11, 18, "Sir  ", 6, 11 ],
   133                              [ 19, 22, "Robin   ", 11, 19 ] ]);
   134       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
   135                            [ [ 0, 5, "", 0, 0 ],
   136                              [ 6, 9, "Brave", 0, 5 ],
   137                              [ 10, 16, " Sir", 5, 9 ],
   138                              [ 17, 22, "  Robin", 9, 16 ] ]);
   140       testTextAtOffset(ids, BOUNDARY_WORD_START,
   141                        [ [ 0, 5, "Brave ", 0, 6 ],
   142                          [ 6, 10, "Sir  ", 6, 11 ],
   143                          [ 11, 18, "Robin   ", 11, 19 ],
   144                          [ 19, 22, "ran", 19, 22 ] ]);
   145       testTextAtOffset(ids, BOUNDARY_WORD_END,
   146                        [ [ 0, 4, "Brave", 0, 5 ],
   147                          [ 5, 8, " Sir", 5, 9 ],
   148                          [ 9, 15, "  Robin", 9, 16 ],
   149                          [ 16, 22, "   ran", 16, 22 ] ]);
   151       testTextAfterOffset(ids, BOUNDARY_WORD_START,
   152                           [ [ 0, 5, "Sir  ", 6, 11 ],
   153                             [ 6, 10, "Robin   ", 11, 19 ],
   154                             [ 11, 18, "ran", 19, 22 ],
   155                             [ 19, 22, "", 22, 22 ] ]);
   156       testTextAfterOffset(ids, BOUNDARY_WORD_END,
   157                           [ [ 0, 5, " Sir", 5, 9 ],
   158                             [ 6, 9, "  Robin", 9, 16 ],
   159                             [ 10, 16, "   ran", 16, 22 ],
   160                             [ 17, 22, "", 22, 22 ] ]);
   162       // 'oneword
   163       // '
   164       // 'two words
   165       // '
   166       // __o__n__e__w__o__r__d__\n
   167       //  0  1  2  3  4  5  6  7
   168       // __\n
   169       //  8
   170       // __t__w__o__ __w__o__r__d__s__\n__
   171       //  9 10 11 12 13 14 15 16 17 18  19
   173       ids = ["ml_div1", "ml_divbr1", "ml_ediv1", "ml_edivbr1", "ml_t1"];
   174       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
   175                            [ [ 0, 8, "", 0, 0 ],
   176                              [ 9, 12, "oneword\n\n", 0, 9 ],
   177                              [ 13, 19, "two ", 9, 13 ] ]);
   178       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
   179                            [ [ 0, 7, "", 0, 0 ],
   180                              [ 8, 12, "oneword", 0, 7,
   181                                [ [ 8, "ml_divbr1", kTodo, kOk, kTodo ],
   182                                  [ 8, "ml_edivbr1", kTodo, kOk, kTodo ],
   183                                  [ 9, "ml_divbr1", kTodo, kOk, kTodo ],
   184                                  [ 9, "ml_edivbr1", kTodo, kOk, kTodo ] ] ],
   185                              [ 13, 18, "\n\ntwo", 7, 12 ],
   186                              [ 19, 19, " words", 12, 18,
   187                                [ [ 19, "ml_divbr1", kTodo, kTodo, kTodo, ],
   188                                  [ 19, "ml_edivbr1", kTodo, kTodo, kTodo, ] ] ]
   189                            ] );
   191       testTextAtOffset(ids, BOUNDARY_WORD_START,
   192                        [ [ 0, 8, "oneword\n\n", 0, 9,
   193                            [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ],
   194                              [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ],
   195                              [ 8, "ml_divbr1", kTodo, kTodo, kTodo ],
   196                              [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ],
   197                          [ 9, 12, "two ", 9, 13 ],
   198                          [ 13, 19, "words\n", 13, 19 ] ]);
   199       testTextAtOffset(ids, BOUNDARY_WORD_END,
   200                        [ [ 0, 6, "oneword", 0, 7 ],
   201                          [ 7, 11, "\n\ntwo", 7, 12 ],
   202                          [ 12, 17, " words", 12, 18 ],
   203                          [ 18, 19, "\n", 18, 19,
   204                            [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ],
   205                              [ 18, "ml_edivbr1", kTodo, kTodo, kOk ],
   206                              [ 19, "ml_divbr1", kTodo, kTodo, kOk ],
   207                              [ 19, "ml_edivbr1", kTodo, kTodo, kOk ] ] ] ]);
   209       testTextAfterOffset(ids, BOUNDARY_WORD_START,
   210                            [ [ 0, 8, "two ", 9, 13,
   211                                [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ],
   212                                  [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ],
   213                                  [ 8, "ml_divbr1", kTodo, kTodo, kTodo ],
   214                                  [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ],
   215                              [ 9, 12, "words\n", 13, 19 ],
   216                              [ 13, 19, "", 19, 19 ] ]);
   217       testTextAfterOffset(ids, BOUNDARY_WORD_END,
   218                            [ [ 0, 7, "\n\ntwo", 7, 12 ],
   219                              [ 8, 12, " words", 12, 18 ],
   220                              [ 13, 18, "\n", 18, 19,
   221                                [ [ 18, "ml_divbr1", kTodo, kTodo, kOk ],
   222                                  [ 18, "ml_edivbr1", kTodo, kTodo, kOk ] ] ],
   223                              [ 19, 19, "", 19, 19 ] ]);
   225       // a <a href="#">b</a>
   226       // a *
   227       testTextBeforeOffset("cntr_1", BOUNDARY_WORD_START,
   228                            [ [ 0, 1, "", 0, 0 ],
   229                              [ 2, 3, "a ", 0, 2 ] ]);
   231       testTextAtOffset("cntr_1", BOUNDARY_WORD_START,
   232                        [ [ 0, 1, "a ", 0, 2 ],
   233                          [ 2, 3, kEmbedChar, 2, 3 ] ]);
   234       testTextAfterOffset("cntr_1", BOUNDARY_WORD_START,
   235                            [ [ 0, 1, kEmbedChar, 2, 3 ],
   236                              [ 2, 3, "", 3, 3 ] ]);
   238       SimpleTest.finish();
   239     }
   241     SimpleTest.waitForExplicitFinish();
   242     addA11yLoadEvent(doTest);
   243   </script>
   244 </head>
   245 <body>
   247   <p id="display"></p>
   248   <div id="content" style="display: none"></div>
   249   <pre id="test">
   250   </pre>
   252   <input id="i1" value="hello"/>
   253   <div id="d1">hello</div>
   254   <div id="e1" contenteditable="true">hello</div>
   255   <textarea id="t1">hello</textarea>
   257   <input id="i2" value="hello "/>
   258   <pre><div id="d2">hello </div></pre>
   259   <div id="e2" contenteditable="true">hello </div>
   260   <textarea id="t2">hello </textarea>
   262   <input id="i6" value="hello all"/>
   263   <div id="d6">hello all</div>
   264   <div id="e6" contenteditable="true">hello all</div>
   265   <textarea id="t6">hello all</textarea>
   267   <input id="i7" value="hello my friend"/>
   268   <div id="d7">hello my friend</div>
   269   <div id="e7" contenteditable="true">hello my friend</div>
   270   <textarea id="t7">hello my friend</textarea>
   272   <input id="i8" value="Brave Sir  Robin   ran"/>
   273   <pre>
   274     <div id="d8">Brave Sir  Robin   ran</div>
   275     <div id="e8" contenteditable="true">Brave Sir  Robin   ran</div>
   276   </pre>
   277   <textarea id="t8" cols="300">Brave Sir  Robin   ran</textarea>
   279   <pre>
   280 <div id="ml_div1">oneword
   282 two words
   283 </div>
   284 <div id="ml_divbr1">oneword<br/><br/>two words<br/><br/></div>
   285 <div id="ml_ediv1" contenteditable="true">oneword
   287 two words
   288 </div>
   289 <div id="ml_edivbr1" contenteditable="true">oneword<br/><br/>two words<br/><br/></div>
   290 <textarea id="ml_t1" cols="300">oneword
   292 two words
   293 </textarea>
   294   </pre>
   296   <div id="cntr_1">a <a href="#">b</a></div>
   297 </body>
   298 </html>

mercurial