From f8dde392f78c2e19dffb6c8d1298f93b3e1aa8ce Mon Sep 17 00:00:00 2001 From: Chris Peterson Date: Wed, 11 Jul 2012 17:29:33 -0700 Subject: [PATCH] Bug 780191 - Commit composition string before sending autocomplete text event. r=blassey --- mobile/android/chrome/content/browser.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index d3e71aa12027..e21fcb202424 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -4067,12 +4067,21 @@ var FormAssistant = { if (!this._currentInputElement) break; - this._currentInputElement.QueryInterface(Ci.nsIDOMNSEditableElement).setUserInput(aData); + let editableElement = this._currentInputElement.QueryInterface(Ci.nsIDOMNSEditableElement); + + // If we have an active composition string, commit it before sending + // the autocomplete event with the text that will replace it. + try { + let imeEditor = editableElement.editor.QueryInterface(Ci.nsIEditorIMESupport); + if (imeEditor.composing) + imeEditor.forceCompositionEnd(); + } catch (e) {} + + editableElement.setUserInput(aData); let event = this._currentInputElement.ownerDocument.createEvent("Events"); event.initEvent("DOMAutoComplete", true, true); this._currentInputElement.dispatchEvent(event); - break; case "FormAssist:Blocklisted":