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

Unified Diff: chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js

Issue 1039703002: Make contracted braille input work in more contexts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@docs2
Patch Set: Created 5 years, 9 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: chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js
diff --git a/chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js b/chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js
index b4c3868245d9c0e1c0270ba2ab15139f410e8ffa..b39763540a06ce52be8f105e2f249742269174c2 100644
--- a/chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js
+++ b/chrome/browser/resources/chromeos/chromevox/braille/braille_input_handler.js
@@ -75,7 +75,7 @@ cvox.BrailleInputHandler = function(translatorManager) {
this.entryState_ = null;
this.translatorManager_.addChangeListener(
- this.clearEntryState_.bind(this));
+ this.commitAndClearEntryState_.bind(this));
};
/**
@@ -151,7 +151,7 @@ cvox.BrailleInputHandler.prototype = {
this.onBackspace_()) {
return true;
} else {
- this.clearEntryState_();
+ this.commitAndClearEntryState_();
this.sendKeyEventPair_(event);
return true;
}
@@ -209,7 +209,7 @@ cvox.BrailleInputHandler.prototype = {
// by flushing the input when we see a blank cell.
// Note that this might switch to contracted if appropriate.
if (this.entryState_ && this.entryState_.lastCellIsBlank()) {
- this.clearEntryState_();
+ this.commitAndClearEntryState_();
}
if (!this.entryState_) {
this.entryState_ = this.createEntryState_();
@@ -250,6 +250,7 @@ cvox.BrailleInputHandler.prototype = {
}
var uncontractedTranslator =
this.translatorManager_.getUncontractedTranslator();
+ var useComposition = false;
if (uncontractedTranslator) {
var textBefore = this.currentTextBefore_;
var textAfter = this.currentTextAfter_;
@@ -257,10 +258,30 @@ cvox.BrailleInputHandler.prototype = {
(textBefore.length > 0 && /\S$/.test(textBefore)) ||
(textAfter.length > 0 && /^\S/.test(textAfter))) {
translator = uncontractedTranslator;
+ } else {
+ useComposition = true;
}
}
- return new cvox.BrailleInputHandler.EditsEntryState_(this, translator);
+ useComposition = false;
David Tseng 2015/03/30 17:13:44 This looks wrong.
+ if (useComposition) {
+ return new cvox.BrailleInputHandler.CompositionEntryState_(
+ this, translator);
+ } else {
+ return new cvox.BrailleInputHandler.EditsEntryState_(
+ this, translator);
+ }
+ },
+
+ /**
+ * Commits the current entry state and clears it, if any.
+ * @private
+ */
+ commitAndClearEntryState_: function() {
+ if (this.entryState_) {
+ this.entryState_.commit();
+ this.clearEntryState_();
+ }
},
/**
@@ -495,6 +516,13 @@ cvox.BrailleInputHandler.EntryState_.prototype = {
this.inputHandler_.clearEntryState_();
},
+ /**
+ * Makes sure the current text is permanently added to the edit field.
+ * After this call, this object should be abandoned.
+ */
+ commit: function() {
+ },
+
/** @return {boolean} */
lastCellIsBlank: function() {
return this.cells_[this.cells_.length - 1] === 0;
@@ -582,3 +610,39 @@ cvox.BrailleInputHandler.EditsEntryState_.prototype = {
}
}
};
+
+/**
+ * Entry state that uses the IME composition API to update the edit field.
+ * @param {!cvox.BrailleInputHandler} inputHandler
+ * @param {!cvox.LibLouis.Translator} translator
+ * @constructor
+ * @private
+ * @extends {cvox.BrailleInputHandler.EntryState_}
+ */
+cvox.BrailleInputHandler.CompositionEntryState_ = function(
+ inputHandler, translator) {
+ cvox.BrailleInputHandler.EntryState_.call(this, inputHandler, translator);
+};
+
+cvox.BrailleInputHandler.CompositionEntryState_.prototype = {
+ __proto__: cvox.BrailleInputHandler.EntryState_,
+
+ /** @override */
+ commit: function() {
+ this.inputHandler_.postImeMessage_(
+ {type: 'commitComposition',
+ contextID: this.inputHandler_.inputContext_.contextID});
+ },
+
+ /** @override */
+ sendTextChange_: function(newText) {
+ var currentTextBefore = this.inputHandler_.currentTextBefore_;
+ var oldText = this.text_;
+ this.pendingTextsBefore_.push(currentTextBefore.substring(
+ 0, currentTextBefore.length - oldText.length) + newText);
+ this.inputHandler_.postImeMessage_(
+ {type: 'setComposition',
+ contextID: this.inputHandler_.inputContext_.contextID,
+ text: newText});
+ }
+};

Powered by Google App Engine
This is Rietveld 408576698