Remove the old signature of NotificationManager::closePersistent().
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / testing / mock_tts.js
blob3f32d0ca400195ba699af41f9c70f0463edc5d2d
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.
5 /**
6  * Mock tts class.
7  * @constructor
8  * @extends {cvox.TtsInterface}
9  */
10 var MockTts = function() {
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_: [],
23   /**
24    * A list of strings stored whenever there are no expectations.
25    * @type {!Array<string}
26    * @private
27    */
28   idleUtterances_: [],
30   /** @override */
31   speak: function(textString, queueMode, properties) {
32     this.process_(textString, false, properties);
33   },
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   },
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   },
64   /**
65    * Finishes expectations and calls {@code callback} afterwards.
66    * @param {Function} callback
67    */
68   finishExpectations: function(callback) {
69     this.expectSpeechAfter('', callback);
70   },
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 : {};
82     expectation.predicate = function(actualText) {
83       if (opt_exact)
84         return actualText === expectedText;
85       return actualText.indexOf(expectedText) != -1;
86     };
88     this.expectations_.push(expectation);
90     // Process any idleUtterances.
91     this.idleUtterances_.forEach(function(utterance) {
92       this.process_(utterance.text, true, utterance.properties);
93     }.bind(this));
94   },
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     }
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   },