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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator.js

Issue 2954413003: Support rich line output in both speech and braille (Closed)
Patch Set: Fix browser test Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Translates text to braille, optionally with some parts 6 * @fileoverview Translates text to braille, optionally with some parts
7 * uncontracted. 7 * uncontracted.
8 */ 8 */
9 9
10 goog.provide('cvox.ExpandingBrailleTranslator'); 10 goog.provide('cvox.ExpandingBrailleTranslator');
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 cvox.ExpandingBrailleTranslator.prototype.translate = function( 89 cvox.ExpandingBrailleTranslator.prototype.translate = function(
90 text, expansionType, callback) { 90 text, expansionType, callback) {
91 var expandRanges = this.findExpandRanges_(text, expansionType); 91 var expandRanges = this.findExpandRanges_(text, expansionType);
92 var extraCellsSpans = 92 var extraCellsSpans =
93 text.getSpansInstanceOf(cvox.ExtraCellsSpan).filter(function(span) { 93 text.getSpansInstanceOf(cvox.ExtraCellsSpan).filter(function(span) {
94 return span.cells.byteLength > 0; 94 return span.cells.byteLength > 0;
95 }); 95 });
96 var extraCellsPositions = extraCellsSpans.map(function(span) { 96 var extraCellsPositions = extraCellsSpans.map(function(span) {
97 return text.getSpanStart(span); 97 return text.getSpanStart(span);
98 }); 98 });
99 var formTypeMap = new Array(text.length).fill(0);
100 text.getSpansInstanceOf(cvox.BrailleTextStyleSpan).forEach(function(span) {
101 var start = text.getSpanStart(span);
102 var end = text.getSpanEnd(span);
103 for (var i = start; i < end; i++)
104 formTypeMap[i] |= span.formType;
105 });
106
99 if (expandRanges.length == 0 && extraCellsSpans.length == 0) { 107 if (expandRanges.length == 0 && extraCellsSpans.length == 0) {
100 this.defaultTranslator_.translate( 108 this.defaultTranslator_.translate(
101 text.toString(), 109 text.toString(), formTypeMap,
102 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( 110 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_(
103 text.length, callback)); 111 text.length, callback));
104 return; 112 return;
105 } 113 }
106 114
107 var chunks = []; 115 var chunks = [];
108 function maybeAddChunkToTranslate(translator, start, end) { 116 function maybeAddChunkToTranslate(translator, start, end) {
109 if (start < end) 117 if (start < end)
110 chunks.push({translator: translator, start: start, end: end}); 118 chunks.push({translator: translator, start: start, end: end});
111 } 119 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 appendAdjusted(brailleToText, chunk.brailleToText, chunk.start); 181 appendAdjusted(brailleToText, chunk.brailleToText, chunk.start);
174 cellPos += chunk.cells.byteLength; 182 cellPos += chunk.cells.byteLength;
175 } 183 }
176 callback(cells.buffer, textToBraille, brailleToText); 184 callback(cells.buffer, textToBraille, brailleToText);
177 } 185 }
178 186
179 if (chunksToTranslate.length > 0) { 187 if (chunksToTranslate.length > 0) {
180 chunksToTranslate.forEach(function(chunk) { 188 chunksToTranslate.forEach(function(chunk) {
181 chunk.translator.translate( 189 chunk.translator.translate(
182 text.toString().substring(chunk.start, chunk.end), 190 text.toString().substring(chunk.start, chunk.end),
191 formTypeMap.slice(chunk.start, chunk.end),
183 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_( 192 cvox.ExpandingBrailleTranslator.nullParamsToEmptyAdapter_(
184 chunk.end - chunk.start, goog.partial(chunkTranslated, chunk))); 193 chunk.end - chunk.start, goog.partial(chunkTranslated, chunk)));
185 }); 194 });
186 } else { 195 } else {
187 finish(); 196 finish();
188 } 197 }
189 }; 198 };
190 199
191 200
192 /** 201 /**
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 }; 343 };
335 }; 344 };
336 345
337 346
338 /** 347 /**
339 * A character range with inclusive start and exclusive end positions. 348 * A character range with inclusive start and exclusive end positions.
340 * @typedef {{start: number, end: number}} 349 * @typedef {{start: number, end: number}}
341 * @private 350 * @private
342 */ 351 */
343 cvox.ExpandingBrailleTranslator.Range_; 352 cvox.ExpandingBrailleTranslator.Range_;
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/chromeos/chromevox/braille/expanding_braille_translator_test.unitjs » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698