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 3 // found in the LICENSE file. 4 5 /** 6 * @fileoverview Dummy implementation of TTS for testing. 7 * 8 */ 9 10 goog.provide('cvox.TestTts'); 11 12 goog.require('cvox.AbstractTts'); 13 goog.require('cvox.DomUtil'); 14 goog.require('cvox.HostFactory'); 15 16 17 18 /** 19 * @constructor 20 * @extends {cvox.AbstractTts} 21 */ 22 cvox.TestTts = function() { 23 cvox.AbstractTts.call(this); 24 this.utterances_ = []; 25 }; 26 goog.inherits(cvox.TestTts, cvox.AbstractTts); 27 28 29 /** 30 * @type {string} 31 * @private 32 */ 33 cvox.TestTts.prototype.sentinelText_ = '@@@STOP@@@'; 34 35 36 /** 37 * @override 38 */ 39 cvox.TestTts.prototype.speak = function(text, queueMode, opt_properties) { 40 this.utterances_.push({text: text, queueMode: queueMode}); 41 if (opt_properties && opt_properties['endCallback'] != undefined) { 42 var len = this.utterances_.length; 43 // 'After' is a sentinel value in the tests that tells TTS to stop and 44 // ends callbacks being called. 45 if (this.utterances_[len - 1].text != 46 this.sentinelText_) { 47 opt_properties['endCallback'](); 48 } 49 } 50 }; 51 52 53 /** 54 * Creates a sentinel element that indicates when TTS should stop and callbacks 55 * should stop being called. 56 * @return {Element} The sentinel element. 57 */ 58 cvox.TestTts.prototype.createSentinel = function() { 59 var sentinel = document.createElement('div'); 60 sentinel.textContent = this.sentinelText_; 61 return sentinel; 62 }; 63 64 65 /** 66 * All calls to tts.speak are saved in an array of utterances. 67 * Clear any utterances that were saved up to this point. 68 */ 69 cvox.TestTts.prototype.clearUtterances = function() { 70 this.utterances_.length = 0; 71 }; 72 73 /** 74 * Return a string of what was spoken by tts.speak(). 75 * @return {string} A single string containing all utterances spoken 76 * since initialization or the last call to clearUtterances, 77 * concatenated together with all whitespace collapsed to single 78 * spaces. 79 */ 80 cvox.TestTts.prototype.getUtterancesAsString = function() { 81 return cvox.DomUtil.collapseWhitespace(this.getUtteranceList().join(' ')); 82 }; 83 84 /** 85 * Return a list of strings of what was spoken by tts.speak(). 86 * @return {Array.<string>} A list of all utterances spoken since 87 * initialization or the last call to clearUtterances. 88 */ 89 cvox.TestTts.prototype.getUtteranceList = function() { 90 var result = []; 91 for (var i = 0; i < this.utterances_.length; i++) { 92 result.push(this.utterances_[i].text); 93 } 94 return result; 95 }; 96 97 /** 98 * Return a list of strings of what was spoken by tts.speak(). 99 * @return {Array.<{text: string, queueMode: number}>} 100 * A list of info about all utterances spoken since 101 * initialization or the last call to clearUtterances. 102 */ 103 cvox.TestTts.prototype.getUtteranceInfoList = function() { 104 return this.utterances_; 105 }; 106 107 /** @override */ 108 cvox.HostFactory.ttsConstructor = cvox.TestTts; 109