75 lines
2.6 KiB
HTML
75 lines
2.6 KiB
HTML
<html>
|
|
<head>
|
|
<title></title>
|
|
</head>
|
|
<body>
|
|
<p>This tests that calling input-method functions sends Composition Events and Text Events introduced in DOM Level 3.</p>
|
|
<p>To test manually, enable an IME, input CJK characters, and see this page doesn't show 'FAILED' lines.</p>
|
|
<input id="test" type="text"/>
|
|
<ul id="console"></ul>
|
|
<script language="javascript" type="text/javascript">
|
|
function log(str) {
|
|
var li = document.createElement('li');
|
|
li.appendChild(document.createTextNode(str));
|
|
var console = document.getElementById('console');
|
|
console.appendChild(li);
|
|
}
|
|
|
|
function logEvent(e) {
|
|
var target = e.target;
|
|
var type = e.type;
|
|
if (e.type == 'compositionstart' || e.type == 'compositionupdate' || e.type == 'compositionend' || e.type == 'textInput')
|
|
log('SUCCESS: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
|
|
else
|
|
log('FAILED: ' + target.tagName + ' - ' + e.type + ' - "' + e.data + '"');
|
|
}
|
|
|
|
var test = document.getElementById('test');
|
|
test.focus();
|
|
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
|
|
// Add event listeners to the <input> node.
|
|
test.addEventListener("compositionstart", logEvent, false);
|
|
test.addEventListener("compositionupdate", logEvent, false);
|
|
test.addEventListener("compositionend", logEvent, false);
|
|
test.addEventListener("textInput", logEvent, false);
|
|
|
|
// Case 1: Compose a text and commit it.
|
|
textInputController.setMarkedText('1', 0, 1);
|
|
textInputController.setMarkedText('2', 0, 1);
|
|
textInputController.setMarkedText('3', 0, 1);
|
|
textInputController.insertText('4');
|
|
|
|
// Case 2: Compose a text but cancel it.
|
|
textInputController.setMarkedText('5', 0, 1);
|
|
textInputController.setMarkedText('6', 0, 1);
|
|
textInputController.setMarkedText('7', 0, 1);
|
|
textInputController.setMarkedText('', 0, 0);
|
|
|
|
// Case 3: Insert a text without composition.
|
|
textInputController.insertText('8');
|
|
|
|
// Case 4: Compose a text and commit it by removing the mark.
|
|
// Only Mac and Chromium ports support unmarkText.
|
|
if (textInputController.unmarkText) {
|
|
textInputController.setMarkedText('9', 0, 1);
|
|
textInputController.unmarkText();
|
|
}
|
|
|
|
// Case 5: Compose a text on selection and commit it.
|
|
test.value = 'I have a pen';
|
|
test.selectionStart = 2;
|
|
test.selectionEnd = 6;
|
|
textInputController.setMarkedText('lost', 0, 1);
|
|
textInputController.insertText('made');
|
|
if (test.value == 'I made a pen')
|
|
log('SUCCESS: ' + test.value);
|
|
else
|
|
log('FAILURE: ' + test.value + ' is not "I made a pen".');
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|