summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js')
-rw-r--r--chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js b/chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js
new file mode 100644
index 00000000000..36d3e04cba8
--- /dev/null
+++ b/chromium/chrome/browser/resources/chromeos/chromevox/common/braille_text_handler.js
@@ -0,0 +1,63 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+goog.provide('cvox.BrailleTextHandler');
+
+goog.require('cvox.BrailleInterface');
+goog.require('cvox.BrailleUtil');
+goog.require('cvox.ChromeVox');
+goog.require('cvox.NavBraille');
+
+/**
+ * @fileoverview Updates braille display contents following text changes.
+ *
+ */
+
+/**
+ * Represents an editable text region.
+ *
+ * @constructor
+ * @param {!cvox.BrailleInterface} braille Braille interface.
+ */
+cvox.BrailleTextHandler = function(braille) {
+ /**
+ * Braille interface used to produce output.
+ * @type {!cvox.BrailleInterface}
+ * @private
+ */
+ this.braille_ = braille;
+};
+
+
+/**
+ * Called by controller class when text changes.
+ * @param {string} line The text of the line.
+ * @param {number} start The 0-based index starting selection.
+ * @param {number} end The 0-based index ending selection.
+ * @param {boolean} multiline True if the text comes from a multi line text
+ * field.
+ * @param {Element} element DOM node which line comes from.
+ * @param {number} lineStart Start offset of line (might be > 0 for multiline
+ * fields).
+ */
+cvox.BrailleTextHandler.prototype.changed = function(
+ line, start, end, multiline, element, lineStart) {
+ var content;
+ if (multiline) {
+ var spannable = cvox.BrailleUtil.createValue(line, start, end, lineStart);
+ if (element) {
+ spannable.setSpan(element, 0, line.length);
+ }
+ content = new cvox.NavBraille({text: spannable,
+ startIndex: start,
+ endIndex: end});
+ } else {
+ if (cvox.ChromeVox.navigationManager) {
+ content = cvox.ChromeVox.navigationManager.getBraille();
+ }
+ }
+ if (content) {
+ this.braille_.write(content);
+ }
+};