dom/inputmethod/mochitest/test_sync_edit.html
author Bob Owen <bobowencode@gmail.com>
Tue, 05 Jan 2016 10:08:57 +0000
changeset 278418 d765b7934fae4c1389ec4d860988a21437aed075
parent 248797 67051665e7e59334fcab57ef40f6b703f118b819
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=1079455
-->
<head>
  <title>Sync edit of an input</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=1079455">Mozilla Bug 1079455</a>
<p id="display"></p>
<pre id="test">
<script class="testbody" type="application/javascript;version=1.7">

inputmethod_setup(function() {
  runTest();
});

let appFrameScript = function appFrameScript() {
  let input = content.document.body.firstElementChild;

  input.focus();
  input.value = 'First1';
  input.blur();
};

function runTest() {
  let im = navigator.mozInputMethod;

  let i = 0;
  im.oninputcontextchange = function() {
    let inputcontext = im.inputcontext;
    i++;
    switch (i) {
      case 1:
        ok(!!inputcontext, 'Should receive inputcontext from focus().');
        is(inputcontext.textAfterCursor, 'First');

        break;

      case 2:
        ok(!!inputcontext, 'Should receive inputcontext from value change.');
        is(inputcontext.textBeforeCursor, 'First1');

        break;

      case 3:
        ok(!inputcontext, 'Should lost inputcontext from blur().');

        inputmethod_cleanup();
        break;

      default:
        ok(false, 'Unknown event count.');

        inputmethod_cleanup();
    }
  };

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

  let iframe = document.createElement('iframe');
  iframe.src = 'data:text/html,<html><body><input value="First"></body></html>';
  iframe.setAttribute('mozbrowser', true);
  document.body.appendChild(iframe);

  let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
  iframe.addEventListener('mozbrowserloadend', function() {
    mm.loadFrameScript('data:,(' + encodeURIComponent(appFrameScript.toString()) + ')();', false);
  });
}

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