dde63aadfb2b3ad52d4d4a3f603f4aa112c15a58
[WebKit-https.git] / LayoutTests / platform / blackberry / editing / text-iterator / findString-markers.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <style>
5 .plaintext {
6     border: 2px solid red;
7     padding: 12px;
8     font-size: 24px;
9 }
10 </style>
11 <script src="../../fast/js/resources/js-test-pre.js"></script>
12 </head>
13 <body>
14 <pre id="description"></pre>
15 <pre id="console"></pre>
16 <div id="container">
17 </div>
18
19 <script>
20
21 if (window.layoutTestController) {
22     layoutTestController.dumpAsText();
23     layoutTestController.waitUntilDone();
24 }
25
26 function createPlainTextElement(id, text, parent) {
27     var e = document.createElement('div');
28     e.className = 'plaintext';
29     e.id = id;
30     e.innerText = text;
31
32     parent.appendChild(e);
33     return e;
34 }
35
36 function occurrences(string, substring) {
37     var n=0;
38     var pos=0;
39
40     while (true) {
41         pos = string.toLowerCase().indexOf(substring.toLowerCase(),pos);
42         if (pos!=-1) {
43             ++n;
44             pos+=substring.length;
45         } else
46             break;
47     }
48     return n;
49 }
50
51 function checkTextMatchMarker(index) {
52     if (index > 26) {
53         layoutTestController.notifyDone();
54         return;
55     }
56     var str = 'abcdefghijklmnopqrstuvwxyz.';
57     var char = str.charAt(index);
58     layoutTestController.findString(str.charAt(index), []);
59     // Start the function later to allow marking process to finish.
60     setTimeout(function() {
61         var count = occurrences(text, char);
62         // The number of markers should match to the occurrences of the charactor.
63         shouldBe('internals.markerCountForNode(e.firstChild, "textmatch")', count.toString());
64         var searchStartIndex = 0;
65         // Get the char from text and compare with the marker range content.
66         for (var i = 0; i < count ; ++i) {
67             var range = internals.markerRangeForNode(e.firstChild, "textmatch", i);
68             var pos = text.toLowerCase().indexOf(char.toLowerCase(), searchStartIndex);
69             searchStartIndex = pos + 1;
70             var expectStr = text.charAt(pos);
71             shouldBe('"' + range + '"', '"' + expectStr + '"');
72         }
73         checkTextMatchMarker(++index);
74     }, 850);
75 }
76
77 var container = document.getElementById('container');
78
79 var id = 'id1'
80 var text = 'The quick brown fox jumps over the lazy dog.';
81 var e = createPlainTextElement(id, text, container);
82
83 if (window.internals && window.layoutTestController)
84     checkTextMatchMarker(0);
85
86 var successfullyParsed = true;
87 </script>
88 <script src="../../fast/js/resources/js-test-post.js"></script>
89 </body>
90 </html>