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"/>
10 <script language="javascript" type="text/javascript">
12 var li = document.createElement('li');
13 li.appendChild(document.createTextNode(str));
14 var console = document.getElementById('console');
15 console.appendChild(li);
18 function logEvent(e) {
19 var target = e.target;
21 if (e.type == 'compositionstart' || e.type == 'compositionupdate' || e.type == 'compositionend' || e.type == 'textInput')
22 log('SUCCESS: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
24 log('FAILED: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
27 var test = document.getElementById('test');
30 if (window.layoutTestController) {
31 layoutTestController.dumpAsText();
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);
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');
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);
51 // Case 3: Insert a text without composition.
52 textInputController.insertText('8');
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();