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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/testing/mock_tts.js

Issue 1302763002: Add tests for braille commands. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@js2gtesterr
Patch Set: Document gn template args, rename extra_gen_files to gen_include_files Created 5 years, 3 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
OLDNEW
(Empty)
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 * Mock tts class.
7 * @constructor
8 * @extends {cvox.TtsInterface}
9 */
10 var MockTts = function() {
11 };
12
13 MockTts.prototype = {
14 /**
15 * A list of predicate, start, and end callbacks for a pending expectation.
16 * @type {!Array<{{predicate: function(string) : boolean,
17 * startCallback: function() : void,
18 * endCallback: function() : void}>}
19 * @private
20 */
21 expectations_: [],
22
23 /**
24 * A list of strings stored whenever there are no expectations.
25 * @type {!Array<string}
26 * @private
27 */
28 idleUtterances_: [],
29
30 /** @override */
31 speak: function(textString, queueMode, properties) {
32 this.process_(textString, false, properties);
33 },
34
35 /**
36 * Adds an expectation for the given string to be spoken. If satisfied,
37 * |opt_callback| is called.
38 * @param {string} expectedText
39 * @param {function() : void=} opt_callback
40 * @param {boolean=} opt_exact Expect an exact match; defaults to false.
41 */
42 expectSpeech: function(expectedText, opt_callback, opt_exact) {
43 var expectation = {};
44 expectation.endCallback = opt_callback;
45 this.addExpectation_(expectedText, expectation, opt_exact);
46 },
47
48 /**
49 * Adds an expectation for the given string to be spoken after |opt_callback|
50 * executes.
51 * @param {string} expectedText
52 * @param {function() : void=} opt_callback
53 * @param {boolean=} opt_exact Expect an exact match; defaults to false.
54 */
55 expectSpeechAfter: function(expectedText, opt_callback, opt_exact) {
56 var expectation = {};
57 if (this.expectations_.length == 0 && opt_callback)
58 opt_callback();
59 else
60 expectation.startCallback = opt_callback;
61 this.addExpectation_(expectedText, expectation, opt_exact);
62 },
63
64 /**
65 * Finishes expectations and calls {@code callback} afterwards.
66 * @param {Function} callback
67 */
68 finishExpectations: function(callback) {
69 this.expectSpeechAfter('', callback);
70 },
71
72 /**
73 * @private
74 * @param {string} expectedText Text expected spoken.
75 * @param {{startCallback: function() : void,
76 * endCallback: function() : void}=} opt_expectation
77 * @param {boolean=} opt_exact Expects an exact match.
78 */
79 addExpectation_: function(expectedText, opt_expectation, opt_exact) {
80 var expectation = opt_expectation ? opt_expectation : {};
81
82 expectation.predicate = function(actualText) {
83 if (opt_exact)
84 return actualText === expectedText;
85 return actualText.indexOf(expectedText) != -1;
86 };
87
88 this.expectations_.push(expectation);
89
90 // Process any idleUtterances.
91 this.idleUtterances_.forEach(function(utterance) {
92 this.process_(utterance.text, true, utterance.properties);
93 }.bind(this));
94 },
95
96 /**
97 * @param {string} textString Utterance to match against callbacks.
98 * @param {boolean=} opt_manual True if called outside of tts.speak.
99 * @param {!Object=} opt_properties
100 * @private
101 */
102 process_: function(textString, opt_manual, opt_properties) {
103 var utterance = {text: textString, properties: opt_properties};
104 if (this.expectations_.length == 0) {
105 if (!opt_manual) {
106 this.idleUtterances_.push(utterance);
107 }
108 return;
109 }
110
111 var allUtterances = this.idleUtterances_.concat([utterance]);
112 var targetExpectation = this.expectations_.shift();
113 allUtterances = allUtterances.filter(function(u) {
114 return targetExpectation.predicate(u.text);
115 });
116 if (allUtterances.length > 0) {
117 var matchingProperties = allUtterances[0].properties;
118 this.idleUtterances_.length = 0;
119 if (targetExpectation.endCallback)
120 targetExpectation.endCallback();
121 if (matchingProperties && matchingProperties.endCallback) {
122 matchingProperties.endCallback();
123 }
124 var nextExpectation = this.expectations_[0];
125 if (nextExpectation && nextExpectation.startCallback)
126 nextExpectation.startCallback();
127 } else {
128 this.expectations_.unshift(targetExpectation);
129 }
130 },
131 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698