Index: chrome/browser/resources/chromeos/chromevox/host/testing/tts.js |
diff --git a/chrome/browser/resources/chromeos/chromevox/host/testing/tts.js b/chrome/browser/resources/chromeos/chromevox/host/testing/tts.js |
index bff32f281e56a50eb3068a11c2ff2452ff5fbb5e..956cdc49d4efb08c2ceba8fbc9b608bcf8cd2acc 100644 |
--- a/chrome/browser/resources/chromeos/chromevox/host/testing/tts.js |
+++ b/chrome/browser/resources/chromeos/chromevox/host/testing/tts.js |
@@ -37,7 +37,9 @@ cvox.TestTts.prototype.sentinelText_ = '@@@STOP@@@'; |
* @override |
*/ |
cvox.TestTts.prototype.speak = function(text, queueMode, opt_properties) { |
- this.utterances_.push({text: text, queueMode: queueMode}); |
+ this.utterances_.push({text: text, |
+ queueMode: queueMode, |
+ properties: opt_properties}); |
if (opt_properties && opt_properties['endCallback'] != undefined) { |
var len = this.utterances_.length; |
// 'After' is a sentinel value in the tests that tells TTS to stop and |
@@ -82,6 +84,39 @@ cvox.TestTts.prototype.getUtterancesAsString = function() { |
}; |
/** |
+ * Processes the utterances spoken the same way the speech queue does, |
+ * as if they were all generated one after another, with no delay between |
+ * them, and returns a list of strings that would be output. |
+ * |
+ * For example, if two strings were spoken with a queue mode of FLUSH, |
+ * only the second string will be returned. |
+ * @return {Array.<string>} A list of strings representing the speech output. |
+ */ |
+cvox.TestTts.prototype.getSpeechQueueOutput = function() { |
+ var queue = []; |
+ for (var i = 0; i < this.utterances_.length; i++) { |
+ var utterance = this.utterances_[i]; |
+ switch (utterance.queueMode) { |
+ case cvox.AbstractTts.QUEUE_MODE_FLUSH: |
+ queue = []; |
+ break; |
+ case cvox.AbstractTts.QUEUE_MODE_QUEUE: |
+ break; |
+ case cvox.AbstractTts.QUEUE_MODE_CATEGORY_FLUSH: |
+ queue = queue.filter(function(u) { |
+ return (utterance.properties && utterance.properties.category) && |
+ (!u.properties || |
+ u.properties.category != utterance.properties.category); |
+ }); |
+ break; |
+ } |
+ queue.push(utterance); |
+ } |
+ |
+ return queue.map(function(u) { return u.text; }); |
+}; |
+ |
+/** |
* Return a list of strings of what was spoken by tts.speak(). |
* @return {Array.<string>} A list of all utterances spoken since |
* initialization or the last call to clearUtterances. |