Use testRunner instead of layoutTestController in fast/doctypes, dom, dynamic, encodi...
[WebKit-https.git] / LayoutTests / fast / events / ime-composition-events-001.html
1 <html>
2 <head>
3 <title></title>
4 </head>
5 <body>
6 <p>This tests that calling input-method functions sends Composition Events and Text Events introduced in DOM Level 3.</p>
7 <p>To test manually, enable an IME, input CJK characters, and see this page doesn't show 'FAILED' lines.</p>
8 <input id="test" type="text"/>
9 <ul id="console"></ul>
10 <script language="javascript" type="text/javascript">
11 function log(str) {
12    var li = document.createElement('li');
13    li.appendChild(document.createTextNode(str));
14    var console = document.getElementById('console');
15    console.appendChild(li);
16 }
17
18 function logEvent(e) {
19     var target = e.target;
20     var type = e.type;
21     if (e.type == 'compositionstart' || e.type == 'compositionupdate' || e.type == 'compositionend' || e.type == 'textInput')
22         log('SUCCESS: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
23     else
24         log('FAILED: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
25 }
26
27 var test = document.getElementById('test');
28 test.focus();
29
30 if (window.testRunner) {
31     testRunner.dumpAsText();
32
33     // Add event listeners to the <input> node.
34     test.addEventListener("compositionstart", logEvent, false);
35     test.addEventListener("compositionupdate", logEvent, false);
36     test.addEventListener("compositionend", logEvent, false);
37     test.addEventListener("textInput", logEvent, false);
38
39     // Case 1: Compose a text and commit it.
40     textInputController.setMarkedText('1', 0, 1);
41     textInputController.setMarkedText('2', 0, 1);
42     textInputController.setMarkedText('3', 0, 1);
43     textInputController.insertText('4');
44
45     // Case 2: Compose a text but cancel it.
46     textInputController.setMarkedText('5', 0, 1);
47     textInputController.setMarkedText('6', 0, 1);
48     textInputController.setMarkedText('7', 0, 1);
49     textInputController.setMarkedText('', 0, 0);
50
51     // Case 3: Insert a text without composition.
52     textInputController.insertText('8');
53
54     // Case 4: Compose a text and commit it by removing the mark.
55     // Only Mac and Chromium ports support unmarkText.
56     if (textInputController.unmarkText) {
57         textInputController.setMarkedText('9', 0, 1);
58         textInputController.unmarkText();
59     }
60 }
61 </script>
62 </body>
63 </html>