dom/inputmethod/mochitest/test_bug978918.html
author Bob Owen <bobowencode@gmail.com>
Tue, 05 Jan 2016 10:08:57 +0000
changeset 278418 d765b7934fae4c1389ec4d860988a21437aed075
parent 174585 929c248096f6615c7fff084e1c26d3927a581681
child 305167 20a6fd076505809220e031dd594e03029459a664
permissions -rw-r--r--
Bug 1156742 Part 7: Refactor nsDeviceContext.cpp to use printing surface for size and nsIDeviceContextSpec for DPI and scale. r=roc These changes are to make using an off screen surface behind our DrawTarget in the child easier. It still creates the real printing surface for some of the calculations, removing this will be required for future tightening of the sandbox.

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=978918
-->
<head>
  <title>Basic test for InputMethod API.</title>
  <script type="application/javascript;version=1.7" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript;version=1.7" src="inputmethod_common.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=978918">Mozilla Bug 978918</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_setSelectionRange();
  };

  // Set current page as an input method.
  SpecialPowers.wrap(im).setActive(true);

  let iframe = document.createElement('iframe');
  iframe.src = 'file_test_sms_app.html';
  iframe.setAttribute('mozbrowser', true);
  document.body.appendChild(iframe);
}

function test_setSelectionRange() {
  gContext.setSelectionRange(0, 100).then(function() {
    is(gContext.selectionStart, 0, 'selectionStart was set successfully.');
    is(gContext.selectionEnd, 5, 'selectionEnd was set successfully.');
    test_replaceSurroundingText();
  }, function(e) {
    ok(false, 'setSelectionRange failed:' + e.name);
    inputmethod_cleanup();
  });
}

function test_replaceSurroundingText() {
  // Replace 'Httvb' with 'Hito'.
  gContext.replaceSurroundingText('Hito', 0, 100).then(function() {
    ok(true, 'replaceSurroundingText finished');
    inputmethod_cleanup();
  }, function(e) {
    ok(false, 'replaceSurroundingText failed: ' + e.name);
    inputmethod_cleanup();
  });
}

</script>
</pre>
</body>
</html>