<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1066515 --> <head> <meta charset="utf-8"> <title>Test for Bug 1066515</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=1066515">Mozilla Bug 1066515</a> <p id="display"></p> <pre id="test"> <script class="testbody" type="application/javascript;version=1.7"> // The input context. var gContext = null; inputmethod_setup(function() { runTest(); }); function runTest() { let im = navigator.mozInputMethod; im.oninputcontextchange = function() { ok(true, 'inputcontextchange event was fired.'); im.oninputcontextchange = null; gContext = im.inputcontext; if (!gContext) { ok(false, 'Should have a non-null inputcontext.'); inputmethod_cleanup(); return; } test_replaceSurroundingTextWithinTextNode(); }; // Set current page as an input method. SpecialPowers.wrap(im).setActive(true); let iframe = document.createElement('iframe'); iframe.src = 'file_test_sms_app_1066515.html'; iframe.setAttribute('mozbrowser', true); document.body.appendChild(iframe); } function test_replaceSurroundingTextWithinTextNode() { // Set cursor position after 'f'. gContext.setSelectionRange(1, 0); // Replace 'fxos' to 'Hitooo' which the range is within current text node. gContext.replaceSurroundingText('Hitooo', -1, 4).then(function() { gContext.getText().then(function(text) { is(text, 'Hitooo\nhello world', 'replaceSurroundingText successfully.'); test_replaceSurroundingTextSpanMultipleNodes(); }, function(e) { ok(false, 'getText failed: ' + e.name); inputmethod_cleanup(); }); }, function(e) { ok(false, 'replaceSurroundingText failed: ' + e.name); inputmethod_cleanup(); }); } function test_replaceSurroundingTextSpanMultipleNodes() { // Set cursor position to the beginning. gContext.setSelectionRange(0, 0); // Replace whole content editable element to 'abc'. gContext.replaceSurroundingText('abc', 0, 100).then(function() { gContext.getText().then(function(text) { is(text, 'abc', 'replaceSurroundingText successfully.'); inputmethod_cleanup(); }, function(e) { ok(false, 'getText failed: ' + e.name); inputmethod_cleanup(); }); }, function(e) { ok(false, 'replaceSurroundingText failed: ' + e.name); inputmethod_cleanup(); }); } </script> </pre> </body> </html>