Chromium Code Reviews| 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'); |
|
tkent
2013/07/01 05:41:30
This line use '
| |
| 60 | 66 shouldBeEqualToString("test.value", "I made a pen"); |
|
tkent
2013/07/01 05:41:30
This line use "
| |
| 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 |