blob: dc2c33540c0fd7ad1886ee1c888bddf40b245fc7 [file] [log] [blame]
// 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);
}
};