// 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); } };