• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE HTML>
2<html>
3<head>
4<script src="../../LayoutTests/editing/editing.js"></script>
5<script src="../../LayoutTests/editing/spelling/resources/util.js"></script>
6<script src="../resources/runner.js"></script>
7</head>
8<body onload="start()">
9<textarea style="border:2px solid red;" id="huge_text">
10</textarea><br/>
11<textarea id="destination">
12</textarea>
13<p id="helper" contenteditable spellcheck="false"></p>
14<script>
15var srcNode = null;
16var dstNode = null;
17var auxNode = null;
18var startTime = 0;
19
20function start()
21{
22    if (window.internals) {
23        internals.settings.setUnifiedTextCheckerEnabled(true);
24        internals.settings.setAsynchronousSpellCheckingEnabled(true);
25        internals.setContinuousSpellCheckingEnabled(true);
26        internals.settings.setJavaScriptCanAccessClipboard(true);
27        internals.settings.setDOMPasteAllowed(true);
28    }
29
30    var testText = "";
31    for (var i = 0; i < 260; i++)
32        testText += "zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz zz.\n";
33
34    srcNode = document.getElementById('huge_text');
35    srcNode.innerText = testText;
36
37    PerfTestRunner.prepareToMeasureValuesAsync({ unit: "ms", done:done });
38
39    test();
40}
41
42function test()
43{
44    startTime = PerfTestRunner.now();
45    stepSelectAllInSrc();
46}
47
48function stepSelectAllInSrc()
49{
50    srcNode.focus();
51    document.execCommand('SelectAll');
52    waitUntilSelectedAndSpellchecked();
53}
54
55function waitUntilSelectedAndSpellchecked()
56{
57    if (!window.getSelection().toString().length) {
58        setTimeout(waitUntilSelectedAndSpellchecked, 0);
59        return;
60    } else {
61        if (window.internals) {
62            if (!internals.markerCountForNode(findFirstTextNode(srcNode), "spelling")) {
63                setTimeout(waitUntilSelectedAndSpellchecked, 0);
64                return;
65            }
66        }
67    }
68    document.execCommand("Copy");
69    stepHelper();
70}
71
72function stepHelper()
73{
74    auxNode = document.getElementById('helper');
75    var textToType = 'good';
76    typeText(auxNode, textToType);
77    var textNode = findFirstTextNode(auxNode);
78    if (!textNode || textNode.textContent != textToType) {
79        setTimeout(stepHelper, 0);
80        return;
81    }
82    stepPaste();
83}
84
85function stepPaste()
86{
87    dstNode = document.getElementById('destination');
88    dstNode.focus();
89    document.execCommand("Paste");
90    check();
91}
92
93function check()
94{
95    if (window.internals) {
96        if (!internals.markerCountForNode(findFirstTextNode(dstNode), "spelling")) {
97            setTimeout(check, 0);
98            return;
99        }
100    } else {
101        if (dstNode.scrollTop > 0) {
102            dstNode.scrollTop = dstNode.scrollTop - 1;
103            setTimeout(check, 0);
104            return;
105        }
106    }
107
108    PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime);
109    PerfTestRunner.gc();
110    dstNode.innerText = "";
111    auxNode.innerText = "";
112    setTimeout(test, 0);
113}
114
115function done()
116{
117    srcNode.innerText = "";
118    dstNode.innerText = "";
119    auxNode.innerText = "";
120}
121
122</script>
123</body>
124</html>
125