<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1059163 --> <head> <title>Basic test for repeat sendKey events</title> <script type="application/javascript;version=1.7" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript;version=1.7" src="inputmethod_common.js"></script> <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1059163">Mozilla Bug 1059163</a> <p id="display"></p> <pre id="test"> <script class="testbody" type="application/javascript;version=1.7"> inputmethod_setup(function() { runTest(); }); // The frame script running in the file function appFrameScript() { let document = content.document; let window = content.document.defaultView; let t = document.getElementById('text'); t.focus(); let range = document.createRange(); range.selectNodeContents(t); range.collapse(false); let selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); addMessageListener('test:InputMethod:clear', function() { t.innerHTML = ''; }); } function runTest() { let im = navigator.mozInputMethod; // Set current page as an input method. SpecialPowers.wrap(im).setActive(true); // Create an app frame to recieve keyboard inputs. let app = document.createElement('iframe'); app.src = 'file_test_bug1066515.html'; app.setAttribute('mozbrowser', true); document.body.appendChild(app); app.addEventListener('mozbrowserloadend', function() { let mm = SpecialPowers.getBrowserFrameMessageManager(app); mm.loadFrameScript('data:,(' + encodeURIComponent(appFrameScript.toString()) + ')();', false); im.oninputcontextchange = function() { is(im.inputcontext.type, 'contenteditable', 'type'); is(im.inputcontext.inputType, 'textarea', 'inputType'); if (im.inputcontext) { im.oninputcontextchange = null; register(); } }; function register() { im.inputcontext.onselectionchange = function() { im.inputcontext.onselectionchange = null; is(im.inputcontext.textBeforeCursor, '', 'textBeforeCursor'); is(im.inputcontext.textAfterCursor, '', 'textAfterCursor'); is(im.inputcontext.selectionStart, 0, 'selectionStart'); is(im.inputcontext.selectionEnd, 0, 'selectionEnd'); inputmethod_cleanup(); }; mm.sendAsyncMessage('test:InputMethod:clear'); } }); } </script> </pre> </body> </html>