Backed out changeset 46c1cce018de (bug 1059163) for frequent test failures of the new test
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Thu, 09 Oct 2014 12:08:09 +0200
changeset 209552 12814612228ac1b09e3da526016441e3b76ed27e
parent 209551 f6470e7cf35b548cb120c43f7b17651ae6d6958a
child 209553 981e035950c893e511cd376e861b627f06fce7a0
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
bugs1059163
milestone35.0a1
backs out46c1cce018dee925d211ba14aa494d55ecebb497
Backed out changeset 46c1cce018de (bug 1059163) for frequent test failures of the new test
dom/inputmethod/forms.js
dom/inputmethod/mochitest/file_test_contenteditable.html
dom/inputmethod/mochitest/mochitest.ini
dom/inputmethod/mochitest/test_bug1059163.html
--- a/dom/inputmethod/forms.js
+++ b/dom/inputmethod/forms.js
@@ -219,18 +219,17 @@ let FormAssistant = {
   isKeyboardOpened: false,
   selectionStart: -1,
   selectionEnd: -1,
   textBeforeCursor: "",
   textAfterCursor: "",
   scrollIntoViewTimeout: null,
   _focusedElement: null,
   _focusCounter: 0, // up one for every time we focus a new element
-  _focusDeleteObserver: null,
-  _focusContentObserver: null,
+  _observer: null,
   _documentEncoder: null,
   _editor: null,
   _editing: false,
   _selectionPrivate: null,
 
   get focusedElement() {
     if (this._focusedElement && Cu.isDeadWrapper(this._focusedElement))
       this._focusedElement = null;
@@ -246,23 +245,19 @@ let FormAssistant = {
   setFocusedElement: function fa_setFocusedElement(element) {
     let self = this;
 
     if (element === this.focusedElement)
       return;
 
     if (this.focusedElement) {
       this.focusedElement.removeEventListener('compositionend', this);
-      if (this._focusDeleteObserver) {
-        this._focusDeleteObserver.disconnect();
-        this._focusDeleteObserver = null;
-      }
-      if (this._focusContentObserver) {
-        this._focusContentObserver.disconnect();
-        this._focusContentObserver = null;
+      if (this._observer) {
+        this._observer.disconnect();
+        this._observer = null;
       }
       if (this._selectionPrivate) {
         this._selectionPrivate.removeSelectionListener(this);
         this._selectionPrivate = null;
       }
     }
 
     this._documentEncoder = null;
@@ -292,46 +287,33 @@ let FormAssistant = {
         if (selection) {
           this._selectionPrivate = selection.QueryInterface(Ci.nsISelectionPrivate);
           this._selectionPrivate.addSelectionListener(this);
         }
       }
 
       // If our focusedElement is removed from DOM we want to handle it properly
       let MutationObserver = element.ownerDocument.defaultView.MutationObserver;
-      this._focusDeleteObserver = new MutationObserver(function(mutations) {
+      this._observer = new MutationObserver(function(mutations) {
         var del = [].some.call(mutations, function(m) {
           return [].some.call(m.removedNodes, function(n) {
             return n.contains(element);
           });
         });
         if (del && element === self.focusedElement) {
           self.hideKeyboard();
           self.selectionStart = -1;
           self.selectionEnd = -1;
         }
       });
 
-      this._focusDeleteObserver.observe(element.ownerDocument.body, {
+      this._observer.observe(element.ownerDocument.body, {
         childList: true,
         subtree: true
       });
-
-      // If contenteditable, also add a mutation observer on its content and
-      // call selectionChanged when a change occurs
-      if (isContentEditable(element)) {
-        this._focusContentObserver = new MutationObserver(function() {
-          this.updateSelection();
-        }.bind(this));
-
-        this._focusContentObserver.observe(element, {
-          childList: true,
-          subtree: true
-        });
-      }
     }
 
     this.focusedElement = element;
   },
 
   notifySelectionChanged: function(aDocument, aSelection, aReason) {
     this.updateSelection();
   },
deleted file mode 100644
--- a/dom/inputmethod/mochitest/file_test_contenteditable.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<body>
-<div id="text" contenteditable>Jan Jongboom</div>
-<script type="application/javascript;version=1.7">
-  var t = document.querySelector('#text');
-
-  t.focus();
-  var range = document.createRange();
-  range.selectNodeContents(t);
-  range.collapse(false);
-  var selection = window.getSelection();
-  selection.removeAllRanges();
-  selection.addRange(range);
-</script>
-</body>
-</html>
--- a/dom/inputmethod/mochitest/mochitest.ini
+++ b/dom/inputmethod/mochitest/mochitest.ini
@@ -1,24 +1,22 @@
 [DEFAULT]
 # Not supported on Android, bug 983015 for B2G emulator
 skip-if = (toolkit == 'android' || toolkit == 'gonk') || e10s
 support-files =
   inputmethod_common.js
   file_inputmethod.html
   file_inputmethod_1043828.html
   file_test_app.html
-  file_test_contenteditable.html
   file_test_sendkey_cancel.html
   file_test_sms_app.html
 
 [test_basic.html]
 [test_bug944397.html]
 [test_bug949059.html]
 [test_bug953044.html]
 [test_bug960946.html]
 [test_bug978918.html]
 [test_bug1026997.html]
 [test_bug1043828.html]
-[test_bug1059163.html]
 [test_delete_focused_element.html]
 [test_sendkey_cancel.html]
 [test_two_inputs.html]
deleted file mode 100644
--- a/dom/inputmethod/mochitest/test_bug1059163.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!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="/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=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() {
-  addMessageListener('test:InputMethod:clear', function() {
-    var t = content.document.getElementById('text');
-    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_contenteditable.html';
-  app.setAttribute('mozbrowser', true);
-  document.body.appendChild(app);
-  app.addEventListener('mozbrowserloadend', function() {
-    let mm = SpecialPowers.getBrowserFrameMessageManager(app);
-
-    function register() {
-      im.inputcontext.onselectionchange = function() {
-        is(im.inputcontext.textBeforeCursor, '', 'textBeforeCursor');
-        is(im.inputcontext.textBeforeCursor, '', 'textAfterCursor');
-        is(im.inputcontext.selectionStart, 0, 'selectionStart');
-        is(im.inputcontext.selectionEnd, 0, 'selectionEnd');
-
-        inputmethod_cleanup();
-      };
-
-      mm.sendAsyncMessage('test:InputMethod:clear');
-    }
-
-    if (im.inputcontext) {
-       register();
-    }
-    else {
-      im.oninputcontextchange = function() {
-        register();
-      };
-    }
-
-    mm.loadFrameScript('data:,(' + appFrameScript.toString() + ')();', false);
-  });
-}
-</script>
-</pre>
-</body>
-</html>
-