OLD | NEW |
1 <html> | 1 <html> |
2 <head> | 2 <head> |
3 <title></title> | 3 <script src="../js/resources/js-test-pre.js"></script> |
4 </head> | 4 </head> |
5 <body> | 5 <body> |
6 <p>This tests that calling input-method functions sends Composition Events and T
ext Events introduced in DOM Level 3.</p> | 6 <input id="test" type="text"> |
7 <p>To test manually, enable an IME, input CJK characters, and see this page does
n't show 'FAILED' lines.</p> | 7 <script> |
8 <input id="test" type="text"/> | 8 description('This tests that calling input-method functions sends Composition Ev
ents and Text Events introduced in DOM Level 3. ' + |
9 <ul id="console"></ul> | 9 'To test manually, enable an IME, input CJK characters, and see this page doesn\
't show \'FAIL\' lines.'); |
10 <script language="javascript" type="text/javascript"> | 10 </script> |
11 function log(str) { | 11 <script> |
12 var li = document.createElement('li'); | 12 function logCompositionStart(event) { |
13 li.appendChild(document.createTextNode(str)); | 13 shouldBeEqualToString('event.type', 'compositionstart'); |
14 var console = document.getElementById('console'); | 14 testPassed('event.data is "' + event.data + '"'); |
15 console.appendChild(li); | |
16 } | 15 } |
17 | 16 |
18 function logEvent(e) { | 17 function logCompositionUpdate(event) { |
19 var target = e.target; | 18 shouldBeEqualToString('event.type', 'compositionupdate'); |
20 var type = e.type; | 19 testPassed('event.data is "' + event.data + '"'); |
21 if (e.type == 'compositionstart' || e.type == 'compositionupdate' || e.type
== 'compositionend' || e.type == 'textInput') | 20 } |
22 log('SUCCESS: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"
'); | 21 |
23 else | 22 function logCompositionEnd(event) { |
24 log('FAILED: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"'
); | 23 shouldBeEqualToString('event.type', 'compositionend'); |
| 24 testPassed('event.data is "' + event.data + '"'); |
| 25 } |
| 26 |
| 27 function logTextInput(event) { |
| 28 shouldBeEqualToString('event.type', 'textInput'); |
| 29 testPassed('event.data is "' + event.data + '"'); |
25 } | 30 } |
26 | 31 |
27 var test = document.getElementById('test'); | 32 var test = document.getElementById('test'); |
28 test.focus(); | 33 test.focus(); |
29 | 34 |
30 if (window.testRunner) { | 35 // Add event listeners to the <input> node. |
31 testRunner.dumpAsText(); | 36 test.addEventListener('compositionstart', logCompositionStart, false); |
| 37 test.addEventListener('compositionupdate', logCompositionUpdate, false); |
| 38 test.addEventListener('compositionend', logCompositionEnd, false); |
| 39 test.addEventListener('textInput', logTextInput, false); |
32 | 40 |
33 // Add event listeners to the <input> node. | 41 // Case 1: Compose a text and commit it. |
34 test.addEventListener("compositionstart", logEvent, false); | 42 textInputController.setMarkedText('1', 0, 1); |
35 test.addEventListener("compositionupdate", logEvent, false); | 43 textInputController.setMarkedText('2', 0, 1); |
36 test.addEventListener("compositionend", logEvent, false); | 44 textInputController.setMarkedText('3', 0, 1); |
37 test.addEventListener("textInput", logEvent, false); | 45 textInputController.insertText('4'); |
38 | 46 |
39 // Case 1: Compose a text and commit it. | 47 // Case 2: Compose a text but cancel it. |
40 textInputController.setMarkedText('1', 0, 1); | 48 textInputController.setMarkedText('5', 0, 1); |
41 textInputController.setMarkedText('2', 0, 1); | 49 textInputController.setMarkedText('6', 0, 1); |
42 textInputController.setMarkedText('3', 0, 1); | 50 textInputController.setMarkedText('7', 0, 1); |
43 textInputController.insertText('4'); | 51 textInputController.setMarkedText('', 0, 0); |
44 | 52 |
45 // Case 2: Compose a text but cancel it. | 53 // Case 3: Insert a text without composition. |
46 textInputController.setMarkedText('5', 0, 1); | 54 textInputController.insertText('8'); |
47 textInputController.setMarkedText('6', 0, 1); | |
48 textInputController.setMarkedText('7', 0, 1); | |
49 textInputController.setMarkedText('', 0, 0); | |
50 | 55 |
51 // Case 3: Insert a text without composition. | 56 // Case 4: Compose a text and commit it by removing the mark. |
52 textInputController.insertText('8'); | 57 textInputController.setMarkedText('9', 0, 1); |
| 58 textInputController.unmarkText(); |
53 | 59 |
54 // Case 4: Compose a text and commit it by removing the mark. | 60 // Case 5: Compose a text on selection and commit it. |
55 // Only Mac and Chromium ports support unmarkText. | 61 test.value = 'I have a pen'; |
56 if (textInputController.unmarkText) { | 62 test.selectionStart = 2; |
57 textInputController.setMarkedText('9', 0, 1); | 63 test.selectionEnd = 6; |
58 textInputController.unmarkText(); | 64 textInputController.setMarkedText('lost', 0, 1); |
59 } | 65 textInputController.insertText('made'); |
60 | 66 shouldBeEqualToString('test.value', 'I made a pen'); |
61 // Case 5: Compose a text on selection and commit it. | |
62 test.value = 'I have a pen'; | |
63 test.selectionStart = 2; | |
64 test.selectionEnd = 6; | |
65 textInputController.setMarkedText('lost', 0, 1); | |
66 textInputController.insertText('made'); | |
67 if (test.value == 'I made a pen') { | |
68 log('SUCCESS: ' + test.value); | |
69 } else { | |
70 log('FAILURE: ' + test.value + ' is not "I made a pen".'); | |
71 } | |
72 } | |
73 </script> | 67 </script> |
| 68 <script src="../js/resources/js-test-post.js"></script> |
74 </body> | 69 </body> |
75 </html> | 70 </html> |
OLD | NEW |