diff options
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.js | 63 |
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); + } +}; |