Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js

Issue 1257313003: Update Google Input Tools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Free up grd resources. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js
index 2ccddcbadd551fd787fcb0559f06c17eb5f3b969..5d4fdcdf389909d3b1c28c9878238c1a080179d6 100644
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/keysetview.js
@@ -20,7 +20,6 @@ goog.require('goog.style');
goog.require('goog.ui.Container');
goog.require('i18n.input.chrome.inputview.ConditionName');
goog.require('i18n.input.chrome.inputview.Css');
-goog.require('i18n.input.chrome.inputview.GlobalFlags');
goog.require('i18n.input.chrome.inputview.SpecNodeName');
goog.require('i18n.input.chrome.inputview.elements.ElementType');
goog.require('i18n.input.chrome.inputview.elements.content.BackspaceKey');
@@ -40,7 +39,6 @@ goog.require('i18n.input.chrome.inputview.elements.content.PageIndicator');
goog.require('i18n.input.chrome.inputview.elements.content.SpaceKey');
goog.require('i18n.input.chrome.inputview.elements.content.SwitcherKey');
goog.require('i18n.input.chrome.inputview.elements.content.TabBarKey');
-goog.require('i18n.input.chrome.inputview.elements.content.material.SpaceKey');
goog.require('i18n.input.chrome.inputview.elements.layout.ExtendedLayout');
goog.require('i18n.input.chrome.inputview.elements.layout.HandwritingLayout');
goog.require('i18n.input.chrome.inputview.elements.layout.LinearLayout');
@@ -233,7 +231,7 @@ KeysetView.prototype.canvasView;
/**
* The space key.
*
- * @type {!content.SpaceKey | !content.material.SpaceKey}
+ * @type {!content.SpaceKey}
*/
KeysetView.prototype.spaceKey;
@@ -311,6 +309,77 @@ KeysetView.prototype.createDom = function() {
/**
+ * Returns an object describing the KeysetView and soft keys in the format
+ * necessary for gesture typing decoding. The returned object is only meaningful
+ * when this is called on a KeysetView for compact alphanumeric layouts.
+ *
+ * @return {?Object} A representation of this keyset for gesture typing
+ * decoding, or null if there are no soft keys.
+ */
+KeysetView.prototype.getKeyboardLayoutForGesture = function() {
+ var softKeyViewMap = this.softKeyViewMap_;
+ // Filter down to the compact character soft keys.
+ var softKeyViews = [];
+ for (var key in softKeyViewMap) {
+ var skv = softKeyViewMap[key];
+ if (skv.softKey && skv.softKey.type == ElementType.COMPACT_KEY &&
+ this.isCharacter_(skv.softKey.text)) {
+ softKeyViews.push(skv);
+ }
+ }
+
+ if (softKeyViews.length == 0) {
+ return null;
+ }
+
+ // Find the common key width/height. We assume that all the keys have the same
+ // width and height, so use an arbitrary key to determine this.
+ // TODO: Update this code to actually calculate the common dimensions.
+ // Technically in QWERTY the A key is wider than other keys, though in most
+ // cases this should not matter since we provide explicit dimensions for
+ // every key.
+ // TODO: Define this keyboard layout as an actual data type.
+ var ret = {};
+ var softKeyView = softKeyViews[0];
+ var common_width = softKeyView.softKey.getElement().clientWidth;
+ var common_height = softKeyView.softKey.getElement().clientHeight;
+ ret['most_common_key_width'] = common_width;
+ ret['most_common_key_height'] = common_height;
+
+ // Determine the necessary attributes for each key and write it into the
+ // object as an array.
+ var keys = [];
+ for (var i = 0; i < softKeyViews.length; i++) {
+ softKeyView = softKeyViews[i];
+ var codepoint = softKeyView.softKey.text.toLowerCase().charCodeAt(0);
+ var width = softKeyView.softKey.getElement().clientWidth;
+ var height = softKeyView.softKey.getElement().clientHeight;
+ // Return the x, y positions relative to the viewport, as this is the same
+ // convention that gesture points follow.
+ var x = softKeyView.softKey.getElement().getBoundingClientRect().left;
+ var y = softKeyView.softKey.getElement().getBoundingClientRect().top;
+
+ keys.push({
+ 'codepoint': codepoint,
+ 'width': width,
+ 'height': height,
+ 'x': x,
+ 'y': y
+ });
+ }
+ ret['keys'] = keys;
+
+ // Determine the remaining parameters specific to the keyboard. For the width,
+ // the KeysetView width is OK because it is known to span the document. For
+ // the height, the viewport height must be used in order to include the offset
+ // from the top of the viewport.
+ ret['keyboard_width'] = this.getElement().clientWidth;
+ ret['keyboard_height'] = window.innerHeight;
+ return ret;
+};
+
+
+/**
* Updates the view.
*/
KeysetView.prototype.update = function() {
@@ -349,7 +418,8 @@ KeysetView.prototype.resize = function(outerWidth, outerHeight, widthPercent,
this.widthPercent_ = widthPercent;
var elem = this.getElement();
var margin = Math.round((outerWidth - outerWidth * widthPercent) / 2);
- var w = outerWidth - 2 * margin;
+ // Keyset view has 1px border.
+ var w = outerWidth - 2 * margin - 2;
elem.style.marginLeft = elem.style.marginRight = margin + 'px';
goog.style.setSize(elem, w, outerHeight);
@@ -462,6 +532,18 @@ KeysetView.prototype.updateCondition = function(name, value) {
/**
+ * Returns whether c is a character between a-z or A-Z.
+ *
+ * @param {string} c The character to test.
+ * @return {boolean} .
+ * @private
+ */
+KeysetView.prototype.isCharacter_ = function(c) {
+ return c.length === 1 && c.match(/^[a-z]$/i) != null;
+};
+
+
+/**
* Creates the element according to its type.
*
* @param {!Object} spec The specification.
@@ -604,14 +686,9 @@ KeysetView.prototype.createKey_ = function(spec, hasAltGrCharacterInTheKeyset) {
this.dataModel_.stateManager, supportSticky);
break;
case ElementType.SPACE_KEY:
- if (this.adapter && this.adapter.isQPInputView) {
- this.spaceKey = new content.material.SpaceKey(id,
- this.dataModel_.stateManager, this.title_, characters,
- undefined, iconCssClass);
- } else {
- this.spaceKey = new content.SpaceKey(id, this.dataModel_.stateManager,
- this.title_, characters, undefined, iconCssClass);
- }
+ this.spaceKey = new content.SpaceKey(id,
+ this.dataModel_.stateManager, this.title_, characters,
+ undefined, iconCssClass, toKeyset);
elem = this.spaceKey;
break;
case ElementType.EN_SWITCHER:
@@ -643,7 +720,7 @@ KeysetView.prototype.createKey_ = function(spec, hasAltGrCharacterInTheKeyset) {
case ElementType.EMOJI_KEY:
var text = spec[SpecNodeName.TEXT];
var isEmoticon = spec[SpecNodeName.IS_EMOTICON];
- elem = new content.EmojiKey(id, type, text, iconCssClass, isEmoticon);
+ elem = new content.EmojiKey(id, type, text, isEmoticon);
break;
case ElementType.PAGE_INDICATOR:
elem = new content.PageIndicator(id, type);
@@ -690,18 +767,13 @@ KeysetView.prototype.createKey_ = function(spec, hasAltGrCharacterInTheKeyset) {
}
var isLetterKey = i18n.input.chrome.inputview.util.isLetterKey(
characters);
- var enableShiftRendering = false;
- var isQpInputView = !!this.adapter && this.adapter.isQPInputView;
- if (isQpInputView) {
- enableShiftRendering = !!spec[SpecNodeName.ENABLE_SHIFT_RENDERING];
- }
+ var enableShiftRendering = !!spec[SpecNodeName.ENABLE_SHIFT_RENDERING];
elem = new content.CharacterKey(id, keyCode || 0,
characters, isLetterKey, hasAltGrCharacterInTheKeyset[isLetterKey],
this.dataModel_.settings.alwaysRenderAltGrCharacter,
this.dataModel_.stateManager,
goog.i18n.bidi.isRtlLanguage(this.languageCode),
- enableShiftRendering,
- isQpInputView);
+ enableShiftRendering);
break;
case ElementType.BACK_BUTTON:
@@ -777,17 +849,6 @@ KeysetView.prototype.isHandwriting = function() {
/**
- * True if the keyset is tab style.
- *
- * @return {boolean} .
- */
-KeysetView.prototype.isTabStyle = function() {
- return !i18n.input.chrome.inputview.GlobalFlags.isQPInputView && (
- this.keyboardCode_ == 'hwt' || this.keyboardCode_ == 'emoji');
-};
-
-
-/**
* Get the subview of the keysetview according to the id.
*
* @param {string} id The id.

Powered by Google App Engine
This is Rietveld 408576698