Index: third_party/google_input_tools/src/chrome/os/inputview/adapter.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/adapter.js b/third_party/google_input_tools/src/chrome/os/inputview/adapter.js |
index e35250c0615953ab9668a8b22f22c0f5f17cd667..046a5d2a7bd3c351787b692473f616b3e6dc911d 100644 |
--- a/third_party/google_input_tools/src/chrome/os/inputview/adapter.js |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/adapter.js |
@@ -21,14 +21,13 @@ goog.require('goog.object'); |
goog.require('i18n.input.chrome.DataSource'); |
goog.require('i18n.input.chrome.inputview.FeatureName'); |
goog.require('i18n.input.chrome.inputview.FeatureTracker'); |
-goog.require('i18n.input.chrome.inputview.GlobalFlags'); |
goog.require('i18n.input.chrome.inputview.ReadyState'); |
goog.require('i18n.input.chrome.inputview.StateType'); |
goog.require('i18n.input.chrome.inputview.events.EventType'); |
+goog.require('i18n.input.chrome.inputview.events.MessageEvent'); |
goog.require('i18n.input.chrome.inputview.events.SurroundingTextChangedEvent'); |
goog.require('i18n.input.chrome.message'); |
goog.require('i18n.input.chrome.message.ContextType'); |
-goog.require('i18n.input.chrome.message.Event'); |
goog.require('i18n.input.chrome.message.Name'); |
goog.require('i18n.input.chrome.message.Type'); |
@@ -37,8 +36,11 @@ var CandidatesBackEvent = i18n.input.chrome.DataSource.CandidatesBackEvent; |
var ContextType = i18n.input.chrome.message.ContextType; |
var FeatureTracker = i18n.input.chrome.inputview.FeatureTracker; |
var FeatureName = i18n.input.chrome.inputview.FeatureName; |
+var GesturesBackEvent = i18n.input.chrome.DataSource.GesturesBackEvent; |
var Name = i18n.input.chrome.message.Name; |
+var State = i18n.input.chrome.inputview.ReadyState.State; |
var Type = i18n.input.chrome.message.Type; |
+var events = i18n.input.chrome.inputview.events; |
@@ -140,7 +142,7 @@ Adapter.prototype.textBeforeCursor = ''; |
/** @type {boolean} */ |
-Adapter.prototype.isQPInputView = true; |
+Adapter.prototype.isFloating = false; |
/** |
@@ -164,8 +166,8 @@ Adapter.prototype.onUpdateSettings_ = function(message) { |
// Resets the flag, since when inputview receive the update setting response, |
// it means the background switching is done. |
this.isBgControllerSwitching_ = false; |
- this.dispatchEvent(new i18n.input.chrome.message.Event(Type.UPDATE_SETTINGS, |
- message)); |
+ this.dispatchEvent( |
+ new events.MessageEvent(events.EventType.UPDATE_SETTINGS, message)); |
}; |
@@ -235,6 +237,36 @@ Adapter.prototype.sendKeyDownEvent = function(key, code, opt_keyCode, |
/** |
+ * Sets whether gesture editing is in progress. |
+ * |
+ * @param {boolean} inProgress |
+ * @param {?boolean=} opt_isSwipe Whether it was triggered by a swipe. |
+ */ |
+Adapter.prototype.setGestureEditingInProgress = function(inProgress, |
+ opt_isSwipe) { |
+ chrome.runtime.sendMessage( |
+ goog.object.create( |
+ Name.TYPE, Type.SET_GESTURE_EDITING, |
+ Name.IN_PROGRESS, inProgress, |
+ Name.IS_SWIPE, opt_isSwipe)); |
+}; |
+ |
+ |
+/** |
+ * Sends a gesture typing event to the backend for decoding. |
+ * |
+ * @param {!Array.<!i18n.input.chrome.inputview.elements.content. |
+ * GestureCanvasView.Point>} gestureData The gesture data |
+ * (trail) to send. |
+ */ |
+Adapter.prototype.sendGestureEvent = function(gestureData) { |
+ chrome.runtime.sendMessage( |
+ goog.object.create(Name.TYPE, Type.SEND_GESTURE_EVENT, Name.GESTURE_DATA, |
+ gestureData)); |
+}; |
+ |
+ |
+/** |
* Simulates to send 'keyup' event. |
* |
* @param {string} key |
@@ -263,6 +295,18 @@ Adapter.prototype.sendKeyEvent_ = function(keyData) { |
/** |
+ * Sends an updated keyboard layout to the backend gesture typing decoder. |
+ * |
+ * @param {?Object} keyboardLayout The keyboard layout object to send. |
+ */ |
+Adapter.prototype.sendKeyboardLayout = function(keyboardLayout) { |
+ chrome.runtime.sendMessage( |
+ goog.object.create(Name.TYPE, Type.SEND_KEYBOARD_LAYOUT, |
+ Name.KEYBOARD_LAYOUT, keyboardLayout)); |
+}; |
+ |
+ |
+/** |
* Generates a {@code ChromeKeyboardEvent} by given values. |
* |
* @param {string} type . |
@@ -358,27 +402,17 @@ Adapter.prototype.isPasswordBox = function() { |
/** |
- * True to enable gesture deletion. |
+ * Whether the floating virtual keyboard feature is enabled. |
* |
* @return {boolean} |
*/ |
-Adapter.prototype.isGestureDeletionEnabled = function() { |
- // TODO: Omni bar sends wrong anchor/focus when autocompleting |
- // URLs. Re-enable when that is fixed. |
- if (this.contextType == ContextType.URL) { |
+Adapter.prototype.isFloatingVirtualKeyboardEnabled = function() { |
+ // This feature depends on setMode API. The api is a private API and may not |
+ // be available all the time. |
+ if (!inputview || !inputview.setMode) { |
return false; |
} |
- return this.features.isEnabled(FeatureName.GESTURE_DELETION); |
-}; |
- |
- |
-/** |
- * True to enable gesture typing. |
- * |
- * @return {boolean} |
- */ |
-Adapter.prototype.isGestureTypingEnabled = function() { |
- return this.features.isEnabled(FeatureName.GESTURE_TYPING); |
+ return this.features.isEnabled(FeatureName.FLOATING_VIRTUAL_KEYBOARD); |
}; |
@@ -467,10 +501,8 @@ Adapter.prototype.initBackground_ = function() { |
/** |
* Loads the keyboard settings. |
- * |
- * @param {string} languageCode The language code. |
*/ |
-Adapter.prototype.initialize = function(languageCode) { |
+Adapter.prototype.initialize = function() { |
if (chrome.accessibilityFeatures && |
chrome.accessibilityFeatures.spokenFeedback) { |
chrome.accessibilityFeatures.spokenFeedback.get({}, (function(details) { |
@@ -488,37 +520,25 @@ Adapter.prototype.initialize = function(languageCode) { |
this.initBackground_(); |
- var StateType = i18n.input.chrome.inputview.ReadyState.StateType; |
if (window.inputview) { |
inputview.getKeyboardConfig((function(config) { |
this.isA11yMode = !!config['a11ymode']; |
this.features.initialize(config); |
- this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY); |
+ this.isVoiceInputEnabled = |
+ this.features.isEnabled(FeatureName.VOICE_INPUT); |
+ this.readyState_.markStateReady(State.KEYBOARD_CONFIG_READY); |
this.maybeDispatchSettingsReadyEvent_(); |
}).bind(this)); |
inputview.getInputMethods((function(inputMethods) { |
// Only show globe key to switching between IMEs when there are more |
// than one IME. |
this.showGlobeKey = inputMethods.length > 1; |
- this.readyState_.markStateReady(StateType.IME_LIST_READY); |
- this.maybeDispatchSettingsReadyEvent_(); |
- }).bind(this)); |
- inputview.getInputMethodConfig((function(config) { |
- this.isQPInputView = !!config['isNewQPInputViewEnabled'] || |
- !!config['isNewMDInputViewEnabled']; |
- var voiceEnabled = config['isVoiceInputEnabled']; |
- if (goog.isDef(voiceEnabled)) { |
- this.isVoiceInputEnabled = !!voiceEnabled; |
- } |
- i18n.input.chrome.inputview.GlobalFlags.isQPInputView = |
- this.isQPInputView; |
- this.readyState_.markStateReady(StateType.INPUT_METHOD_CONFIG_READY); |
+ this.readyState_.markStateReady(State.IME_LIST_READY); |
this.maybeDispatchSettingsReadyEvent_(); |
}).bind(this)); |
} else { |
- this.readyState_.markStateReady(StateType.IME_LIST_READY); |
- this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY); |
- this.readyState_.markStateReady(StateType.INPUT_METHOD_CONFIG_READY); |
+ this.readyState_.markStateReady(State.IME_LIST_READY); |
+ this.readyState_.markStateReady(State.KEYBOARD_CONFIG_READY); |
} |
this.maybeDispatchSettingsReadyEvent_(); |
@@ -531,11 +551,9 @@ Adapter.prototype.initialize = function(languageCode) { |
* @private |
*/ |
Adapter.prototype.maybeDispatchSettingsReadyEvent_ = function() { |
- var StateType = i18n.input.chrome.inputview.ReadyState.StateType; |
var states = [ |
- StateType.KEYBOARD_CONFIG_READY, |
- StateType.IME_LIST_READY, |
- StateType.INPUT_METHOD_CONFIG_READY]; |
+ State.KEYBOARD_CONFIG_READY, |
+ State.IME_LIST_READY]; |
var ready = true; |
for (var i = 0; i < states.length; i++) { |
ready = ready && this.readyState_.isReady(states[i]); |
@@ -602,8 +620,7 @@ Adapter.prototype.onVisibilityChange_ = function() { |
events.EventType.VISIBILITY_CHANGE)); |
chrome.runtime.sendMessage(goog.object.create( |
Name.TYPE, Type.VISIBILITY_CHANGE, |
- Name.VISIBILITY, !document.webkitHidden, |
- Name.WORKSPACE_HEIGHT, screen.height - window.innerHeight)); |
+ Name.VISIBILITY, !document.webkitHidden)); |
}; |
@@ -647,6 +664,17 @@ Adapter.prototype.commitText = function(text) { |
/** |
+ * Commits the gesture result. |
+ * |
+ * @param {string} text . |
+ */ |
+Adapter.prototype.commitGestureResult = function(text) { |
+ chrome.runtime.sendMessage(goog.object.create( |
+ Name.TYPE, Type.CONFIRM_GESTURE_RESULT, Name.TEXT, text)); |
+}; |
+ |
+ |
+/** |
* Sets the language. |
* |
* @param {string} language . |
@@ -671,6 +699,18 @@ Adapter.prototype.onCandidatesBack_ = function(message) { |
/** |
+ * Callbck when completion is back. |
+ * |
+ * @param {!Object} message . |
+ * @private |
+ */ |
+Adapter.prototype.onGesturesBack_ = function(message) { |
+ var results = message[Name.GESTURE_RESULTS]; |
+ this.dispatchEvent(new GesturesBackEvent(results)); |
+}; |
+ |
+ |
+/** |
* Hides the keyboard. |
*/ |
Adapter.prototype.hideKeyboard = function() { |
@@ -731,6 +771,9 @@ Adapter.prototype.onMessage_ = function(request, sender, sendResponse) { |
case Type.CONTEXT_BLUR: |
this.onContextBlur_(); |
break; |
+ case Type.GESTURES_BACK: |
+ this.onGesturesBack_(msg); |
+ break; |
case Type.SURROUNDING_TEXT_CHANGED: |
this.onSurroundingTextChanged_(request[Name.TEXT], |
request[Name.ANCHOR], |
@@ -740,9 +783,19 @@ Adapter.prototype.onMessage_ = function(request, sender, sendResponse) { |
this.onUpdateSettings_(msg); |
break; |
case Type.VOICE_STATE_CHANGE: |
+ this.dispatchEvent( |
+ new events.MessageEvent(events.EventType.VOICE_STATE_CHANGE, |
+ msg)); |
+ break; |
case Type.HWT_NETWORK_ERROR: |
+ this.dispatchEvent( |
+ new events.MessageEvent(events.EventType.HWT_NETWORK_ERROR, |
+ msg)); |
+ break; |
case Type.FRONT_TOGGLE_LANGUAGE_STATE: |
- this.dispatchEvent(new i18n.input.chrome.message.Event(type, msg)); |
+ this.dispatchEvent( |
+ new events.MessageEvent(events.EventType.FRONT_TOGGLE_LANGUAGE_STATE, |
+ msg)); |
break; |
} |
}; |